diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 11babe360..32cde1989 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,6 +15,11 @@ on: type: string required: true description: The branch to deploy + environment: + type: string + required: true + description: The environment to deploy + secrets: CLEVER_SECRET: required: true @@ -29,6 +34,9 @@ on: jobs: deploy: if: ${{ github.ref_name == inputs.branch }} + environment: + name: ${{ inputs.environment }} + url: ${{ vars.HOST }} runs-on: ubuntu-latest steps: - name: Checkout diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 000000000..eadab4ac3 --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,33 @@ +name: End-to-end tests + +on: + push: + branches: + - main + +jobs: + e2e: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [20.x] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Enable Corepack + run: corepack enable + + - name: Cypress run + uses: cypress-io/github-action@v6 + env: + CYPRESS_API: ${{ secrets.API_HOST }} + CYPRESS_BASE_URL: ${{ secrets.HOST }} + CYPRESS_EMAIL: ${{ secrets.CYPRESS_EMAIL }} + CYPRESS_PASSWORD: ${{ secrets.CYPRESS_PASSWORD }} + with: + working-directory: e2e + build: false + start: yarn cypress run diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index bb2f6aad3..df56533ab 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -77,6 +77,7 @@ jobs: app: Front staging alias: front-staging branch: main + environment: Staging secrets: inherit deploy-api-staging: @@ -104,6 +105,7 @@ jobs: app: Front production alias: front-production branch: prod + environment: Production secrets: inherit deploy-api-production: diff --git a/.talismanrc b/.talismanrc index 5fae6e143..2f3cb1a6b 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,7 +1,17 @@ fileignoreconfig: +- filename: .github/workflows/e2e.yml + checksum: 1994a562d1d57521c10078640cd49fdccf7b3baecbaf46f3ed383ada996b5c90 - filename: .github/workflows/github-actions.yml checksum: b1a53b557b6b2ac4c57f6afce9e902582f5589f97762a963da587496a455c0c1 - filename: database/* +- filename: e2e/.env.example + checksum: 7afa05e3b64d40c9351b2a60f4ae70887b9c44d66b152c67f7d53b3d4956c93c +- filename: e2e/README.md + checksum: 5f1410c6dd14683c4cb1185cfa8ef4a6018f587abc11b95ea23febcd203d3dee +- filename: e2e/cypress/e2e/log-in.cy.ts + checksum: 5bae716e922600e1360d1b732cd4f0983b2deb3d012ca3bfbf450a4dac02f583 +- filename: e2e/cypress/support/commands.ts + checksum: 3bb7cab7d26c40e046724505a5f6dce90a9528f4f626067282ec1c6e3aa9b263 - filename: frontend/.env.example checksum: 9d59fa5d5a2dd989c2aa9a06cf3ccab007df6a002cb963d63406a12ffbcfca8b - filename: frontend/src/components/Draft/DraftBody.tsx @@ -72,6 +82,8 @@ fileignoreconfig: checksum: 17c890af8ba6ba90687468438e4615958c5604157ed86904c8c49d6bdaf98ee9 - filename: queue/src/workers/generate-mails.ts checksum: 43ae28ea84ab99eab1324356419de4ade2c83b0a70ae999f3d79fea8303a6a3c +- filename: server/.env.example + checksum: 6fc854a30e8083849e3dadea2bed87d1c67a5bf70e702e2e0fa0b93ecf3c98cf - filename: server/controllers/draftController.ts checksum: 3627d5cc7172a79998517e1982424462c61116e248e5b6bd29aced81470113e6 - filename: server/repositories/campaignRepository.ts @@ -92,6 +104,8 @@ fileignoreconfig: checksum: 58d7a51800df5447205a0b9c137478c5bb9d456a76cbc96f0407b9eacc676999 - filename: server/src/infra/database/seeds/development/20240404235457_users.ts checksum: f3fabfbe62c13a614236fd7c9474c78de726c44515e8f116f3532765907c218c +- filename: server/src/infra/database/seeds/development/20240627141242_e2e.ts + checksum: 56a46923a8cffefb7e70949b80718dc56ae2f3dd28f5057cb102461fe2fa10eb - filename: server/src/routers/unprotected.ts checksum: 520455e33ad9672c522364241789eefb4a8d62d86ce90dec626b8a7146ea343e - filename: server/src/test/testUtils.ts diff --git a/e2e/.env.example b/e2e/.env.example new file mode 100644 index 000000000..b45ba6934 --- /dev/null +++ b/e2e/.env.example @@ -0,0 +1,4 @@ +CYPRESS_BASE_URL=https://zerologementvacant-staging.incubateur.net +CYPRESS_API=https://api.zerologementvacant-staging.incubateur.net/api +CYPRESS_EMAIL=E2E_EMAIL +CYPRESS_PASSWORD=E2E_PASSWORD diff --git a/e2e/README.md b/e2e/README.md new file mode 100644 index 000000000..cd4fae597 --- /dev/null +++ b/e2e/README.md @@ -0,0 +1,18 @@ +# e2e tests + +## Running locally + +Copy the .env.example to .env and fill in the required values. +Run `yarn workspace @zerologementvacant/e2e dev` to open the cypress GUI. +Run `yarn workspace @zerologementvacant/e2e test` to run the tests in headless +mode. + +## Running in CI + +`E2E_EMAIL` and `E2E_PASSWORD` must be set on the API where you want to run the +tests. +The API seeds a specific environment for the end-to-end tests with variables +defined on [our cloud provider](https://console.clever-cloud.com/organisations/orga_31f13631-abb3-48d2-a58b-24b736f02a9d/applications/app_be5bb031-0ce0-4ce1-ac71-c5434691dcb6/variables). + +GitHub CI runs the headless tests, thus the variables defined in [.env.example](./.env.example) must be defined in the CI environment. +The _staging_ environment variables and secrets are defined [on GitHub](https://github.com/MTES-MCT/zero-logement-vacant/settings/environments/3313774599/edit). diff --git a/e2e/config.ts b/e2e/config.ts new file mode 100644 index 000000000..0450c8512 --- /dev/null +++ b/e2e/config.ts @@ -0,0 +1,39 @@ +import convict from 'convict'; + +export interface Config { + api: string; + baseURL: string; + email: string; + password: string; +} + +const config = convict({ + api: { + env: 'CYPRESS_API', + doc: 'The API URL', + default: null, + nullable: false + }, + baseURL: { + env: 'CYPRESS_BASE_URL', + doc: 'The base URL of the application', + default: null, + nullable: false + }, + email: { + env: 'CYPRESS_EMAIL', + doc: 'The email to use for authentication', + default: null, + sensitive: true, + nullable: false + }, + password: { + env: 'CYPRESS_PASSWORD', + doc: 'The password to use for authentication', + default: null, + sensitive: true, + nullable: false + } +}); + +export default config.get(); diff --git a/e2e/cypress.config.ts b/e2e/cypress.config.ts new file mode 100644 index 000000000..7642444d7 --- /dev/null +++ b/e2e/cypress.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'cypress'; + +import configuration from './config'; + +export default defineConfig({ + e2e: { + setupNodeEvents(on, config) { + // implement node event listeners here + + return { ...config, env: configuration }; + } + }, + viewportWidth: 1920, + viewportHeight: 1080 +}); diff --git a/e2e/cypress/e2e/campaign.cy.ts b/e2e/cypress/e2e/campaign.cy.ts new file mode 100644 index 000000000..027ba4585 --- /dev/null +++ b/e2e/cypress/e2e/campaign.cy.ts @@ -0,0 +1,132 @@ +describe('Campaign', () => { + it('should create a campaign', () => { + cy.intercept('POST', Cypress.env('API') + '/housing').as('findHousings'); + cy.intercept('POST', Cypress.env('API') + '/housing/count').as( + 'countHousings' + ); + + cy.logIn(); + cy.get('button').contains('Bâtiment/DPE').click(); + cy.get('label').contains('Nombre de logements').next().click(); + cy.wait('@findHousings'); + cy.wait('@countHousings'); + cy.get('tbody') + .find('fieldset') + .then((checkboxes) => checkboxes.slice(0, 3)) + .each((checkbox) => { + cy.wrap(checkbox).click(); + }); + cy.get('button').contains('Créer une campagne').click(); + cy.get('label') + .contains(/^Titre de la campagne/) + .next() + .type('3 logements'); + cy.get('button').contains('Enregistrer').click(); + cy.location('pathname').should('match', /^\/campagnes\/.+/); + + // Fill the form + cy.get('form[name="draft"]').within(() => { + cy.get('input[type="file"]') + .first() + .selectFile('cypress/fixtures/logo.png'); + + cy.get('label') + .contains(/^En date du/) + .next() + .type('2024-01-01'); + cy.get('label') + .contains(/^Écrit à/) + .next() + .type('Marseille BB'); + + cy.get('label') + .contains(/^Nom de la collectivité/) + .next() + .type('Zéro Logement Vacant'); + cy.get('label') + .contains(/^Service/) + .next() + .type('Logement'); + cy.get('label').contains(/^Nom$/).next().type('Logement Vacant'); + cy.get('label') + .contains(/^Prénom/) + .next() + .type('Zéro'); + cy.get('label').contains('Adresse').next().type('1 rue de la République'); + cy.get('label') + .contains(/^Adresse courriel/) + .next() + .type('zerologementvacant@beta.gouv.fr'); + cy.get('label') + .contains(/^Téléphone/) + .next() + .type('0123456789'); + + cy.get('label') + .contains(/^Objet/) + .next() + .type('Votre logement vacant'); + cy.get('div[aria-labelledby="draft-body-label"]') + .type('Madame, Monsieur,{enter}') + .type( + 'Marseille BB fait partie des lauréats du plan national de lutte contre les logements vacants du Ministère de la Transition écologique et de la Cohésion des Territoires. Ce plan a pour objectif d’accélérer, dans les territoires pilotes, la remise sur le marché immobilier (rénovation, location, vente, restructuration) du plus grand nombre possible de logements vacants. Dans ce cadre, l’ADIL 35 a été missionnée par Rennes Métropole pour assurer une mission d’information, de sensibilisation et d’accompagnement des propriétaires de logements vacants qui le souhaitent.{enter}' + ) + .type( + 'Un formulaire vous est proposé dans le cadre d’une enquête destinée à mieux comprendre les raisons de la vacance et s’inscrit dans une politique plus globale afin de construire l’aide qui vous sera la plus adaptée, et permettrait la remise des biens sur un marché en forte demande.{enter}' + ) + .type( + 'Depuis 2011, 960 propriétaires ont été accompagnés dans le cadre de l’opération Rennes Centre Ancien. Ce sont ainsi 300 logements vacants qui ont pu être réoccupés grâce à des aides publiques.{enter}' + ) + .type( + 'Votre logement situé au 123 rue bidon, à Marseille a été recensé comme vacant, c’est-à-dire qu’il aurait été déclaré comme inoccupé depuis « Nombre année vacance du logement » au 1er Janvier 2022. Si tel n’est pas le cas, votre retour permettra d’actualiser l’état réel de son occupation.{enter}' + ) + .type( + 'Un formulaire vous est proposé dans le cadre d’une enquête destinée à mieux comprendre les raisons de la vacance et s’inscrit dans une politique plus globale afin de construire l’aide qui vous sera la plus adaptée, et permettrait la remise des biens sur un marché en forte demande.{enter}' + ) + .type('Alors, pourquoi pas vous ?{enter}'); + + cy.get('label') + .contains(/^Nom du signataire/) + .next() + .type('PALAVACANCE'); + cy.get('label') + .contains(/^Prénom du signataire/) + .next() + .type('Nathan'); + cy.get('label') + .contains(/^Rôle du signataire/) + .next() + .type('Maire de Marseille BB'); + }); + + cy.get('button') + .contains(/^Débuter l’envoi/) + .click(); + + cy.get('dialog[open="true"]') + .find('button') + .contains(/^Confirmer/) + .click(); + + cy.get('*') + .contains('Chargement de vos courriers en cours') + .should('be.visible'); + + cy.get('a') + .contains(/^Télécharger les courriers/, { timeout: 10_000 }) + .should('be.visible'); + + cy.get('label') + .contains(/^Date d’envoi de votre campagne/) + .type(new Date().toJSON().slice(0, 'yyyy-mm-dd'.length)); + + cy.get('button') + .contains(/^Confirmer et passer au suivi/) + .click(); + + cy.get('dialog[open="true"]') + .find('button') + .contains(/^Confirmer/) + .click(); + }); +}); diff --git a/e2e/cypress/e2e/log-in.cy.ts b/e2e/cypress/e2e/log-in.cy.ts new file mode 100644 index 000000000..7464609b7 --- /dev/null +++ b/e2e/cypress/e2e/log-in.cy.ts @@ -0,0 +1,13 @@ +describe('Log in', () => { + it('should log in', () => { + const email = Cypress.env('EMAIL'); + const password = Cypress.env('PASSWORD'); + + cy.visit('/connexion'); + cy.get('input[label^="Adresse email"]').type(email); + cy.get('input[label^="Mot de passe"]').type(password); + cy.get('button[type="submit"]').click(); + + cy.location('pathname').should('eq', '/parc-de-logements'); + }); +}); diff --git a/e2e/cypress/fixtures/example.json b/e2e/cypress/fixtures/example.json new file mode 100644 index 000000000..02e425437 --- /dev/null +++ b/e2e/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/e2e/cypress/fixtures/logo.png b/e2e/cypress/fixtures/logo.png new file mode 100644 index 000000000..4c6c568ab Binary files /dev/null and b/e2e/cypress/fixtures/logo.png differ diff --git a/e2e/cypress/support/commands.ts b/e2e/cypress/support/commands.ts new file mode 100644 index 000000000..9fa9c24ce --- /dev/null +++ b/e2e/cypress/support/commands.ts @@ -0,0 +1,59 @@ +/// +// *********************************************** +// 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 +// } +// } +// } + +// eslint-disable-next-line @typescript-eslint/no-namespace +declare namespace Cypress { + interface Chainable { + logIn(email?: string, password?: string): Chainable; + } +} + +Cypress.Commands.add( + 'logIn', + ( + email: string = Cypress.env('EMAIL'), + password: string = Cypress.env('PASSWORD') + ) => { + cy.visit('/connexion'); + cy.get('input[label^="Adresse email"]').type(email); + cy.get('input[label^="Mot de passe"]').type(password); + cy.get('button[type="submit"]').click(); + + cy.location('pathname').should('eq', '/parc-de-logements'); + } +); diff --git a/e2e/cypress/support/e2e.ts b/e2e/cypress/support/e2e.ts new file mode 100644 index 000000000..e66558eb5 --- /dev/null +++ b/e2e/cypress/support/e2e.ts @@ -0,0 +1,17 @@ +// *********************************************************** +// 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'; diff --git a/e2e/package.json b/e2e/package.json new file mode 100644 index 000000000..fb91c7119 --- /dev/null +++ b/e2e/package.json @@ -0,0 +1,14 @@ +{ + "name": "@zerologementvacant/e2e", + "scripts": { + "dev": "dotenvx run -- cypress open", + "test": "dotenvx run -- cypress run" + }, + "devDependencies": { + "@dotenvx/dotenvx": "^1.0.0", + "@types/convict": "^6.1.6", + "convict": "^6.2.4", + "cypress": "^13.12.0", + "typescript": "^4.9.5" + } +} diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 000000000..1e5901f9a --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["es5", "dom"], + "esModuleInterop": true + }, + "include": ["**/*.ts"] +} diff --git a/package.json b/package.json index 830eb26a0..a6baa7616 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ }, "packageManager": "yarn@4.2.2+sha256.1aa43a5304405be7a7cb9cb5de7b97de9c4e8ddd3273e4dad00d6ae3eb39f0ef", "workspaces": [ + "e2e", "frontend", "queue", "server", diff --git a/server/.env.example b/server/.env.example index 5f0ff729b..5d2638eb0 100644 --- a/server/.env.example +++ b/server/.env.example @@ -1,7 +1,10 @@ +AUTH_SECRET=secret + DATABASE_URL=postgres://postgres:zlv@localhost/zlv DATABASE_URL_TEST=postgres://postgres:zlv@localhost/test_zlv -AUTH_SECRET=secret +E2E_EMAIL= +E2E_PASSWORD= MAILER_HOST=localhost MAILER_PORT=1025 diff --git a/server/README.md b/server/README.md new file mode 100644 index 000000000..c596172e4 --- /dev/null +++ b/server/README.md @@ -0,0 +1,13 @@ +## How to + +### Create a migration + +```shell +yarn workspace @zerologementvacant/server knex seed:make \ + --knexfile=src/infra/database/knexfile.ts \ + --env=development \ + +``` + +Knex will create a seed file in `src/infra/database/seeds` with the name +`_.ts`. diff --git a/server/src/infra/config.ts b/server/src/infra/config.ts index 7d46b900b..3a975ff18 100644 --- a/server/src/infra/config.ts +++ b/server/src/infra/config.ts @@ -6,7 +6,7 @@ import path from 'node:path'; import { LOG_LEVELS, LogLevel } from '@zerologementvacant/shared'; dotenv.config({ - path: path.join(__dirname, '..', '..', '.env'), + path: path.join(__dirname, '..', '..', '.env') }); const isProduction = process.env.NODE_ENV === 'production'; @@ -17,7 +17,7 @@ convict.addFormat({ validate(val: any) { return typeof val === 'string' && val === 'true'; }, - coerce: (val: string): boolean => val === 'true', + coerce: (val: string): boolean => val === 'true' }); convict.addFormat({ name: 'comma-separated string', @@ -26,7 +26,7 @@ convict.addFormat({ }, coerce(val: string): string[] { return val.split(',').map((str) => str.trim()); - }, + } }); type Env = 'development' | 'test' | 'production'; @@ -70,6 +70,10 @@ interface Config { max: number; }; }; + e2e: { + email: string; + password: string; + }; log: { level: LogLevel; }; @@ -115,111 +119,111 @@ const config = convict({ batchSize: { env: 'BATCH_SIZE', format: 'int', - default: 1_000, + default: 1_000 }, env: { env: 'NODE_ENV', format: ['development', 'test', 'production'], - default: 'development', + default: 'development' }, isReviewApp: { env: 'IS_REVIEW_APP', format: 'strict-boolean', - default: false, + default: false }, host: { env: 'HOST', format: String, - default: 'http://localhost:3001', + default: 'http://localhost:3001' }, port: { env: 'PORT', format: 'port', - default: 3001, + default: 3001 }, system: { env: 'SYSTEM_ACCOUNT', format: String, - default: 'admin@zerologementvacant.beta.gouv.fr', - }, + default: 'admin@zerologementvacant.beta.gouv.fr' + } }, auth: { secret: { env: 'AUTH_SECRET', format: String, sensitive: true, - default: isProduction ? null : 'secret', + default: isProduction ? null : 'secret' }, expiresIn: { env: 'AUTH_EXPIRES_IN', format: String, - default: '12 hours', - }, + default: '12 hours' + } }, ban: { api: { endpoint: { env: 'BAN_API_ENDPOINT', format: 'url', - default: 'https://api-adresse.data.gouv.fr', - }, + default: 'https://api-adresse.data.gouv.fr' + } }, update: { pageSize: { env: 'BAN_UPDATE_PAGE_SIZE', format: 'int', - default: 2_000, + default: 2_000 }, delay: { env: 'BAN_UPDATE_DELAY', format: String, - default: '1 months', - }, - }, + default: '1 months' + } + } }, cerema: { api: { env: 'CEREMA_API', format: 'url', - default: 'https://getdf.cerema.fr', + default: 'https://getdf.cerema.fr' }, enabled: { env: 'CEREMA_ENABLED', format: 'strict-boolean', - default: isProduction, + default: isProduction }, token: { env: 'CEREMA_TOKEN', format: String, sensitive: true, default: null, - nullable: !isProduction, - }, + nullable: !isProduction + } }, datafoncier: { api: { env: 'DATAFONCIER_API', format: String, - default: 'https://apidf-preprod.cerema.fr', + default: 'https://apidf-preprod.cerema.fr' }, enabled: { env: 'DATAFONCIER_ENABLED', format: 'strict-boolean', - default: false, + default: false }, token: { env: 'DATAFONCIER_TOKEN', format: String, default: null, nullable: true, - sensitive: true, - }, + sensitive: true + } }, db: { env: { env: 'DATABASE_ENV', format: ['development', 'test', 'production'], - default: (process.env.NODE_ENV as Env | null) ?? 'development', + default: (process.env.NODE_ENV as Env | null) ?? 'development' }, url: { env: 'DATABASE_URL', @@ -227,151 +231,167 @@ const config = convict({ default: isProduction ? null : 'postgresql://postgres:postgres@localhost:5432/zlv', - nullable: false, + nullable: false }, pool: { max: { env: 'DATABASE_POOL_MAX', format: 'int', - default: 10, - }, + default: 10 + } + } + }, + e2e: { + email: { + env: 'E2E_EMAIL', + format: 'email', + sensitive: true, + default: null, + nullable: false }, + password: { + env: 'E2E_PASSWORD', + format: String, + sensitive: true, + default: null, + nullable: false + } }, log: { level: { env: 'LOG_LEVEL', format: LOG_LEVELS, - default: LogLevel.INFO, - }, + default: LogLevel.INFO + } }, mailer: { from: { // TODO: change this to 'MAILER_FROM' env: 'MAIL_FROM', format: String, - default: 'contact@zerologementvacant.beta.gouv.fr', + default: 'contact@zerologementvacant.beta.gouv.fr' }, provider: { env: 'MAILER_PROVIDER', format: ['brevo', 'nodemailer'], - default: 'nodemailer', + default: 'nodemailer' }, host: { env: 'MAILER_HOST', format: String, default: null, - nullable: true, + nullable: true }, port: { env: 'MAILER_PORT', format: 'port', default: null, - nullable: true, + nullable: true }, user: { env: 'MAILER_USER', format: String, default: null, - nullable: true, + nullable: true }, password: { env: 'MAILER_PASSWORD', format: String, sensitive: true, default: null, - nullable: true, + nullable: true }, apiKey: { env: 'MAILER_API_KEY', format: String, sensitive: true, default: null, - nullable: true, + nullable: true }, eventApiKey: { env: 'MAILER_EVENT_API_KEY', format: String, sensitive: true, default: null, - nullable: true, + nullable: true }, secure: { env: 'MAILER_SECURE', format: Boolean, - default: false, - }, + default: false + } }, metabase: { domain: { env: 'METABASE_DOMAIN', format: 'url', nullable: true, - default: null, + default: null }, token: { env: 'METABASE_TOKEN', format: String, default: null, nullable: !isProduction, - sensitive: true, - }, + sensitive: true + } }, rateLimit: { max: { env: 'RATE_LIMIT_MAX', format: 'int', - default: 10_000, - }, + default: 10_000 + } }, redis: { url: { env: 'REDIS_URL', format: String, - default: isProduction ? null : 'redis://localhost:6379', - }, + default: isProduction ? null : 'redis://localhost:6379' + } }, s3: { endpoint: { env: 'S3_ENDPOINT', format: String, - default: isProduction ? null : 'http://localhost:9090', + default: isProduction ? null : 'http://localhost:9090' }, region: { env: 'S3_REGION', format: String, - default: isProduction ? null : 'whatever', + default: isProduction ? null : 'whatever' }, bucket: { env: 'S3_BUCKET', format: String, - default: 'zerologementvacant', + default: 'zerologementvacant' }, accessKeyId: { env: 'S3_ACCESS_KEY_ID', format: String, default: isProduction ? null : 'key', - sensitive: true, + sensitive: true }, secretAccessKey: { env: 'S3_SECRET_ACCESS_KEY', format: String, default: isProduction ? null : 'secret', - sensitive: true, - }, + sensitive: true + } }, sentry: { dsn: { env: 'SENTRY_DSN', format: String, default: null, - nullable: true, + nullable: true }, enabled: { env: 'SENTRY_ENABLED', format: Boolean, - default: isProduction, - }, - }, + default: isProduction + } + } }) .validate({ allowed: 'strict' }) .get(); diff --git a/server/src/infra/database/seeds/development/20240627141242_e2e.ts b/server/src/infra/database/seeds/development/20240627141242_e2e.ts new file mode 100644 index 000000000..4e82a37f3 --- /dev/null +++ b/server/src/infra/database/seeds/development/20240627141242_e2e.ts @@ -0,0 +1,71 @@ +import { faker } from '@faker-js/faker/locale/fr'; +import bcrypt from 'bcryptjs'; +import { Knex } from 'knex'; + +import { + Establishments, + formatEstablishmentApi +} from '~/repositories/establishmentRepository'; +import { + genEstablishmentApi, + genHousingApi, + genOwnerApi, + genUserApi +} from '~/test/testFixtures'; +import { EstablishmentApi } from '~/models/EstablishmentApi'; +import { formatOwnerApi, Owners } from '~/repositories/ownerRepository'; +import { + formatHousingRecordApi, + Housing +} from '~/repositories/housingRepository'; +import { + HousingOwnerDBO, + HousingOwners +} from '~/repositories/housingOwnerRepository'; +import { formatUserApi, Users } from '~/repositories/userRepository'; +import { SALT_LENGTH, UserApi, UserRoles } from '~/models/UserApi'; +import config from '~/infra/config'; + +export async function seed(knex: Knex): Promise { + const GEO_CODE = '13055'; + + await Establishments() + .where({ name: 'Zéro Logement Vacant à Marseille' }) + .delete(); + const establishment: EstablishmentApi = { + ...genEstablishmentApi(GEO_CODE), + name: 'Zéro Logement Vacant à Marseille', + shortName: 'ZLV à Marseille', + kind: 'EPCI' + }; + await Establishments(knex).insert(formatEstablishmentApi(establishment)); + + const email = config.e2e.email; + const password = await bcrypt.hash(config.e2e.password, SALT_LENGTH); + await Users(knex).where({ email }).delete(); + const user: UserApi = { + ...genUserApi(establishment.id), + email, + password, + role: UserRoles.Usual + }; + await Users(knex).insert(formatUserApi(user)); + + const owners = Array.from({ length: 100 }, () => genOwnerApi()); + await Owners(knex).insert(owners.map(formatOwnerApi)); + + const housings = Array.from({ length: 200 }, () => genHousingApi(GEO_CODE)); + await Housing(knex).insert(housings.map(formatHousingRecordApi)); + + const housingOwners: HousingOwnerDBO[] = housings.flatMap((housing) => { + return faker.helpers + .arrayElements(owners, { min: 1, max: 6 }) + .map((owner, index) => ({ + housing_id: housing.id, + housing_geo_code: housing.geoCode, + owner_id: owner.id, + rank: index + 1 + })); + }); + await HousingOwners(knex).insert(housingOwners); +} diff --git a/server/src/test/testFixtures.ts b/server/src/test/testFixtures.ts index 40019f360..60963542b 100644 --- a/server/src/test/testFixtures.ts +++ b/server/src/test/testFixtures.ts @@ -288,7 +288,7 @@ export const genHousingApi = ( buildingYear: faker.date.past().getUTCFullYear(), taxed: false, vacancyReasons: [], - dataYears: [2022], + dataYears: [new Date().getUTCFullYear() - 1], buildingLocation: randomstring.generate(), ownershipKind: OwnershipKindsApi.Single, status: HousingStatusApi.NeverContacted, diff --git a/yarn.lock b/yarn.lock index b39bb8f06..b6256e5a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2436,6 +2436,20 @@ __metadata: languageName: node linkType: hard +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + languageName: node + linkType: hard + +"@colors/colors@npm:1.6.0, @colors/colors@npm:^1.6.0": + version: 1.6.0 + resolution: "@colors/colors@npm:1.6.0" + checksum: 10c0/9328a0778a5b0db243af54455b79a69e3fb21122d6c15ef9e9fcc94881d8d17352d8b2b2590f9bdd46fac5c2d6c1636dcfc14358a20c70e22daf89e1a759b629 + languageName: node + linkType: hard + "@craco/craco@npm:^7.1.0": version: 7.1.0 resolution: "@craco/craco@npm:7.1.0" @@ -3087,6 +3101,85 @@ __metadata: languageName: node linkType: hard +"@cypress/request@npm:^3.0.0": + version: 3.0.1 + resolution: "@cypress/request@npm:3.0.1" + dependencies: + aws-sign2: "npm:~0.7.0" + aws4: "npm:^1.8.0" + caseless: "npm:~0.12.0" + combined-stream: "npm:~1.0.6" + extend: "npm:~3.0.2" + forever-agent: "npm:~0.6.1" + form-data: "npm:~2.3.2" + http-signature: "npm:~1.3.6" + is-typedarray: "npm:~1.0.0" + isstream: "npm:~0.1.2" + json-stringify-safe: "npm:~5.0.1" + mime-types: "npm:~2.1.19" + performance-now: "npm:^2.1.0" + qs: "npm:6.10.4" + safe-buffer: "npm:^5.1.2" + tough-cookie: "npm:^4.1.3" + tunnel-agent: "npm:^0.6.0" + uuid: "npm:^8.3.2" + checksum: 10c0/8eb92a665e6549e2533f5169431addcaad0307f51a8c7f3b6b169eb79b4d673373784a527590a47b0a2905ad5f601b24ab2d1b31d184243235aba470ffc9c1f7 + languageName: node + linkType: hard + +"@cypress/xvfb@npm:^1.2.4": + version: 1.2.4 + resolution: "@cypress/xvfb@npm:1.2.4" + dependencies: + debug: "npm:^3.1.0" + lodash.once: "npm:^4.1.1" + checksum: 10c0/1bf6224b244f6093033d77f04f6bef719280542656de063cf8ac3f38957b62aa633e6918af0b9673a8bf0123b42a850db51d9729a3ae3da885ac179bc7fc1d26 + languageName: node + linkType: hard + +"@dabh/diagnostics@npm:^2.0.2": + version: 2.0.3 + resolution: "@dabh/diagnostics@npm:2.0.3" + dependencies: + colorspace: "npm:1.1.x" + enabled: "npm:2.0.x" + kuler: "npm:^2.0.0" + checksum: 10c0/a5133df8492802465ed01f2f0a5784585241a1030c362d54a602ed1839816d6c93d71dde05cf2ddb4fd0796238c19774406bd62fa2564b637907b495f52425fe + languageName: node + linkType: hard + +"@dotenvx/dotenvx@npm:^1.0.0": + version: 1.0.0 + resolution: "@dotenvx/dotenvx@npm:1.0.0" + dependencies: + "@inquirer/confirm": "npm:^2.0.17" + arch: "npm:^2.1.1" + chalk: "npm:^4.1.2" + commander: "npm:^11.1.0" + conf: "npm:^10.2.0" + diff: "npm:^5.2.0" + dotenv: "npm:^16.4.5" + dotenv-expand: "npm:^11.0.6" + eciesjs: "npm:^0.4.6" + execa: "npm:^5.1.1" + glob: "npm:^10.3.10" + ignore: "npm:^5.3.0" + is-wsl: "npm:^2.1.1" + object-treeify: "npm:1.1.33" + open: "npm:^8.4.2" + ora: "npm:^5.4.1" + semver: "npm:^7.3.4" + undici: "npm:^5.28.3" + which: "npm:^4.0.0" + winston: "npm:^3.11.0" + xxhashjs: "npm:^0.2.2" + bin: + dotenvx: src/cli/dotenvx.js + git-dotenvx: src/cli/dotenvx.js + checksum: 10c0/1fdc4dd8447994161c57e8b80f661da8599ea3729c54e2525e077e3fb109604587a7f654fad3987d0d8d997d6e567fb3a171cabe64881b8e8d78a75e2109c0ac + languageName: node + linkType: hard + "@emotion/babel-plugin@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/babel-plugin@npm:11.11.0" @@ -3311,6 +3404,13 @@ __metadata: languageName: node linkType: hard +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 10c0/6f8027a8cba7f8f7b736718b013f5a38c0476eea67034c94a0d3c375e2b114366ad4419e6a6fa7ffc2ef9c6d3e0435d76dd584a7a1cbac23962fda7650b579e3 + languageName: node + linkType: hard + "@floating-ui/core@npm:^1.0.0": version: 1.6.2 resolution: "@floating-ui/core@npm:1.6.2" @@ -3409,6 +3509,17 @@ __metadata: languageName: node linkType: hard +"@inquirer/confirm@npm:^2.0.17": + version: 2.0.17 + resolution: "@inquirer/confirm@npm:2.0.17" + dependencies: + "@inquirer/core": "npm:^6.0.0" + "@inquirer/type": "npm:^1.1.6" + chalk: "npm:^4.1.2" + checksum: 10c0/c5e3835f38f5d2f7f442a0dddf454b569e3b25bef5da4f17d4dde6e9cf89b6aa6019cc1f8c0dcfe5d48e8f3e4c35b5fba9a9a8fcd4fa40b3845c01465d0e2d64 + languageName: node + linkType: hard + "@inquirer/confirm@npm:^3.0.0": version: 3.1.10 resolution: "@inquirer/confirm@npm:3.1.10" @@ -3419,6 +3530,28 @@ __metadata: languageName: node linkType: hard +"@inquirer/core@npm:^6.0.0": + version: 6.0.0 + resolution: "@inquirer/core@npm:6.0.0" + dependencies: + "@inquirer/type": "npm:^1.1.6" + "@types/mute-stream": "npm:^0.0.4" + "@types/node": "npm:^20.10.7" + "@types/wrap-ansi": "npm:^3.0.0" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + cli-spinners: "npm:^2.9.2" + cli-width: "npm:^4.1.0" + figures: "npm:^3.2.0" + mute-stream: "npm:^1.0.0" + run-async: "npm:^3.0.0" + signal-exit: "npm:^4.1.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/0663330936c9baea58d8a10e93de6c3446ab84ed909c41d7b3f6762842473b8f88e10d776326d89a278abfb3c4083240d0f5876293908eb1005d0026aa2cfb7d + languageName: node + linkType: hard + "@inquirer/core@npm:^8.2.3": version: 8.2.3 resolution: "@inquirer/core@npm:8.2.3" @@ -3447,7 +3580,7 @@ __metadata: languageName: node linkType: hard -"@inquirer/type@npm:^1.3.3": +"@inquirer/type@npm:^1.1.6, @inquirer/type@npm:^1.3.3": version: 1.3.3 resolution: "@inquirer/type@npm:1.3.3" checksum: 10c0/84048694410bb5b2c55dc4e48da6369ce942b9e8f8016d15ef63ab3f9873832a56cc12a50582b5b2b626821bfe29973dfcc19edc90f58490b51df1f4d9d0a074 @@ -4640,6 +4773,29 @@ __metadata: languageName: node linkType: hard +"@noble/ciphers@npm:^0.5.3": + version: 0.5.3 + resolution: "@noble/ciphers@npm:0.5.3" + checksum: 10c0/2303217304baf51ec6caa2d984f4e640a66d3d586162ed8fecf37a00268fbf362e22cd5bceae4b0ccda4fa06ad0cb294d6a6b158260bbd2eac6a3dc0448f5254 + languageName: node + linkType: hard + +"@noble/curves@npm:^1.4.0": + version: 1.4.0 + resolution: "@noble/curves@npm:1.4.0" + dependencies: + "@noble/hashes": "npm:1.4.0" + checksum: 10c0/31fbc370df91bcc5a920ca3f2ce69c8cf26dc94775a36124ed8a5a3faf0453badafd2ee4337061ffea1b43c623a90ee8b286a5a81604aaf9563bdad7ff795d18 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.4.0, @noble/hashes@npm:^1.4.0": + version: 1.4.0 + resolution: "@noble/hashes@npm:1.4.0" + checksum: 10c0/8c3f005ee72e7b8f9cff756dfae1241485187254e3f743873e22073d63906863df5d4f13d441b7530ea614b7a093f0d889309f28b59850f33b66cb26a779a4a5 + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -7946,6 +8102,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^20.10.7": + version: 20.14.9 + resolution: "@types/node@npm:20.14.9" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/911ffa444dc032897f4a23ed580c67903bd38ea1c5ec99b1d00fa10b83537a3adddef8e1f29710cbdd8e556a61407ed008e06537d834e48caf449ce59f87d387 + languageName: node + linkType: hard + "@types/nodemailer@npm:^6.4.15": version: 6.4.15 resolution: "@types/nodemailer@npm:6.4.15" @@ -8164,6 +8329,20 @@ __metadata: languageName: node linkType: hard +"@types/sinonjs__fake-timers@npm:8.1.1": + version: 8.1.1 + resolution: "@types/sinonjs__fake-timers@npm:8.1.1" + checksum: 10c0/e2e6c425a548177c0930c2f9b82d3951956c9701b9ebf59623d5ad2c3229c523d3c0d598e79fe7392a239657abd3dbe3676be0650ce438bcd1199ee3b617a4d7 + languageName: node + linkType: hard + +"@types/sizzle@npm:^2.3.2": + version: 2.3.8 + resolution: "@types/sizzle@npm:2.3.8" + checksum: 10c0/ab5460147ae6680cc20c2223a8f17d9f7c97144b70f00a222a1c32d68b5207696d48177ab9784dda88c74d93ed5a78dd31f74d271b15382520b423c81b4aac89 + languageName: node + linkType: hard + "@types/sockjs@npm:^0.3.33": version: 0.3.36 resolution: "@types/sockjs@npm:0.3.36" @@ -8215,6 +8394,13 @@ __metadata: languageName: node linkType: hard +"@types/triple-beam@npm:^1.3.2": + version: 1.3.5 + resolution: "@types/triple-beam@npm:1.3.5" + checksum: 10c0/d5d7f25da612f6d79266f4f1bb9c1ef8f1684e9f60abab251e1261170631062b656ba26ff22631f2760caeafd372abc41e64867cde27fba54fafb73a35b9056a + languageName: node + linkType: hard + "@types/trusted-types@npm:^2.0.2": version: 2.0.7 resolution: "@types/trusted-types@npm:2.0.7" @@ -8791,6 +8977,18 @@ __metadata: languageName: unknown linkType: soft +"@zerologementvacant/e2e@workspace:e2e": + version: 0.0.0-use.local + resolution: "@zerologementvacant/e2e@workspace:e2e" + dependencies: + "@dotenvx/dotenvx": "npm:^1.0.0" + "@types/convict": "npm:^6.1.6" + convict: "npm:^6.2.4" + cypress: "npm:^13.12.0" + typescript: "npm:^4.9.5" + languageName: unknown + linkType: soft + "@zerologementvacant/front@workspace:frontend": version: 0.0.0-use.local resolution: "@zerologementvacant/front@workspace:frontend" @@ -9318,7 +9516,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.6.0, ajv@npm:^8.9.0": +"ajv@npm:^8.0.0, ajv@npm:^8.6.0, ajv@npm:^8.6.3, ajv@npm:^8.9.0": version: 8.16.0 resolution: "ajv@npm:8.16.0" dependencies: @@ -9330,7 +9528,14 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.1, ansi-escapes@npm:^4.3.2": +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.1, ansi-escapes@npm:^4.3.2": version: 4.3.2 resolution: "ansi-escapes@npm:4.3.2" dependencies: @@ -9443,6 +9648,13 @@ __metadata: languageName: node linkType: hard +"arch@npm:^2.1.1, arch@npm:^2.2.0": + version: 2.2.0 + resolution: "arch@npm:2.2.0" + checksum: 10c0/4ceaf8d8207817c216ebc4469742052cb0a097bc45d9b7fcd60b7507220da545a28562ab5bdd4dfe87921bb56371a0805da4e10d704e01f93a15f83240f1284c + languageName: node + linkType: hard + "archive-type@npm:^4.0.0": version: 4.0.0 resolution: "archive-type@npm:4.0.0" @@ -9787,7 +9999,14 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3, async@npm:^3.2.4, async@npm:^3.2.5": +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async@npm:^3.2.0, async@npm:^3.2.3, async@npm:^3.2.4, async@npm:^3.2.5": version: 3.2.5 resolution: "async@npm:3.2.5" checksum: 10c0/1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 @@ -9815,6 +10034,13 @@ __metadata: languageName: node linkType: hard +"atomically@npm:^1.7.0": + version: 1.7.0 + resolution: "atomically@npm:1.7.0" + checksum: 10c0/31f5efd5d69474681268557af4024f9e10223bb6b39fdedb5f2e19405186c4b76284fac9f6c43c9af75013cad6437e93b7168268f5ddb7aaf1cfc5fdb415f227 + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.12, autoprefixer@npm:^10.4.13, autoprefixer@npm:^10.4.19": version: 10.4.19 resolution: "autoprefixer@npm:10.4.19" @@ -10251,7 +10477,7 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3": +"bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: @@ -10262,6 +10488,13 @@ __metadata: languageName: node linkType: hard +"blob-util@npm:^2.0.2": + version: 2.0.2 + resolution: "blob-util@npm:2.0.2" + checksum: 10c0/ed82d587827e5c86be122301a7c250f8364963e9582f72a826255bfbd32f8d69cc10169413d666667bb1c4fc8061329ae89d176ffe46fee8f32080af944ccddc + languageName: node + linkType: hard + "bluebird@npm:^3.5.0, bluebird@npm:^3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" @@ -10456,7 +10689,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.2.1, buffer@npm:^5.5.0": +"buffer@npm:^5.2.1, buffer@npm:^5.5.0, buffer@npm:^5.7.1": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -10582,6 +10815,13 @@ __metadata: languageName: node linkType: hard +"cachedir@npm:^2.3.0": + version: 2.4.0 + resolution: "cachedir@npm:2.4.0" + checksum: 10c0/76bff9009f2c446cd3777a4aede99af634a89670a67012b8041f65e951d3d36cefe8940341ea80c72219ee9913fa1f6146824cd9dfe9874a4bded728af7e6d76 + languageName: node + linkType: hard + "call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": version: 1.0.7 resolution: "call-bind@npm:1.0.7" @@ -10734,6 +10974,13 @@ __metadata: languageName: node linkType: hard +"check-more-types@npm:^2.24.0": + version: 2.24.0 + resolution: "check-more-types@npm:2.24.0" + checksum: 10c0/93fda2c32eb5f6cd1161a84a2f4107c0e00b40a851748516791dd9a0992b91bdf504e3bf6bf7673ce603ae620042e11ed4084d16d6d92b36818abc9c2e725520 + languageName: node + linkType: hard + "check-types@npm:^11.2.3": version: 11.2.3 resolution: "check-types@npm:11.2.3" @@ -10824,6 +11071,15 @@ __metadata: languageName: node linkType: hard +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + "cli-cursor@npm:^4.0.0": version: 4.0.0 resolution: "cli-cursor@npm:4.0.0" @@ -10842,13 +11098,36 @@ __metadata: languageName: node linkType: hard -"cli-spinners@npm:^2.9.2": +"cli-spinners@npm:^2.5.0, cli-spinners@npm:^2.9.2": version: 2.9.2 resolution: "cli-spinners@npm:2.9.2" checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 languageName: node linkType: hard +"cli-table3@npm:~0.6.1": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" + dependencies: + "@colors/colors": "npm:1.5.0" + string-width: "npm:^4.2.0" + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 10c0/d7cc9ed12212ae68241cc7a3133c52b844113b17856e11f4f81308acc3febcea7cc9fd298e70933e294dd642866b29fd5d113c2c098948701d0c35f09455de78 + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + languageName: node + linkType: hard + "cli-truncate@npm:^3.1.0": version: 3.1.0 resolution: "cli-truncate@npm:3.1.0" @@ -10915,6 +11194,13 @@ __metadata: languageName: node linkType: hard +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + "clsx@npm:^2.1.0": version: 2.1.1 resolution: "clsx@npm:2.1.1" @@ -10954,7 +11240,7 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": +"color-convert@npm:^1.9.0, color-convert@npm:^1.9.3": version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: @@ -10979,13 +11265,33 @@ __metadata: languageName: node linkType: hard -"color-name@npm:~1.1.4": +"color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard +"color-string@npm:^1.6.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: "npm:^1.0.0" + simple-swizzle: "npm:^0.2.2" + checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404 + languageName: node + linkType: hard + +"color@npm:^3.1.3": + version: 3.2.1 + resolution: "color@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.3" + color-string: "npm:^1.6.0" + checksum: 10c0/39345d55825884c32a88b95127d417a2c24681d8b57069413596d9fcbb721459ef9d9ec24ce3e65527b5373ce171b73e38dbcd9c830a52a6487e7f37bf00e83c + languageName: node + linkType: hard + "colord@npm:^2.9.1": version: 2.9.3 resolution: "colord@npm:2.9.3" @@ -11000,13 +11306,23 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.10, colorette@npm:^2.0.20, colorette@npm:^2.0.7": +"colorette@npm:^2.0.10, colorette@npm:^2.0.16, colorette@npm:^2.0.20, colorette@npm:^2.0.7": version: 2.0.20 resolution: "colorette@npm:2.0.20" checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 languageName: node linkType: hard +"colorspace@npm:1.1.x": + version: 1.1.4 + resolution: "colorspace@npm:1.1.4" + dependencies: + color: "npm:^3.1.3" + text-hex: "npm:1.0.x" + checksum: 10c0/af5f91ff7f8e146b96e439ac20ed79b197210193bde721b47380a75b21751d90fa56390c773bb67c0aedd34ff85091883a437ab56861c779bd507d639ba7e123 + languageName: node + linkType: hard + "combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -11037,6 +11353,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^11.1.0": + version: 11.1.0 + resolution: "commander@npm:11.1.0" + checksum: 10c0/13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179 + languageName: node + linkType: hard + "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -11044,6 +11367,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^6.2.1": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + languageName: node + linkType: hard + "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" @@ -11177,6 +11507,24 @@ __metadata: languageName: node linkType: hard +"conf@npm:^10.2.0": + version: 10.2.0 + resolution: "conf@npm:10.2.0" + dependencies: + ajv: "npm:^8.6.3" + ajv-formats: "npm:^2.1.1" + atomically: "npm:^1.7.0" + debounce-fn: "npm:^4.0.0" + dot-prop: "npm:^6.0.1" + env-paths: "npm:^2.2.1" + json-schema-typed: "npm:^7.0.3" + onetime: "npm:^5.1.2" + pkg-up: "npm:^3.1.0" + semver: "npm:^7.3.5" + checksum: 10c0/d608d8c54ba7fad368eac640e77f2ce0334ec27cfd62ac39f44e361af8af9915eaa6c2ada81fbc25c3219273d972b4868bc752e8e2116cb6e12d35df72dc25a4 + languageName: node + linkType: hard + "confusing-browser-globals@npm:^1.0.11": version: 1.0.11 resolution: "confusing-browser-globals@npm:1.0.11" @@ -11817,6 +12165,65 @@ __metadata: languageName: node linkType: hard +"cuint@npm:^0.2.2": + version: 0.2.2 + resolution: "cuint@npm:0.2.2" + checksum: 10c0/ba56735799e04cd8fd8e386bfde52298e26179665f0063a7a22aaf5771e1b350f1b3baa83c719097cb650766b0e5067d16121db71f88fad4b2ef1ed423d646b7 + languageName: node + linkType: hard + +"cypress@npm:^13.12.0": + version: 13.12.0 + resolution: "cypress@npm:13.12.0" + dependencies: + "@cypress/request": "npm:^3.0.0" + "@cypress/xvfb": "npm:^1.2.4" + "@types/sinonjs__fake-timers": "npm:8.1.1" + "@types/sizzle": "npm:^2.3.2" + arch: "npm:^2.2.0" + blob-util: "npm:^2.0.2" + bluebird: "npm:^3.7.2" + buffer: "npm:^5.7.1" + cachedir: "npm:^2.3.0" + chalk: "npm:^4.1.0" + check-more-types: "npm:^2.24.0" + cli-cursor: "npm:^3.1.0" + cli-table3: "npm:~0.6.1" + commander: "npm:^6.2.1" + common-tags: "npm:^1.8.0" + dayjs: "npm:^1.10.4" + debug: "npm:^4.3.4" + enquirer: "npm:^2.3.6" + eventemitter2: "npm:6.4.7" + execa: "npm:4.1.0" + executable: "npm:^4.1.1" + extract-zip: "npm:2.0.1" + figures: "npm:^3.2.0" + fs-extra: "npm:^9.1.0" + getos: "npm:^3.2.1" + is-ci: "npm:^3.0.1" + is-installed-globally: "npm:~0.4.0" + lazy-ass: "npm:^1.6.0" + listr2: "npm:^3.8.3" + lodash: "npm:^4.17.21" + log-symbols: "npm:^4.0.0" + minimist: "npm:^1.2.8" + ospath: "npm:^1.2.2" + pretty-bytes: "npm:^5.6.0" + process: "npm:^0.11.10" + proxy-from-env: "npm:1.0.0" + request-progress: "npm:^3.0.0" + semver: "npm:^7.5.3" + supports-color: "npm:^8.1.1" + tmp: "npm:~0.2.1" + untildify: "npm:^4.0.0" + yauzl: "npm:^2.10.0" + bin: + cypress: bin/cypress + checksum: 10c0/a9f74ce07b8d9d8058e4909ac3824d3d8a09af6f92eb4b69bce0892765ceeeac77094976e41a2a31e5138b6e43c2e5f1fb6fb54fbf9fa1bab957b465f5517540 + languageName: node + linkType: hard + "d3-array@npm:1": version: 1.2.4 resolution: "d3-array@npm:1.2.4" @@ -11947,13 +12354,22 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:^1.8.34": +"dayjs@npm:^1.10.4, dayjs@npm:^1.8.34": version: 1.11.11 resolution: "dayjs@npm:1.11.11" checksum: 10c0/0131d10516b9945f05a57e13f4af49a6814de5573a494824e103131a3bbe4cc470b1aefe8e17e51f9a478a22cd116084be1ee5725cedb66ec4c3f9091202dc4b languageName: node linkType: hard +"debounce-fn@npm:^4.0.0": + version: 4.0.0 + resolution: "debounce-fn@npm:4.0.0" + dependencies: + mimic-fn: "npm:^3.0.0" + checksum: 10c0/bcbd8eb253bdb6ee2f32759c95973c62bc479e74efbe1a44e17acfb0ea7d4bcbe615bf7e34aab80247ac08669c1ab72f7da0f384ceb7f15c18333d31d9030384 + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.6.0": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -11987,7 +12403,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": +"debug@npm:^3.1.0, debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" dependencies: @@ -12164,6 +12580,15 @@ __metadata: languageName: node linkType: hard +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" @@ -12339,6 +12764,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^5.2.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -12499,6 +12931,24 @@ __metadata: languageName: node linkType: hard +"dot-prop@npm:^6.0.1": + version: 6.0.1 + resolution: "dot-prop@npm:6.0.1" + dependencies: + is-obj: "npm:^2.0.0" + checksum: 10c0/30e51ec6408978a6951b21e7bc4938aad01a86f2fdf779efe52330205c6bb8a8ea12f35925c2029d6dc9d1df22f916f32f828ce1e9b259b1371c580541c22b5a + languageName: node + linkType: hard + +"dotenv-expand@npm:^11.0.6": + version: 11.0.6 + resolution: "dotenv-expand@npm:11.0.6" + dependencies: + dotenv: "npm:^16.4.4" + checksum: 10c0/e22891ec72cb926d46d9a26290ef77f9cc9ddcba92d2f83d5e6f3a803d1590887be68e25b559415d080053000441b6f63f5b36093a565bb8c5c994b992ae49f2 + languageName: node + linkType: hard + "dotenv-expand@npm:^5.1.0": version: 5.1.0 resolution: "dotenv-expand@npm:5.1.0" @@ -12513,7 +12963,7 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.4.5": +"dotenv@npm:^16.4.4, dotenv@npm:^16.4.5": version: 16.4.5 resolution: "dotenv@npm:16.4.5" checksum: 10c0/48d92870076832af0418b13acd6e5a5a3e83bb00df690d9812e94b24aff62b88ade955ac99a05501305b8dc8f1b0ee7638b18493deb6fe93d680e5220936292f @@ -12595,6 +13045,17 @@ __metadata: languageName: node linkType: hard +"eciesjs@npm:^0.4.6": + version: 0.4.7 + resolution: "eciesjs@npm:0.4.7" + dependencies: + "@noble/ciphers": "npm:^0.5.3" + "@noble/curves": "npm:^1.4.0" + "@noble/hashes": "npm:^1.4.0" + checksum: 10c0/0f5272eab3eb1a1f8501c2eec71b11bb82dd8f9234eb766bc6d37dff539f765a3520ea2f4298f8fa52fb989ab5cca6d137a94f7b8c2c8aa4d92e4d8ed69af010 + languageName: node + linkType: hard + "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -12662,6 +13123,13 @@ __metadata: languageName: node linkType: hard +"enabled@npm:2.0.x": + version: 2.0.0 + resolution: "enabled@npm:2.0.0" + checksum: 10c0/3b2c2af9bc7f8b9e291610f2dde4a75cf6ee52a68f4dd585482fbdf9a55d65388940e024e56d40bb03e05ef6671f5f53021fa8b72a20e954d7066ec28166713f + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -12697,6 +13165,16 @@ __metadata: languageName: node linkType: hard +"enquirer@npm:^2.3.6": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: "npm:^4.1.1" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 + languageName: node + linkType: hard + "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -13473,6 +13951,13 @@ __metadata: languageName: node linkType: hard +"eventemitter2@npm:6.4.7": + version: 6.4.7 + resolution: "eventemitter2@npm:6.4.7" + checksum: 10c0/35d8e9d51b919114eb072d33786274e1475db50efe00960c24c088ce4f76c07a826ccc927602724928efb3d8f09a7d8dd1fa79e410875118c0e9846959287f34 + languageName: node + linkType: hard + "eventemitter3@npm:^4.0.0": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" @@ -13518,6 +14003,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:4.1.0": + version: 4.1.0 + resolution: "execa@npm:4.1.0" + dependencies: + cross-spawn: "npm:^7.0.0" + get-stream: "npm:^5.0.0" + human-signals: "npm:^1.1.1" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.0" + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/02211601bb1c52710260edcc68fb84c3c030dc68bafc697c90ada3c52cc31375337de8c24826015b8382a58d63569ffd203b79c94fef217d65503e3e8d2c52ba + languageName: node + linkType: hard + "execa@npm:7.2.0": version: 7.2.0 resolution: "execa@npm:7.2.0" @@ -13535,7 +14037,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0": +"execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -13552,6 +14054,15 @@ __metadata: languageName: node linkType: hard +"executable@npm:^4.1.1": + version: 4.1.1 + resolution: "executable@npm:4.1.1" + dependencies: + pify: "npm:^2.2.0" + checksum: 10c0/c3cc5d2d2e3cdb1b7d7b0639ebd5566d113d7ada21cfa07f5226d55ba2a210320116720e07570ed5659ef2ec516bc00c8f0488dac75d112fd324ef25c2100173 + languageName: node + linkType: hard + "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" @@ -13917,6 +14428,13 @@ __metadata: languageName: node linkType: hard +"fecha@npm:^4.2.0": + version: 4.2.3 + resolution: "fecha@npm:4.2.3" + checksum: 10c0/0e895965959cf6a22bb7b00f0bf546f2783836310f510ddf63f463e1518d4c96dec61ab33fdfd8e79a71b4856a7c865478ce2ee8498d560fe125947703c9b1cf + languageName: node + linkType: hard + "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -13941,6 +14459,15 @@ __metadata: languageName: node linkType: hard +"figures@npm:^3.2.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -14129,6 +14656,13 @@ __metadata: languageName: node linkType: hard +"fn.name@npm:1.x.x": + version: 1.1.0 + resolution: "fn.name@npm:1.1.0" + checksum: 10c0/8ad62aa2d4f0b2a76d09dba36cfec61c540c13a0fd72e5d94164e430f987a7ce6a743112bbeb14877c810ef500d1f73d7f56e76d029d2e3413f20d79e3460a9a + languageName: node + linkType: hard + "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.6": version: 1.15.6 resolution: "follow-redirects@npm:1.15.6" @@ -14332,7 +14866,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": +"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1, fs-extra@npm:^9.1.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" dependencies: @@ -14543,7 +15077,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^5.1.0": +"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" dependencies: @@ -14596,6 +15130,15 @@ __metadata: languageName: node linkType: hard +"getos@npm:^3.2.1": + version: 3.2.1 + resolution: "getos@npm:3.2.1" + dependencies: + async: "npm:^3.2.0" + checksum: 10c0/21556fca1da4dfc8f1707261b4f9ff19b9e9bfefa76478249d2abddba3cd014bd6c5360634add1590b27e0b27d422e8f997dddaa0234aae1fa4c54f33f82e841 + languageName: node + linkType: hard + "getpass@npm:^0.1.1": version: 0.1.7 resolution: "getpass@npm:0.1.7" @@ -14667,6 +15210,15 @@ __metadata: languageName: node linkType: hard +"global-dirs@npm:^3.0.0": + version: 3.0.1 + resolution: "global-dirs@npm:3.0.1" + dependencies: + ini: "npm:2.0.0" + checksum: 10c0/ef65e2241a47ff978f7006a641302bc7f4c03dfb98783d42bf7224c136e3a06df046e70ee3a010cf30214114755e46c9eb5eb1513838812fbbe0d92b14c25080 + languageName: node + linkType: hard + "global-modules@npm:^2.0.0": version: 2.0.0 resolution: "global-modules@npm:2.0.0" @@ -15216,6 +15768,17 @@ __metadata: languageName: node linkType: hard +"http-signature@npm:~1.3.6": + version: 1.3.6 + resolution: "http-signature@npm:1.3.6" + dependencies: + assert-plus: "npm:^1.0.0" + jsprim: "npm:^2.0.2" + sshpk: "npm:^1.14.1" + checksum: 10c0/f8d15d8c91a5a80805530e2f401a3f83ed55162058651d86ad00df294b159a54e001b5d00e04983f7542a55865aee02d2d83d68c8499137ff2bc142553d8dfc2 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -15236,6 +15799,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^1.1.1": + version: 1.1.1 + resolution: "human-signals@npm:1.1.1" + checksum: 10c0/18810ed239a7a5e23fb6c32d0fd4be75d7cd337a07ad59b8dbf0794cb0761e6e628349ee04c409e605fe55344716eab5d0a47a62ba2a2d0d367c89a2b4247b1e + languageName: node + linkType: hard + "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -15316,7 +15886,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.3.1": +"ignore@npm:^5.2.0, ignore@npm:^5.3.0, ignore@npm:^5.3.1": version: 5.3.1 resolution: "ignore@npm:5.3.1" checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd @@ -15411,6 +15981,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:2.0.0": + version: 2.0.0 + resolution: "ini@npm:2.0.0" + checksum: 10c0/2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 + languageName: node + linkType: hard + "ini@npm:^1.3.5": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -15514,6 +16091,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.3.1": + version: 0.3.2 + resolution: "is-arrayish@npm:0.3.2" + checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54 + languageName: node + linkType: hard + "is-async-function@npm:^2.0.0": version: 2.0.0 resolution: "is-async-function@npm:2.0.0" @@ -15676,6 +16260,23 @@ __metadata: languageName: node linkType: hard +"is-installed-globally@npm:~0.4.0": + version: 0.4.0 + resolution: "is-installed-globally@npm:0.4.0" + dependencies: + global-dirs: "npm:^3.0.0" + is-path-inside: "npm:^3.0.2" + checksum: 10c0/f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -15741,6 +16342,13 @@ __metadata: languageName: node linkType: hard +"is-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "is-obj@npm:2.0.0" + checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e + languageName: node + linkType: hard + "is-object@npm:^1.0.1": version: 1.0.2 resolution: "is-object@npm:1.0.2" @@ -15748,7 +16356,7 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": +"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 @@ -15901,6 +16509,13 @@ __metadata: languageName: node linkType: hard +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + "is-weakmap@npm:^2.0.2": version: 2.0.2 resolution: "is-weakmap@npm:2.0.2" @@ -15927,7 +16542,7 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^2.2.0": +"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" dependencies: @@ -17362,6 +17977,13 @@ __metadata: languageName: node linkType: hard +"json-schema-typed@npm:^7.0.3": + version: 7.0.3 + resolution: "json-schema-typed@npm:7.0.3" + checksum: 10c0/b4a6d984dd91f9aba72df8768c5ced99e789b8e17b55ee24afb3a687ce55b70a7b3f4360cac67939e1ff98e136ca26f3aa530635c13ef371ae5edc48b69a65f6 + languageName: node + linkType: hard + "json-schema@npm:0.4.0, json-schema@npm:^0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" @@ -17471,6 +18093,18 @@ __metadata: languageName: node linkType: hard +"jsprim@npm:^2.0.2": + version: 2.0.2 + resolution: "jsprim@npm:2.0.2" + dependencies: + assert-plus: "npm:1.0.0" + extsprintf: "npm:1.3.0" + json-schema: "npm:0.4.0" + verror: "npm:1.10.0" + checksum: 10c0/677be2d41df536c92c6d0114a492ef197084018cfbb1a3e10b1fa1aad889564b2e3a7baa6af7949cc2d73678f42368b0be165a26bd4e4de6883a30dd6a24e98d + languageName: node + linkType: hard + "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": version: 3.3.5 resolution: "jsx-ast-utils@npm:3.3.5" @@ -17608,6 +18242,13 @@ __metadata: languageName: node linkType: hard +"kuler@npm:^2.0.0": + version: 2.0.0 + resolution: "kuler@npm:2.0.0" + checksum: 10c0/0a4e99d92ca373f8f74d1dc37931909c4d0d82aebc94cf2ba265771160fc12c8df34eaaac80805efbda367e2795cb1f1dd4c3d404b6b1cf38aec94035b503d2d + languageName: node + linkType: hard + "language-subtag-registry@npm:^0.3.20": version: 0.3.23 resolution: "language-subtag-registry@npm:0.3.23" @@ -17634,6 +18275,13 @@ __metadata: languageName: node linkType: hard +"lazy-ass@npm:^1.6.0": + version: 1.6.0 + resolution: "lazy-ass@npm:1.6.0" + checksum: 10c0/4af6cb9a333fbc811268c745f9173fba0f99ecb817cc9c0fae5dbf986b797b730ff525504128f6623b91aba32b02124553a34b0d14de3762b637b74d7233f3bd + languageName: node + linkType: hard + "lazystream@npm:^1.0.0": version: 1.0.1 resolution: "lazystream@npm:1.0.1" @@ -17762,6 +18410,27 @@ __metadata: languageName: node linkType: hard +"listr2@npm:^3.8.3": + version: 3.14.0 + resolution: "listr2@npm:3.14.0" + dependencies: + cli-truncate: "npm:^2.1.0" + colorette: "npm:^2.0.16" + log-update: "npm:^4.0.0" + p-map: "npm:^4.0.0" + rfdc: "npm:^1.3.0" + rxjs: "npm:^7.5.1" + through: "npm:^2.3.8" + wrap-ansi: "npm:^7.0.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/8301703876ad6bf50cd769e9c1169c2aa435951d69d4f54fc202a13c1b6006a9b3afbcf9842440eb22f08beec4d311d365e31d4ed2e0fcabf198d8085b06a421 + languageName: node + linkType: hard + "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" @@ -17978,7 +18647,7 @@ __metadata: languageName: node linkType: hard -"lodash.once@npm:^4.0.0": +"lodash.once@npm:^4.0.0, lodash.once@npm:^4.1.1": version: 4.1.1 resolution: "lodash.once@npm:4.1.1" checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 @@ -18013,6 +18682,28 @@ __metadata: languageName: node linkType: hard +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: "npm:^4.3.0" + cli-cursor: "npm:^3.1.0" + slice-ansi: "npm:^4.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 + languageName: node + linkType: hard + "log-update@npm:^5.0.1": version: 5.0.1 resolution: "log-update@npm:5.0.1" @@ -18026,6 +18717,20 @@ __metadata: languageName: node linkType: hard +"logform@npm:^2.3.2, logform@npm:^2.4.0": + version: 2.6.0 + resolution: "logform@npm:2.6.0" + dependencies: + "@colors/colors": "npm:1.6.0" + "@types/triple-beam": "npm:^1.3.2" + fecha: "npm:^4.2.0" + ms: "npm:^2.1.1" + safe-stable-stringify: "npm:^2.3.1" + triple-beam: "npm:^1.3.0" + checksum: 10c0/6e02f8617a03155b2fce451bacf777a2c01da16d32c4c745b3ec85be6c3f2602f2a4953a8bd096441cb4c42c447b52318541d6b6bc335dce903cb9ad77a1749f + languageName: node + linkType: hard + "loose-envify@npm:^1.1.0, loose-envify@npm:^1.2.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -18431,6 +19136,13 @@ __metadata: languageName: node linkType: hard +"mimic-fn@npm:^3.0.0": + version: 3.1.0 + resolution: "mimic-fn@npm:3.1.0" + checksum: 10c0/a07cdd8ed6490c2dff5b11f889b245d9556b80f5a653a552a651d17cff5a2d156e632d235106c2369f00cccef4071704589574cf3601bc1b1400a1f620dff067 + languageName: node + linkType: hard + "mimic-fn@npm:^4.0.0": version: 4.0.0 resolution: "mimic-fn@npm:4.0.0" @@ -19062,7 +19774,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.1": +"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -19150,6 +19862,13 @@ __metadata: languageName: node linkType: hard +"object-treeify@npm:1.1.33": + version: 1.1.33 + resolution: "object-treeify@npm:1.1.33" + checksum: 10c0/5b735ac552200bf14f9892ce58295303e8d15a8cc7a0fd4fe6ff99923ab0c196fb70a870ab2a0eefc6820c4acb49e614b88c72d344b9c6bd22584a3efbd386fe + languageName: node + linkType: hard + "object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": version: 4.1.5 resolution: "object.assign@npm:4.1.5" @@ -19272,6 +19991,15 @@ __metadata: languageName: node linkType: hard +"one-time@npm:^1.0.0": + version: 1.0.0 + resolution: "one-time@npm:1.0.0" + dependencies: + fn.name: "npm:1.x.x" + checksum: 10c0/6e4887b331edbb954f4e915831cbec0a7b9956c36f4feb5f6de98c448ac02ff881fd8d9b55a6b1b55030af184c6b648f340a76eb211812f4ad8c9b4b8692fdaa + languageName: node + linkType: hard + "onetime@npm:^5.1.0, onetime@npm:^5.1.2": version: 5.1.2 resolution: "onetime@npm:5.1.2" @@ -19290,7 +20018,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.0.9, open@npm:^8.4.0": +"open@npm:^8.0.9, open@npm:^8.4.0, open@npm:^8.4.2": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -19329,6 +20057,30 @@ __metadata: languageName: node linkType: hard +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"ospath@npm:^1.2.2": + version: 1.2.2 + resolution: "ospath@npm:1.2.2" + checksum: 10c0/e485a6ca91964f786163408b093860bf26a9d9704d83ec39ccf463b9f11ea712b780b23b73d1f64536de62c5f66244dd94ed83fc9ffe3c1564dd1eed5cdae923 + languageName: node + linkType: hard + "outvariant@npm:^1.2.1, outvariant@npm:^1.4.0, outvariant@npm:^1.4.2": version: 1.4.2 resolution: "outvariant@npm:1.4.2" @@ -19838,7 +20590,7 @@ __metadata: languageName: node linkType: hard -"pify@npm:^2.3.0": +"pify@npm:^2.2.0, pify@npm:^2.3.0": version: 2.3.0 resolution: "pify@npm:2.3.0" checksum: 10c0/551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc @@ -21278,7 +22030,7 @@ __metadata: languageName: node linkType: hard -"pretty-bytes@npm:^5.3.0, pretty-bytes@npm:^5.4.1": +"pretty-bytes@npm:^5.3.0, pretty-bytes@npm:^5.4.1, pretty-bytes@npm:^5.6.0": version: 5.6.0 resolution: "pretty-bytes@npm:5.6.0" checksum: 10c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 @@ -21482,6 +22234,13 @@ __metadata: languageName: node linkType: hard +"proxy-from-env@npm:1.0.0": + version: 1.0.0 + resolution: "proxy-from-env@npm:1.0.0" + checksum: 10c0/c64df9b21f7f820dc882cd6f7f81671840acd28b9688ee3e3e6af47a56ec7f0edcabe5bc96b32b26218b35eeff377bcc27ac27f89b6b21401003e187ff13256f + languageName: node + linkType: hard + "proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -21561,6 +22320,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.10.4": + version: 6.10.4 + resolution: "qs@npm:6.10.4" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 10c0/7a8c9d77968aeccb769aedd7e047c0e0109dad0cfa57cab1ad906f4069fd58f361b80abd2de5854ba9a09b4c5d06d6a2c82108766f1f1527572fe6130deaa471 + languageName: node + linkType: hard + "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -22329,6 +23097,15 @@ __metadata: languageName: node linkType: hard +"request-progress@npm:^3.0.0": + version: 3.0.0 + resolution: "request-progress@npm:3.0.0" + dependencies: + throttleit: "npm:^1.0.0" + checksum: 10c0/d5dcb7155a738572c8781436f6b418e866066a30eea0f99a9ab26b6f0ed6c13637462bba736357de3899b8d30431ee9202ac956a5f8ccdd0d9d1ed0962000d14 + languageName: node + linkType: hard + "request@npm:^2.81.0, request@npm:^2.88.2": version: 2.88.2 resolution: "request@npm:2.88.2" @@ -22520,6 +23297,16 @@ __metadata: languageName: node linkType: hard +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + "restore-cursor@npm:^4.0.0": version: 4.0.0 resolution: "restore-cursor@npm:4.0.0" @@ -22633,6 +23420,13 @@ __metadata: languageName: node linkType: hard +"run-async@npm:^3.0.0": + version: 3.0.0 + resolution: "run-async@npm:3.0.0" + checksum: 10c0/b18b562ae37c3020083dcaae29642e4cc360c824fbfb6b7d50d809a9d5227bb986152d09310255842c8dce40526e82ca768f02f00806c91ba92a8dfa6159cb85 + languageName: node + linkType: hard + "run-parallel@npm:^1.1.6, run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -22649,6 +23443,15 @@ __metadata: languageName: node linkType: hard +"rxjs@npm:^7.5.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + "safe-array-concat@npm:^1.1.2": version: 1.1.2 resolution: "safe-array-concat@npm:1.1.2" @@ -22880,7 +23683,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": +"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": version: 7.6.2 resolution: "semver@npm:7.6.2" bin: @@ -23092,6 +23895,15 @@ __metadata: languageName: node linkType: hard +"simple-swizzle@npm:^0.2.2": + version: 0.2.2 + resolution: "simple-swizzle@npm:0.2.2" + dependencies: + is-arrayish: "npm:^0.3.1" + checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308 + languageName: node + linkType: hard + "simple-update-notifier@npm:^2.0.0": version: 2.0.0 resolution: "simple-update-notifier@npm:2.0.0" @@ -23136,6 +23948,28 @@ __metadata: languageName: node linkType: hard +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + "slice-ansi@npm:^5.0.0": version: 5.0.0 resolution: "slice-ansi@npm:5.0.0" @@ -23397,7 +24231,7 @@ __metadata: languageName: node linkType: hard -"sshpk@npm:^1.7.0": +"sshpk@npm:^1.14.1, sshpk@npm:^1.7.0": version: 1.18.0 resolution: "sshpk@npm:1.18.0" dependencies: @@ -23434,6 +24268,13 @@ __metadata: languageName: node linkType: hard +"stack-trace@npm:0.0.x": + version: 0.0.10 + resolution: "stack-trace@npm:0.0.10" + checksum: 10c0/9ff3dabfad4049b635a85456f927a075c9d0c210e3ea336412d18220b2a86cbb9b13ec46d6c37b70a302a4ea4d49e30e5d4944dd60ae784073f1cde778ac8f4b + languageName: node + linkType: hard + "stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" @@ -23929,7 +24770,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0": +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -24235,6 +25076,13 @@ __metadata: languageName: node linkType: hard +"text-hex@npm:1.0.x": + version: 1.0.0 + resolution: "text-hex@npm:1.0.0" + checksum: 10c0/57d8d320d92c79d7c03ffb8339b825bb9637c2cbccf14304309f51d8950015c44464b6fd1b6820a3d4821241c68825634f09f5a2d9d501e84f7c6fd14376860d + languageName: node + linkType: hard + "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -24276,6 +25124,13 @@ __metadata: languageName: node linkType: hard +"throttleit@npm:^1.0.0": + version: 1.0.1 + resolution: "throttleit@npm:1.0.1" + checksum: 10c0/4d41a1bf467646b1aa7bec0123b78452a0e302d7344f6a67e43e68434f0a02ea3ba44df050a40c69adeb9cae3cbf6b36b38cfe94bcc3c4a8243c9b63e38e059b + languageName: node + linkType: hard + "through2@npm:^2.0.1": version: 2.0.5 resolution: "through2@npm:2.0.5" @@ -24359,7 +25214,7 @@ __metadata: languageName: node linkType: hard -"tmp@npm:^0.2.0": +"tmp@npm:^0.2.0, tmp@npm:~0.2.1": version: 0.2.3 resolution: "tmp@npm:0.2.3" checksum: 10c0/3e809d9c2f46817475b452725c2aaa5d11985cf18d32a7a970ff25b568438e2c076c2e8609224feef3b7923fa9749b74428e3e634f6b8e520c534eef2fd24125 @@ -24443,7 +25298,7 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": +"tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.3": version: 4.1.4 resolution: "tough-cookie@npm:4.1.4" dependencies: @@ -24506,6 +25361,13 @@ __metadata: languageName: node linkType: hard +"triple-beam@npm:^1.3.0": + version: 1.4.1 + resolution: "triple-beam@npm:1.4.1" + checksum: 10c0/4bf1db71e14fe3ff1c3adbe3c302f1fdb553b74d7591a37323a7badb32dc8e9c290738996cbb64f8b10dc5a3833645b5d8c26221aaaaa12e50d1251c9aba2fea + languageName: node + linkType: hard + "tryer@npm:^1.0.1": version: 1.0.1 resolution: "tryer@npm:1.0.1" @@ -24668,7 +25530,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.6.2": +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.6.2": version: 2.6.3 resolution: "tslib@npm:2.6.3" checksum: 10c0/2598aef53d9dbe711af75522464b2104724d6467b26a60f2bdac8297d2b5f1f6b86a71f61717384aa8fd897240467aaa7bcc36a0700a0faf751293d1331db39a @@ -24983,6 +25845,15 @@ __metadata: languageName: node linkType: hard +"undici@npm:^5.28.3": + version: 5.28.4 + resolution: "undici@npm:5.28.4" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 10c0/08d0f2596553aa0a54ca6e8e9c7f45aef7d042c60918564e3a142d449eda165a80196f6ef19ea2ef2e6446959e293095d8e40af1236f0d67223b06afac5ecad7 + languageName: node + linkType: hard + "undici@npm:^6.18.0": version: 6.19.2 resolution: "undici@npm:6.19.2" @@ -25373,6 +26244,15 @@ __metadata: languageName: node linkType: hard +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + "web-streams-polyfill@npm:^3.0.3": version: 3.3.3 resolution: "web-streams-polyfill@npm:3.3.3" @@ -25735,6 +26615,36 @@ __metadata: languageName: node linkType: hard +"winston-transport@npm:^4.7.0": + version: 4.7.0 + resolution: "winston-transport@npm:4.7.0" + dependencies: + logform: "npm:^2.3.2" + readable-stream: "npm:^3.6.0" + triple-beam: "npm:^1.3.0" + checksum: 10c0/cd16f3d0ab56697f93c4899e0eb5f89690f291bb6cf309194819789326a7c7ed943ef00f0b2fab513b114d371314368bde1a7ae6252ad1516181a79f90199cd2 + languageName: node + linkType: hard + +"winston@npm:^3.11.0": + version: 3.13.0 + resolution: "winston@npm:3.13.0" + dependencies: + "@colors/colors": "npm:^1.6.0" + "@dabh/diagnostics": "npm:^2.0.2" + async: "npm:^3.2.3" + is-stream: "npm:^2.0.0" + logform: "npm:^2.4.0" + one-time: "npm:^1.0.0" + readable-stream: "npm:^3.4.0" + safe-stable-stringify: "npm:^2.3.1" + stack-trace: "npm:0.0.x" + triple-beam: "npm:^1.3.0" + winston-transport: "npm:^4.7.0" + checksum: 10c0/2c3cc7389a691e1638edcb0d4bfea72caa82d87d5681ec6131ac9bae780d94d06fb7b112edcd4ec37c8b947a1b64943941b761e34d67c6b0dac6e9c31ae4b25b + languageName: node + linkType: hard + "wkt-parser@npm:^1.3.3": version: 1.3.3 resolution: "wkt-parser@npm:1.3.3" @@ -26083,6 +26993,15 @@ __metadata: languageName: node linkType: hard +"xxhashjs@npm:^0.2.2": + version: 0.2.2 + resolution: "xxhashjs@npm:0.2.2" + dependencies: + cuint: "npm:^0.2.2" + checksum: 10c0/78f3a5e10c7ba026bfc52f07ab02acb972c9c681dd53c283b386042822bae15577667103efe843725e9b0914f7bc53d70fe2f24a3e85d15aac13378fdf2db50e + languageName: node + linkType: hard + "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8"