From 7952647601221ffb2c4004c07c656cc878b8d3ae Mon Sep 17 00:00:00 2001 From: Jess Date: Mon, 21 Mar 2022 07:18:44 -0400 Subject: [PATCH] feat: adding ui component tests (#590) * docs: additional cypress + vitest comparison content * feat: ui testing * fix: seperate cypress tests * feat: adding cypress component testing for ui * chore: share the common deps for global app setup * spacing * Update package.json Co-authored-by: Michel EDIGHOFFER * chore: adding OptimizationPersist + PkgConfig to reduce flake * chore: workaround for unocss hmr * chore: adding ts-ignore comments * chore: reordering data-testid * chore: ts-expect-error * --allow-empty * bug: reproduction of failing vite + cypress setup * chore: adding Vite 2.9.0-beta.3 to cold-start stability issues for UI component tests * chore: fixing types * chore: fixing types * reenabling tests * adding faker seed back in * bumping faker version Co-authored-by: Michel EDIGHOFFER Co-authored-by: Anthony Fu --- .github/workflows/ci.yml | 20 + .gitignore | 3 + package.json | 5 +- .../dashboard/DashboardEntry.cy.tsx | 30 + .../components/dashboard/DashboardEntry.vue | 2 +- .../components/dashboard/TestFilesEntry.vue | 5 +- .../components/dashboard/TestsEntry.vue | 10 +- .../components/views/ViewConsoleOutput.vue | 2 +- .../ui/client/components/views/ViewEditor.vue | 1 + packages/ui/client/global-setup.ts | 27 + packages/ui/client/main.ts | 26 +- packages/ui/cypress.json | 7 + packages/ui/cypress/plugins/index.ts | 15 + packages/ui/cypress/plugins/vite.config.ts | 7 + packages/ui/cypress/support/index.ts | 10 + packages/ui/cypress/support/mount.ts | 31 + packages/ui/package.json | 39 +- packages/ui/tsconfig.json | 3 + packages/ui/vite.config.ts | 13 +- pnpm-lock.yaml | 595 ++++++++++++++++++ test/global-setup/test/global-setup.test.ts | 1 + test/global-setup/test/setup-files.test.ts | 1 + test/snapshots/test/shapshots.test.ts | 8 +- 23 files changed, 822 insertions(+), 39 deletions(-) create mode 100644 packages/ui/client/components/dashboard/DashboardEntry.cy.tsx create mode 100644 packages/ui/client/global-setup.ts create mode 100644 packages/ui/cypress.json create mode 100644 packages/ui/cypress/plugins/index.ts create mode 100644 packages/ui/cypress/plugins/vite.config.ts create mode 100644 packages/ui/cypress/support/index.ts create mode 100644 packages/ui/cypress/support/mount.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0884104cad36..7aec28fadf5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,3 +84,23 @@ jobs: - name: Test run: pnpm run test:ci + + test-ui: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install pnpm + uses: pnpm/action-setup@v2.2.1 + + - name: Set node + uses: actions/setup-node@v2 + with: + node-version: 16.x + cache: "pnpm" + + - name: Install + run: pnpm i + + - name: Test UI + run: pnpm run ui:test diff --git a/.gitignore b/.gitignore index 19acbd1edc4a..8ee5a474317f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,5 +12,8 @@ dist .idea .DS_Store bench/test/*/*/ +cypress/videos +cypress/downloads +cypress/screenshots docs/public/user-avatars docs/public/sponsors diff --git a/package.json b/package.json index b70afb0a258f..31055202bec7 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "test:ci": "cross-env CI=true pnpm -r --stream --filter !@vitest/monorepo --filter !test-fails run test -- --allowOnly", "typecheck": "tsc --noEmit", "ui:build": "vite build packages/ui", - "ui:dev": "vite packages/ui" + "ui:dev": "vite packages/ui", + "ui:test": "npm -C packages/ui run test:run" }, "devDependencies": { "@antfu/eslint-config": "^0.18.9", @@ -56,7 +57,7 @@ "rollup-plugin-esbuild": "^4.8.2", "rollup-plugin-license": "^2.6.1", "typescript": "^4.6.2", - "vite": "^2.8.6", + "vite": "2.9.0-beta.3", "vitepress": "^0.22.3", "vitest": "workspace:*", "vue": "^3.2.31" diff --git a/packages/ui/client/components/dashboard/DashboardEntry.cy.tsx b/packages/ui/client/components/dashboard/DashboardEntry.cy.tsx new file mode 100644 index 000000000000..6a0478765901 --- /dev/null +++ b/packages/ui/client/components/dashboard/DashboardEntry.cy.tsx @@ -0,0 +1,30 @@ +import faker from '@faker-js/faker' +import DashboardEntry from './DashboardEntry.vue' + +const body = () => (
{ faker.lorem.words(2) }
) +const header = () => (
{ faker.hacker.phrase() }
) +const bodySelector = '[data-testid=body-content]' +const headerSelector = '[data-testid=header-content]' +const tailSelector = '[data-testid=tail]' + +describe('DashboardEntry', () => { + it('tail is rendered by default', () => { + cy.mount() + .get(tailSelector) + .should('exist') + }) + + it('tail is not shown when true', () => { + cy.mount() + .get(tailSelector) + .should('not.exist') + }) + + it('renders the body and header slots', () => { + cy.mount() + .get(bodySelector) + .should('be.visible') + .get(headerSelector) + .should('be.visible') + }) +}) diff --git a/packages/ui/client/components/dashboard/DashboardEntry.vue b/packages/ui/client/components/dashboard/DashboardEntry.vue index 102651b3f567..144a8b60f950 100644 --- a/packages/ui/client/components/dashboard/DashboardEntry.vue +++ b/packages/ui/client/components/dashboard/DashboardEntry.vue @@ -12,6 +12,6 @@ withDefaults(defineProps<{ tail?: boolean }>(), { tail: false }) -
+
diff --git a/packages/ui/client/components/dashboard/TestFilesEntry.vue b/packages/ui/client/components/dashboard/TestFilesEntry.vue index b149a41c3dc7..48fa0ed94187 100644 --- a/packages/ui/client/components/dashboard/TestFilesEntry.vue +++ b/packages/ui/client/components/dashboard/TestFilesEntry.vue @@ -5,13 +5,14 @@ import { filesFailed, filesSnapshotFailed, filesSuccess, time } from '../../comp - + @@ -38,7 +38,7 @@ const pending = computed(() => { {{ skipped }} - + @@ -46,7 +46,7 @@ const pending = computed(() => { {{ todo }} - + diff --git a/packages/ui/client/components/views/ViewConsoleOutput.vue b/packages/ui/client/components/views/ViewConsoleOutput.vue index b382f93c5a8a..debfc5b5fa25 100644 --- a/packages/ui/client/components/views/ViewConsoleOutput.vue +++ b/packages/ui/client/components/views/ViewConsoleOutput.vue @@ -18,7 +18,7 @@ function getTaskName(id?: string) { diff --git a/packages/ui/client/global-setup.ts b/packages/ui/client/global-setup.ts new file mode 100644 index 000000000000..4058316558c0 --- /dev/null +++ b/packages/ui/client/global-setup.ts @@ -0,0 +1,27 @@ +/// + +import { createRouter as _createRouter, createWebHistory } from 'vue-router' +import FloatingVue, { VTooltip } from 'floating-vue' +import routes from 'virtual:generated-pages' +import 'd3-graph-controller/default.css' +import 'splitpanes/dist/splitpanes.css' +import '@unocss/reset/tailwind.css' +import 'codemirror/lib/codemirror.css' +import 'codemirror-theme-vars/base.css' +import './styles/main.css' +import 'floating-vue/dist/style.css' +import 'uno.css' + +export const directives = { + tooltip: VTooltip, +} + +FloatingVue.options.instantMove = true +FloatingVue.options.distance = 10 + +export const createRouter = () => _createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes, +}) + +export const plugins = [createRouter] diff --git a/packages/ui/client/main.ts b/packages/ui/client/main.ts index ee39aa4e832d..667af79307b6 100644 --- a/packages/ui/client/main.ts +++ b/packages/ui/client/main.ts @@ -1,27 +1,15 @@ import { createApp } from 'vue' -import { createRouter, createWebHistory } from 'vue-router' -import routes from 'virtual:generated-pages' -import FloatingVue, { VTooltip } from 'floating-vue' +import { directives, plugins } from './global-setup' import App from './App.vue' -import 'd3-graph-controller/default.css' -import 'splitpanes/dist/splitpanes.css' -import '@unocss/reset/tailwind.css' -import 'codemirror/lib/codemirror.css' -import 'codemirror-theme-vars/base.css' -import 'floating-vue/dist/style.css' -import './styles/main.css' -import 'uno.css' - const app = createApp(App) -const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes, + +plugins.forEach((plugin) => { + app.use(plugin) }) -app.use(router) -app.directive('tooltip', VTooltip) -FloatingVue.options.instantMove = true -FloatingVue.options.distance = 10 +Object.entries(directives).forEach(([name, directive]) => { + app.directive(name, directive) +}) app.mount('#app') diff --git a/packages/ui/cypress.json b/packages/ui/cypress.json new file mode 100644 index 000000000000..db3936c9c25b --- /dev/null +++ b/packages/ui/cypress.json @@ -0,0 +1,7 @@ +{ + "testFiles": "**/*.cy.{js,ts,jsx,tsx}", + "componentFolder": "client", + "supportFile": "cypress/support/index.ts", + "pluginsFile": "cypress/plugins/index.ts", + "fixturesFolder": false +} diff --git a/packages/ui/cypress/plugins/index.ts b/packages/ui/cypress/plugins/index.ts new file mode 100644 index 000000000000..94bdd82abfc8 --- /dev/null +++ b/packages/ui/cypress/plugins/index.ts @@ -0,0 +1,15 @@ +import path from 'path' +import { startDevServer } from '@cypress/vite-dev-server' + +const plugin: Cypress.PluginConfig = (on, config) => { + on('dev-server:start', options => startDevServer({ + options, + viteConfig: { + configFile: path.resolve(__dirname, './vite.config.ts'), + }, + })) + + return config +} + +export default plugin diff --git a/packages/ui/cypress/plugins/vite.config.ts b/packages/ui/cypress/plugins/vite.config.ts new file mode 100644 index 000000000000..75925489ffa9 --- /dev/null +++ b/packages/ui/cypress/plugins/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import vueJsx from '@vitejs/plugin-vue-jsx' +import { config } from '../../vite.config' + +config.plugins?.push(vueJsx()) + +export default defineConfig(config) diff --git a/packages/ui/cypress/support/index.ts b/packages/ui/cypress/support/index.ts new file mode 100644 index 000000000000..b7c0bd73efcd --- /dev/null +++ b/packages/ui/cypress/support/index.ts @@ -0,0 +1,10 @@ +import faker from '@faker-js/faker' +import '../../client/global-setup' + +import { registerMount } from './mount' + +before(() => { + faker.seed(0) +}) + +registerMount() diff --git a/packages/ui/cypress/support/mount.ts b/packages/ui/cypress/support/mount.ts new file mode 100644 index 000000000000..c7ba18462b29 --- /dev/null +++ b/packages/ui/cypress/support/mount.ts @@ -0,0 +1,31 @@ +import { mount } from '@cypress/vue' +import type { Component } from 'vue' +import { directives, plugins } from '../../client/global-setup' + +export const registerMount = () => Cypress.Commands.add( + 'mount', + // eslint-disable-next-line @typescript-eslint/no-unused-vars + [0]>(comp: any, options: any = {}) => { + options.global = options.global || {} + options.global.stubs = options.global.stubs || {} + options.global.stubs.transition = false + options.global.plugins = options.global.plugins || [] + options.global.directives = directives + plugins?.forEach((pluginFn: () => any) => { + options?.global?.plugins?.push(pluginFn()) + }) + + return mount(comp, options) + }, +) + +declare global { + namespace Cypress { + interface Chainable { + /** + * Install all vue plugins and globals then mount + */ + mount(comp: Component, options?: unknown): Cypress.Chainable + } + } +} diff --git a/packages/ui/package.json b/packages/ui/package.json index c395313d1df2..b6dbd82737ba 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -28,23 +28,32 @@ "build:node": "rollup -c", "dev:client": "vite", "dev": "rollup -c --watch --watch.include=node/**", - "dev:ui": "run-p dev dev:client" + "dev:ui": "run-p dev dev:client", + "test:run": "cypress run-ct", + "test:open": "cypress open-ct" }, "dependencies": { "sirv": "^2.0.2" }, "devDependencies": { + "@cypress/vite-dev-server": "^2.2.2", + "@cypress/vue": "^3.1.0", + "@faker-js/faker": "^6.0.0", "@types/codemirror": "^5.60.5", "@types/d3-force": "^3.0.3", "@types/d3-selection": "^3.0.2", "@types/ws": "^8.5.3", "@unocss/reset": "^0.29.5", + "@vitejs/plugin-vue-jsx": "^1.3.3", "@vitejs/plugin-vue": "^2.2.4", "@vitest/ws-client": "workspace:*", "@vueuse/core": "^8.1.2", - "codemirror": "^5.65.2", + "birpc": "^0.1.0", "codemirror-theme-vars": "^0.1.1", + "codemirror": "^5.65.2", + "cypress": "^9.5.0", "d3-graph-controller": "^2.2.18", + "flatted": "^3.2.4", "floating-vue": "^2.0.0-y.0", "picocolors": "^1.0.0", "rollup": "^2.70.1", @@ -52,8 +61,30 @@ "unocss": "^0.29.5", "unplugin-auto-import": "^0.6.6", "unplugin-vue-components": "^0.18.3", + "vite-plugin-optimize-persist": "^0.1.2", + "vite-plugin-package-config": "^0.1.1", "vite-plugin-pages": "^0.22.0", - "vue": "^3.2.31", - "vue-router": "^4.0.14" + "vue-router": "^4.0.14", + "vue": "^3.2.31" + }, + "vite": { + "optimizeDeps": { + "include": [ + "@cypress/vue", + "@faker-js/faker", + "@vueuse/core", + "birpc", + "codemirror", + "codemirror/addon/display/placeholder", + "codemirror/mode/javascript/javascript", + "codemirror/mode/jsx/jsx", + "codemirror/mode/xml/xml", + "d3-graph-controller", + "flatted", + "floating-vue", + "splitpanes", + "vue-router" + ] + } } } diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index f264cd9af614..0c424c62653b 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -1,4 +1,7 @@ { + "compilerOptions": { + "jsx": "preserve" + }, "extends": "../../tsconfig.json", "exclude": ["dist", "node_modules"] } diff --git a/packages/ui/vite.config.ts b/packages/ui/vite.config.ts index 81fa3be9e7df..b83f1b4a3044 100644 --- a/packages/ui/vite.config.ts +++ b/packages/ui/vite.config.ts @@ -1,4 +1,5 @@ import { resolve } from 'pathe' +import type { UserConfig } from 'vite' import { defineConfig } from 'vite' import Vue from '@vitejs/plugin-vue' import Components from 'unplugin-vue-components/vite' @@ -6,8 +7,10 @@ import AutoImport from 'unplugin-auto-import/vite' import Unocss from 'unocss/vite' import Pages from 'vite-plugin-pages' import { presetAttributify, presetIcons, presetUno } from 'unocss' +import OptimizationPersist from 'vite-plugin-optimize-persist' +import PkgConfig from 'vite-plugin-package-config' -export default defineConfig({ +export const config: UserConfig = { root: __dirname, base: '/__vitest__/', resolve: { @@ -51,6 +54,10 @@ export default defineConfig({ '@vueuse/core', ], }), + // @ts-expect-error Unsure why this is not working -- it's what the documentation says to do + PkgConfig.default(), + // @ts-expect-error Unsure why this is not working -- it's what the documentation says to do + OptimizationPersist.default(), ], build: { outDir: './dist/client', @@ -60,4 +67,6 @@ export default defineConfig({ 'vue', ], }, -}) +} + +export default defineConfig(config) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20f8537950f4..16712f1f1ddd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -511,17 +511,24 @@ importers: packages/ui: specifiers: + '@cypress/vite-dev-server': ^2.2.2 + '@cypress/vue': ^3.1.0 + '@faker-js/faker': ^6.0.0 '@types/codemirror': ^5.60.5 '@types/d3-force': ^3.0.3 '@types/d3-selection': ^3.0.2 '@types/ws': ^8.5.3 '@unocss/reset': ^0.29.5 '@vitejs/plugin-vue': ^2.2.4 + '@vitejs/plugin-vue-jsx': ^1.3.3 '@vitest/ws-client': workspace:* '@vueuse/core': ^8.1.2 + birpc: ^0.1.0 codemirror: ^5.65.2 codemirror-theme-vars: ^0.1.1 + cypress: ^9.5.0 d3-graph-controller: ^2.2.18 + flatted: ^3.2.4 floating-vue: ^2.0.0-y.0 picocolors: ^1.0.0 rollup: ^2.70.1 @@ -530,23 +537,32 @@ importers: unocss: ^0.29.5 unplugin-auto-import: ^0.6.6 unplugin-vue-components: ^0.18.3 + vite-plugin-optimize-persist: ^0.1.2 + vite-plugin-package-config: ^0.1.1 vite-plugin-pages: ^0.22.0 vue: ^3.2.31 vue-router: ^4.0.14 dependencies: sirv: 2.0.2 devDependencies: + '@cypress/vite-dev-server': 2.2.2_vite@2.8.6 + '@cypress/vue': 3.1.1_cypress@9.5.2+vue@3.2.31 + '@faker-js/faker': 6.0.0 '@types/codemirror': 5.60.5 '@types/d3-force': 3.0.3 '@types/d3-selection': 3.0.2 '@types/ws': 8.5.3 '@unocss/reset': 0.29.5 '@vitejs/plugin-vue': 2.2.4_vite@2.8.6+vue@3.2.31 + '@vitejs/plugin-vue-jsx': 1.3.8 '@vitest/ws-client': link:../ws-client '@vueuse/core': 8.1.2_vue@3.2.31 + birpc: 0.1.0 codemirror: 5.65.2 codemirror-theme-vars: 0.1.1 + cypress: 9.5.2 d3-graph-controller: 2.2.18 + flatted: 3.2.5 floating-vue: 2.0.0-y.0_vue@3.2.31 picocolors: 1.0.0 rollup: 2.70.1 @@ -554,6 +570,8 @@ importers: unocss: 0.29.5_c8@7.11.0 unplugin-auto-import: 0.6.6_73f6e52589c96176909b0b21d540c529 unplugin-vue-components: 0.18.3_0be41b1e4c88d6dd73f19956d981a243 + vite-plugin-optimize-persist: 0.1.2_a1550960605565b5b85a92b18b9c086e + vite-plugin-package-config: 0.1.1_vite@2.8.6 vite-plugin-pages: 0.22.0_vite@2.8.6 vue: 3.2.31 vue-router: 4.0.14_vue@3.2.31 @@ -3615,6 +3633,73 @@ packages: minimist: 1.2.5 dev: true + /@cypress/mount-utils/1.0.2: + resolution: {integrity: sha512-Fn3fdTiyayHoy8Ol0RSu4MlBH2maQ2ZEXeEVKl/zHHXEQpld5HX3vdNLhK5YLij8cLynA4DxOT/nO9iEnIiOXw==} + dev: true + + /@cypress/request/2.88.10: + resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==} + engines: {node: '>= 6'} + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + http-signature: 1.3.6 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.34 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + dev: true + + /@cypress/vite-dev-server/2.2.2_vite@2.8.6: + resolution: {integrity: sha512-02y/Fm0N+CQjKbSjjRtktPgPbp91kOvtc8+WW2l2odIYQkKlG6IOCpmgc898muW0lBAcCszdEIHR/ItdZDiYPw==} + peerDependencies: + vite: '>= 2.1.3' + dependencies: + debug: 4.3.3 + get-port: 5.1.1 + vite: 2.8.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@cypress/vue/3.1.1_cypress@9.5.2+vue@3.2.31: + resolution: {integrity: sha512-wD1vunuPFPLC8FZtgwdq+mcSEOs27qquuJJdGcY8aAN0y38rqYuuaj+N4UxKoAjhkSwthaOeZehjBtvDvv9C6w==} + engines: {node: '>=8'} + peerDependencies: + '@cypress/webpack-dev-server': '*' + babel-loader: '*' + cypress: '>=7.0.0' + vue: '>=3.0.0' + peerDependenciesMeta: + '@cypress/webpack-dev-server': + optional: true + babel-loader: + optional: true + dependencies: + '@cypress/mount-utils': 1.0.2 + '@vue/test-utils': 2.0.0-rc.18_vue@3.2.31 + cypress: 9.5.2 + vue: 3.2.31 + dev: true + + /@cypress/xvfb/1.2.4: + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + dependencies: + debug: 3.2.7 + lodash.once: 4.1.1 + dev: true + /@date-io/core/2.13.1: resolution: {integrity: sha512-pVI9nfkf2qClb2Cxdq0Q4zJhdawMG4ybWZUVGifT78FDwzRMX2SwXBb55s5NRJk0HcIicDuxktmCtemZqMH1Zg==} dev: false @@ -3916,6 +4001,11 @@ packages: - supports-color dev: true + /@faker-js/faker/6.0.0: + resolution: {integrity: sha512-10zLCKhp3YEmBuko71ivcMoIZcCLXgQVck6aNswX+AWwaek/L8S3yz9i8m3tHigRkcF6F2vI+qtdtyySHK+bGA==} + engines: {node: '>=14.0.0', npm: '>=7.0.0'} + dev: true + /@floating-ui/core/0.3.1: resolution: {integrity: sha512-ensKY7Ub59u16qsVIFEo2hwTCqZ/r9oZZFh51ivcLGHfUwTn8l1Xzng8RJUe91H/UP8PeqeBronAGx0qmzwk2g==} dev: true @@ -6875,6 +6965,10 @@ packages: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} dev: true + /@types/sizzle/2.3.3: + resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + dev: true + /@types/source-list-map/0.1.2: resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} dev: true @@ -7800,6 +7894,11 @@ packages: engines: {node: '>=6'} dev: true + /ansi-colors/4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + /ansi-escapes/4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -7897,6 +7996,10 @@ packages: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} dev: true + /arch/2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + /are-we-there-yet/2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} @@ -8056,6 +8159,17 @@ packages: safer-buffer: 2.1.2 dev: true + /asn1/0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=} + engines: {node: '>=0.8'} + dev: true + /assert/1.5.0: resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} dependencies: @@ -8078,6 +8192,11 @@ packages: tslib: 2.3.1 dev: true + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + /async-each/1.0.3: resolution: {integrity: sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==} dev: true @@ -8087,6 +8206,10 @@ packages: resolution: {integrity: sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=} dev: true + /async/3.2.3: + resolution: {integrity: sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==} + dev: true + /asynckit/0.4.0: resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} dev: true @@ -8120,6 +8243,14 @@ packages: engines: {node: '>= 0.4'} dev: true + /aws-sign2/0.7.0: + resolution: {integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=} + dev: true + + /aws4/1.11.0: + resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + dev: true + /axios/0.26.1: resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} dependencies: @@ -8379,6 +8510,12 @@ packages: resolution: {integrity: sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=} dev: true + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=} + dependencies: + tweetnacl: 0.14.5 + dev: true + /better-opn/2.1.1: resolution: {integrity: sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==} engines: {node: '>8.0.0'} @@ -8425,6 +8562,10 @@ packages: readable-stream: 3.6.0 dev: true + /blob-util/2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + dev: true + /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true @@ -8748,6 +8889,11 @@ packages: unset-value: 1.0.0 dev: true + /cachedir/2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + dev: true + /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -8876,6 +9022,11 @@ packages: /check-error/1.0.2: resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} + /check-more-types/2.24.0: + resolution: {integrity: sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=} + engines: {node: '>= 0.8.0'} + dev: true + /cheerio-select/1.5.0: resolution: {integrity: sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==} dependencies: @@ -9029,6 +9180,14 @@ packages: colors: 1.4.0 dev: true + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + /cli-truncate/3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9153,6 +9312,11 @@ packages: engines: {node: '>= 6'} dev: true + /commander/5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true + /commander/6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} @@ -9317,6 +9481,10 @@ packages: requiresBuild: true dev: true + /core-util-is/1.0.2: + resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} + dev: true + /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true @@ -9559,6 +9727,56 @@ packages: resolution: {integrity: sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=} dev: true + /cypress/9.5.2: + resolution: {integrity: sha512-gYiQYvJozMzDOriUV1rCt6CeRM/pRK4nhwGJj3nJQyX2BoUdTCVwp30xDMKc771HiNVhBtgj5o5/iBdVDVXQUg==} + engines: {node: '>=12.0.0'} + hasBin: true + requiresBuild: true + dependencies: + '@cypress/request': 2.88.10 + '@cypress/xvfb': 1.2.4 + '@types/node': 14.18.5 + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.3 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.3.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.1 + commander: 5.1.0 + common-tags: 1.8.2 + dayjs: 1.11.0 + debug: 4.3.3_supports-color@8.1.1 + enquirer: 2.3.6 + eventemitter2: 6.4.5 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1_supports-color@8.1.1 + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0_enquirer@2.3.6 + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.5 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.3.5 + supports-color: 8.1.1 + tmp: 0.2.1 + untildify: 4.0.0 + yauzl: 2.10.0 + dev: true + /d3-array/2.12.1: resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} dependencies: @@ -9688,6 +9906,13 @@ packages: d3-transition: 3.0.1_d3-selection@3.0.0 dev: true + /dashdash/1.14.1: + resolution: {integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + /data-uri-to-buffer/4.0.0: resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} engines: {node: '>= 12'} @@ -9707,6 +9932,10 @@ packages: engines: {node: '>=0.11'} dev: true + /dayjs/1.11.0: + resolution: {integrity: sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug==} + dev: true + /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} dependencies: @@ -9731,6 +9960,19 @@ packages: ms: 2.1.2 dev: true + /debug/4.3.3_supports-color@8.1.1: + resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + /decimal.js-light/2.5.1: resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} dev: false @@ -10035,6 +10277,13 @@ packages: stream-shift: 1.0.1 dev: true + /ecc-jsbn/0.1.2: + resolution: {integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + /ee-first/1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: true @@ -10123,6 +10372,13 @@ packages: tapable: 1.1.3 dev: true + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.1 + dev: true + /entities/2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true @@ -11426,6 +11682,10 @@ packages: engines: {node: '>= 0.6'} dev: true + /eventemitter2/6.4.5: + resolution: {integrity: sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==} + dev: true + /eventemitter3/4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false @@ -11459,6 +11719,21 @@ packages: strip-eof: 1.0.0 dev: true + /execa/4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + /execa/5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -11489,6 +11764,13 @@ packages: strip-final-newline: 3.0.0 dev: true + /executable/4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true + /expand-brackets/2.1.4: resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=} engines: {node: '>=0.10.0'} @@ -11594,6 +11876,25 @@ packages: - supports-color dev: true + /extract-zip/2.0.1_supports-color@8.1.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.3_supports-color@8.1.1 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.9.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf/1.3.0: + resolution: {integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=} + engines: {'0': node >=0.6.0} + dev: true + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -11868,6 +12169,10 @@ packages: signal-exit: 3.0.6 dev: true + /forever-agent/0.6.1: + resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} + dev: true + /fork-ts-checker-webpack-plugin/4.1.6: resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} engines: {node: '>=6.11.5', yarn: '>=1.0.0'} @@ -11913,6 +12218,15 @@ packages: webpack: 4.46.0 dev: true + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.34 + dev: true + /form-data/2.5.1: resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} engines: {node: '>= 0.12'} @@ -12127,6 +12441,11 @@ packages: engines: {node: '>=4'} dev: true + /get-port/5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + dev: true + /get-stream/4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -12159,6 +12478,18 @@ packages: engines: {node: '>=0.10.0'} dev: true + /getos/3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + dependencies: + async: 3.2.3 + dev: true + + /getpass/0.1.7: + resolution: {integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=} + dependencies: + assert-plus: 1.0.0 + dev: true + /github-slugger/1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} dev: true @@ -12226,6 +12557,13 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /global-dirs/3.0.0: + resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + dev: true + /global/4.4.0: resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} dependencies: @@ -12677,6 +13015,15 @@ packages: '@types/node': 10.17.60 dev: true + /http-signature/1.3.6: + resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.17.0 + dev: true + /https-browserify/1.0.0: resolution: {integrity: sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=} dev: true @@ -12705,6 +13052,11 @@ packages: - supports-color dev: true + /human-signals/1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -12811,6 +13163,11 @@ packages: /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /ini/2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: true + /inline-style-parser/0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: true @@ -12963,6 +13320,13 @@ packages: ci-info: 2.0.0 dev: true + /is-ci/3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.3.0 + dev: true + /is-core-module/2.8.0: resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} dependencies: @@ -13076,6 +13440,14 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true + /is-installed-globally/0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.0 + is-path-inside: 3.0.3 + dev: true + /is-interactive/1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -13124,6 +13496,11 @@ packages: resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} dev: true + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-plain-obj/2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} @@ -13305,6 +13682,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /isstream/0.1.2: + resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} + dev: true + /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} @@ -13473,6 +13854,10 @@ packages: argparse: 2.0.1 dev: true + /jsbn/0.1.1: + resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} + dev: true + /jsdom/19.0.0: resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} engines: {node: '>=12'} @@ -13549,6 +13934,10 @@ packages: resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} dev: true + /json-stringify-safe/5.0.1: + resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + dev: true + /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true @@ -13597,6 +13986,16 @@ packages: engines: {node: '>=0.10.0'} dev: true + /jsprim/2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + /jsx-ast-utils/3.2.0: resolution: {integrity: sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==} engines: {node: '>=4.0'} @@ -13658,6 +14057,11 @@ packages: /kolorist/1.5.1: resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==} + /lazy-ass/1.6.0: + resolution: {integrity: sha1-eZllXoZGwX8In90YfRUNMyTVRRM=} + engines: {node: '> 0.8'} + dev: true + /lazy-universal-dotenv/3.0.1: resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'} @@ -13693,6 +14097,26 @@ packages: /lines-and-columns/1.1.6: resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=} + /listr2/3.14.0_enquirer@2.3.6: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.16 + enquirer: 2.3.6 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.5.5 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + /lit-element/3.2.0: resolution: {integrity: sha512-HbE7yt2SnUtg5DCrWt028oaU4D5F4k/1cntAFHTkzY8ZIa8N0Wmu92PxSxucsQSOXlODFrICkQ5x/tEshKi13g==} dependencies: @@ -13820,6 +14244,10 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.once/4.1.1: + resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} + dev: true + /lodash.sortby/4.7.0: resolution: {integrity: sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=} dev: true @@ -13843,6 +14271,16 @@ packages: is-unicode-supported: 0.1.0 dev: true + /log-update/4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + /log-update/5.0.0: resolution: {integrity: sha512-HovF3knyZX9sleS0OkSJ6f53JEpbzcbomC6/WJ3iuGK8i6CRb6WZ542gO2F3pdQK8hwlijddDefVFhlMpwkOSQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -14900,6 +15338,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /ospath/1.2.2: + resolution: {integrity: sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=} + dev: true + /outvariant/1.2.1: resolution: {integrity: sha512-bcILvFkvpMXh66+Ubax/inxbKRyWTUiiFIW2DWkiS79wakrLGn3Ydy+GvukadiyfZjaL6C7YhIem4EZSM282wA==} dev: true @@ -15247,6 +15689,11 @@ packages: hasBin: true dev: true + /pify/2.3.0: + resolution: {integrity: sha1-7RQaasBDqEnqWISY59yosVMw6Qw=} + engines: {node: '>=0.10.0'} + dev: true + /pify/3.0.0: resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} engines: {node: '>=4'} @@ -15599,6 +16046,10 @@ packages: ipaddr.js: 1.9.1 dev: true + /proxy-from-env/1.0.0: + resolution: {integrity: sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=} + dev: true + /proxy-from-env/1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true @@ -15692,6 +16143,11 @@ packages: side-channel: 1.0.4 dev: true + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + /qs/6.9.6: resolution: {integrity: sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==} engines: {node: '>=0.6'} @@ -16424,6 +16880,12 @@ packages: engines: {node: '>=0.10'} dev: true + /request-progress/3.0.0: + resolution: {integrity: sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=} + dependencies: + throttleit: 1.0.0 + dev: true + /require-directory/2.1.1: resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} @@ -16499,6 +16961,10 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + /rifm/0.12.1_react@17.0.2: resolution: {integrity: sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==} peerDependencies: @@ -16664,6 +17130,12 @@ packages: tslib: 2.1.0 dev: true + /rxjs/7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} + dependencies: + tslib: 2.3.1 + dev: true + /sade/1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -16970,6 +17442,24 @@ packages: engines: {node: '>=8'} dev: true + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + /slice-ansi/5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -17248,6 +17738,22 @@ packages: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} dev: true + /sshpk/1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + /ssri/6.0.2: resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} dependencies: @@ -17553,6 +18059,13 @@ packages: has-flag: 4.0.0 dev: true + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -17820,6 +18333,10 @@ packages: engines: {node: '>=10'} dev: true + /throttleit/1.0.0: + resolution: {integrity: sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=} + dev: true + /through/2.3.8: resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} dev: true @@ -17859,6 +18376,13 @@ packages: os-tmpdir: 1.0.2 dev: true + /tmp/0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + dev: true + /tmpl/1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true @@ -17921,6 +18445,14 @@ packages: resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} engines: {node: '>=6'} + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + dev: true + /tough-cookie/4.0.0: resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} engines: {node: '>=6'} @@ -18032,6 +18564,16 @@ packages: resolution: {integrity: sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=} dev: true + /tunnel-agent/0.6.0: + resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl/0.14.5: + resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=} + dev: true + /type-check/0.3.2: resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} engines: {node: '>= 0.8.0'} @@ -18457,6 +18999,11 @@ packages: isobject: 3.0.1 dev: true + /untildify/4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + /upath/1.2.0: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} @@ -18588,6 +19135,11 @@ packages: hasBin: true dev: true + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + /v8-compile-cache/2.2.0: resolution: {integrity: sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==} dev: true @@ -18617,6 +19169,15 @@ packages: resolution: {integrity: sha512-JELqCo7nYOe/NL6Qkm1m6F52/VkjtYNtc8xtjep1fV7T7Dxrv5CaBva0HLf01SXpqfRk57EG0NlrnZ0TFjYS+Q==} dev: true + /verror/1.10.0: + resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + /vfile-location/3.2.0: resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==} dev: true @@ -18667,6 +19228,31 @@ packages: vite: 2.8.6 dev: true + /vite-plugin-optimize-persist/0.1.2_a1550960605565b5b85a92b18b9c086e: + resolution: {integrity: sha512-H/Ebn2kZO8PvwUF08SsT5K5xMJNCWKoGX71+e9/ER3yNj7GHiFjNQlvGg5ih/zEx09MZ9m7WCxOwmEKbeIVzww==} + peerDependencies: + vite: ^2.0.0 + vite-plugin-package-config: ^0.1.0 + dependencies: + debug: 4.3.3 + fs-extra: 10.0.1 + vite: 2.8.6 + vite-plugin-package-config: 0.1.1_vite@2.8.6 + transitivePeerDependencies: + - supports-color + dev: true + + /vite-plugin-package-config/0.1.1_vite@2.8.6: + resolution: {integrity: sha512-w9B3I8ZnqoyhlbzimXjXNk85imrMZgvI9m8f6j3zonK5IVA5KXzpT+PZOHlDz8lqh1vqvoEI1uhy+ZDoLAiA/w==} + peerDependencies: + vite: ^2.0.0 + dependencies: + debug: 4.3.3 + vite: 2.8.6 + transitivePeerDependencies: + - supports-color + dev: true + /vite-plugin-pages/0.22.0_vite@2.8.6: resolution: {integrity: sha512-OeCtSKoQNjrjtlNgkF4JTU0UdiZsa0cSQJKFyRoUz5KMbGoXR8O29BB2fZx9tMSBPyQJgGvIpzdoofLDaRNcQQ==} peerDependencies: @@ -19335,6 +19921,15 @@ packages: microevent.ts: 0.1.1 dev: true + /wrap-ansi/6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} diff --git a/test/global-setup/test/global-setup.test.ts b/test/global-setup/test/global-setup.test.ts index 79cda5af1256..f7d0df0843f7 100644 --- a/test/global-setup/test/global-setup.test.ts +++ b/test/global-setup/test/global-setup.test.ts @@ -1,4 +1,5 @@ import fetch from 'node-fetch' +import { expect } from 'vitest' beforeEach(async() => { await new Promise((resolve) => { diff --git a/test/global-setup/test/setup-files.test.ts b/test/global-setup/test/setup-files.test.ts index 10a22220baf5..e40a0ff41fe0 100644 --- a/test/global-setup/test/setup-files.test.ts +++ b/test/global-setup/test/setup-files.test.ts @@ -1,3 +1,4 @@ +import { expect } from 'vitest' test('something has been added to global by setupFiles entry', async() => { // @ts-expect-error type diff --git a/test/snapshots/test/shapshots.test.ts b/test/snapshots/test/shapshots.test.ts index eaf2644b9d76..e9bc4f1d71ca 100644 --- a/test/snapshots/test/shapshots.test.ts +++ b/test/snapshots/test/shapshots.test.ts @@ -1,3 +1,5 @@ +import { expect } from 'vitest' + const println = () => { const message = ` export default function () { @@ -27,10 +29,10 @@ test('multiline strings ', () => { test('updateInlineSnapshot should not remove end whitespace', () => { // issue #922 expect(` -my string +my string `).toMatchInlineSnapshot(` " - my string + my string " `) -}) \ No newline at end of file +})