diff --git a/.github/workflows/cypress.yml b/.github/workflows/tests.yml
similarity index 55%
rename from .github/workflows/cypress.yml
rename to .github/workflows/tests.yml
index 494cedb..108ddd4 100644
--- a/.github/workflows/cypress.yml
+++ b/.github/workflows/tests.yml
@@ -1,4 +1,4 @@
-name: Cypress UI tests
+name: Tests
on:
push:
@@ -7,9 +7,17 @@ on:
merge_group:
pull_request:
+env:
+ VITE_PORT: 3000
+ VITE_API_HOST: http://localhost:3636
+ VITE_GRAASP_APP_KEY: id-1234567890
+ VITE_ENABLE_MOCK_API: true
+ VITE_VERSION: ci-tests
+ CI: true
+
jobs:
- cypress-run:
- concurrency: cypress-${{ github.head_ref || github.ref }}
+ run-tests:
+ concurrency: tests-${{ github.head_ref || github.ref }}
runs-on: ubuntu-latest
steps:
- name: Checkout
@@ -17,45 +25,41 @@ jobs:
- name: Yarn Install and Cache
uses: graasp/graasp-deploy/.github/actions/yarn-install-and-cache@v1
- with:
- cypress: true
+
+ - name: Install Playwright Browsers
+ run: npx playwright install --with-deps
- name: Build App
run: yarn build:test
shell: bash
env:
- VITE_PORT: 3000
- VITE_API_HOST: http://localhost:3636
- VITE_GRAASP_APP_KEY: id-1234567890
- VITE_ENABLE_MOCK_API: true
- VITE_VERSION: cypress-tests
+ VITE_PORT: ${{ env.VITE_PORT }}
+ VITE_API_HOST: ${{ env.VITE_API_HOST }}
+ VITE_GRAASP_APP_KEY: ${{ env.VITE_GRAASP_APP_KEY }}
+ VITE_ENABLE_MOCK_API: ${{ env.VITE_ENABLE_MOCK_API }}
+ VITE_VERSION: ${{ env.VITE_VERSION }}
+ CI: ${{ env.CI }}
- name: Vitest Run
- run: yarn vitest
+ run: yarn unittest
shell: bash
- - name: Cypress Run
- uses: cypress-io/github-action@v5
+ - name: Playwright Run
+ run: yarn playwright
+ shell: bash
env:
- VITE_PORT: 3000
- VITE_API_HOST: http://localhost:3636
- VITE_GRAASP_APP_KEY: id-1234567890
- VITE_ENABLE_MOCK_API: true
- VITE_VERSION: cypress-tests
- with:
- install: false
- config: baseUrl=http://localhost:3000
- start: yarn preview:test
- browser: chrome
- quiet: true
- # point to new cypress@10 config file
- config-file: cypress.config.ts
+ VITE_PORT: ${{ env.VITE_PORT }}
+ VITE_API_HOST: ${{ env.VITE_API_HOST }}
+ VITE_GRAASP_APP_KEY: ${{ env.VITE_GRAASP_APP_KEY }}
+ VITE_ENABLE_MOCK_API: ${{ env.VITE_ENABLE_MOCK_API }}
+ VITE_VERSION: ${{ env.VITE_VERSION }}
+ CI: ${{ env.CI }}
- uses: actions/upload-artifact@v4
if: failure()
with:
- name: cypress-screenshots
- path: cypress/screenshots
+ name: playwright-report
+ path: playwright-report
- name: coverage report
run: npx nyc report --reporter=text-summary
diff --git a/.gitignore b/.gitignore
index 3061c42..0ae9422 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,7 +37,8 @@ yarn-debug.log*
.vscode/*
!.vscode/settings.json
-# cypress
-cypress/screenshots/
-cypress/videos/
-cypress/downloads/
+# Playwright
+/test-results/
+/playwright-report/
+/blob-report/
+/playwright/.cache/
diff --git a/cypress.config.ts b/cypress.config.ts
deleted file mode 100644
index 2f975bc..0000000
--- a/cypress.config.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import registerCodeCoverage from '@cypress/code-coverage/task';
-import { defineConfig } from 'cypress';
-
-export default defineConfig({
- video: false,
-
- e2e: {
- env: {
- VITE_API_HOST: process.env.VITE_API_HOST,
- VITE_ENABLE_MOCK_API: process.env.VITE_ENABLE_MOCK_API,
- VITE_GRAASP_APP_KEY: process.env.VITE_GRAASP_APP_KEY,
- },
- retries: { runMode: 1, openMode: 0 },
- // We've imported your old cypress plugins here.
- // You may want to clean this up later by importing these.
- setupNodeEvents(on, config) {
- registerCodeCoverage(on, config);
- return config;
- },
- baseUrl: `http://localhost:${process.env.VITE_PORT || 4001}`,
- },
-
- component: {
- devServer: {
- framework: 'react',
- bundler: 'vite',
- },
- },
-});
diff --git a/cypress/e2e/analytics/main.cy.ts b/cypress/e2e/analytics/main.cy.ts
deleted file mode 100644
index 93dd224..0000000
--- a/cypress/e2e/analytics/main.cy.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Context, PermissionLevel } from '@graasp/sdk';
-
-import { ANALYTICS_VIEW_CY, buildDataCy } from '../../../src/config/selectors';
-
-describe('Analytics View', () => {
- beforeEach(() => {
- cy.setUpApi(
- {},
- {
- context: Context.Analytics,
- permission: PermissionLevel.Admin,
- },
- );
- cy.visit('/');
- });
-
- it('App', () => {
- cy.get(buildDataCy(ANALYTICS_VIEW_CY)).should(
- 'contain.text',
- 'Analytics as admin',
- );
- });
-});
diff --git a/cypress/e2e/builder/main.cy.ts b/cypress/e2e/builder/main.cy.ts
deleted file mode 100644
index 8965659..0000000
--- a/cypress/e2e/builder/main.cy.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Context, PermissionLevel } from '@graasp/sdk';
-
-import { BUILDER_VIEW_CY, buildDataCy } from '../../../src/config/selectors';
-
-describe('Builder View', () => {
- beforeEach(() => {
- cy.setUpApi(
- {},
- {
- context: Context.Builder,
- permission: PermissionLevel.Read,
- },
- );
- cy.visit('/');
- });
-
- it('App', () => {
- cy.get(buildDataCy(BUILDER_VIEW_CY)).should(
- 'contain.text',
- 'Builder as read',
- );
- });
-});
diff --git a/cypress/e2e/player/main.cy.ts b/cypress/e2e/player/main.cy.ts
deleted file mode 100644
index 91942ad..0000000
--- a/cypress/e2e/player/main.cy.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Context, PermissionLevel } from '@graasp/sdk';
-
-import { PLAYER_VIEW_CY, buildDataCy } from '../../../src/config/selectors';
-
-describe('Player View', () => {
- beforeEach(() => {
- cy.setUpApi(
- {},
- {
- context: Context.Player,
- permission: PermissionLevel.Write,
- },
- );
- cy.visit('/');
- });
-
- it('App', () => {
- cy.get(buildDataCy(PLAYER_VIEW_CY)).should('be.visible');
- });
-});
diff --git a/cypress/fixtures/members.ts b/cypress/fixtures/members.ts
deleted file mode 100644
index 00f3f71..0000000
--- a/cypress/fixtures/members.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Member, MemberType } from '@graasp/sdk';
-
-export const MEMBERS: { [key: string]: Member } = {
- ANNA: {
- id: '0f0a2774-a965-4b97-afb4-bccc3796e060',
- name: 'anna',
- type: MemberType.Individual,
- email: 'anna@graasp.org',
- extra: {},
- createdAt: new Date(),
- updatedAt: new Date(),
- },
- BOB: {
- id: '1f0a2774-a965-4b97-afb4-bccc3796e060',
- name: 'bob',
- type: MemberType.Individual,
- email: 'bob@graasp.org',
- extra: {},
- createdAt: new Date(),
- updatedAt: new Date(),
- },
-};
-
-export const CURRENT_MEMBER = MEMBERS.ANNA;
diff --git a/cypress/fixtures/mockItem.ts b/cypress/fixtures/mockItem.ts
deleted file mode 100644
index 9bddc8d..0000000
--- a/cypress/fixtures/mockItem.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { MEMBERS } from './members';
-
-export const MOCK_SERVER_ITEM = {
- id: '123456789',
- name: 'app-starter-ts-vite',
- description: null,
- path: '',
- settings: {},
- creator: MEMBERS[0],
- createdAt: new Date(),
- updatedAt: new Date(),
-};
diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts
deleted file mode 100644
index 3c39d3f..0000000
--- a/cypress/support/commands.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-///
-import { Database, LocalContext } from '@graasp/apps-query-client';
-
-import { CURRENT_MEMBER, MEMBERS } from '../fixtures/members';
-import { MOCK_SERVER_ITEM } from '../fixtures/mockItem';
-
-declare global {
- // eslint-disable-next-line @typescript-eslint/no-namespace
- namespace Cypress {
- interface Chainable {
- /**
- * Custom command to select DOM element by data-cy attribute.
- * @example cy.dataCy('greeting')
- */
- setUpApi(
- database: Partial,
- appContext: Partial,
- ): void;
- }
- }
-}
-
-Cypress.Commands.add('setUpApi', (database, appContext) => {
- Cypress.on('window:before:load', (win: Window) => {
- win.indexedDB.deleteDatabase('graasp-app-cypress');
- // eslint-disable-next-line no-param-reassign
- win.appContext = {
- memberId: CURRENT_MEMBER.id,
- itemId: MOCK_SERVER_ITEM.id,
- apiHost: Cypress.env('VITE_API_HOST'),
- ...appContext,
- };
- // eslint-disable-next-line no-param-reassign
- win.database = {
- appData: [],
- appActions: [],
- appSettings: [],
- members: Object.values(MEMBERS),
- items: [MOCK_SERVER_ITEM],
- ...database,
- };
- });
-});
diff --git a/cypress/support/component-index.html b/cypress/support/component-index.html
deleted file mode 100644
index e39ba42..0000000
--- a/cypress/support/component-index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Components App
-
-
-
-
-
diff --git a/cypress/support/component.ts b/cypress/support/component.ts
deleted file mode 100644
index e0516b6..0000000
--- a/cypress/support/component.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-// ***********************************************************
-// This example support/component.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:
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
-import { mount } from 'cypress/react18';
-
-import './commands';
-
-// Augment the Cypress namespace to include type definitions for
-// your custom command.
-// Alternatively, can be defined in cypress/support/component.d.ts
-// with a at the top of your spec.
-declare global {
- // eslint-disable-next-line @typescript-eslint/no-namespace
- namespace Cypress {
- interface Chainable {
- mount: typeof mount;
- }
- }
-}
-
-Cypress.Commands.add('mount', mount);
-
-// Example use:
-// cy.mount()
diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts
deleted file mode 100644
index 1782114..0000000
--- a/cypress/support/e2e.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-// ***********************************************************
-// This example support/index.js 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 '@cypress/code-coverage/support';
-
-import './commands';
-
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
-
-// ignore Resize Observer errors
-// eslint-disable-next-line consistent-return
-Cypress.on('uncaught:exception', (err) => {
- /* returning false here prevents Cypress from failing the test */
- if (/ResizeObserver/.test(err.message)) {
- return false;
- }
-});
diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json
deleted file mode 100644
index 24c28a0..0000000
--- a/cypress/tsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extends": "../tsconfig.eslint.json",
- "compilerOptions": {
- "target": "es5",
- "lib": ["es5", "dom"],
- "types": ["cypress", "node"],
- "esModuleInterop": true
- },
- "include": ["**/*.ts"]
-}
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 14f177e..4d114b5 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -31,6 +31,7 @@ export default [
'**/.nyc_output',
'**/.yarn',
'**/commitlint.config.cjs',
+ 'playwright-report/**/*',
],
},
...fixupConfigRules(
@@ -39,7 +40,6 @@ export default [
'airbnb-typescript',
'plugin:import/typescript',
'prettier',
- 'plugin:cypress/recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:@typescript-eslint/recommended',
diff --git a/package.json b/package.json
index 9147e90..c1f9f7e 100644
--- a/package.json
+++ b/package.json
@@ -45,25 +45,25 @@
"preview:test": "yarn vite preview --mode test",
"postinstall": "husky install",
"lint": "eslint .",
- "prettier:write": "prettier {src,cypress}/**/*.{ts,tsx,js,jsx} --write",
- "prettier:check": "prettier {src,cypress}/**/*.{ts,tsx,js,jsx} --check",
+ "prettier:write": "prettier src/**/*.{ts,tsx,js,jsx} --write",
+ "prettier:check": "prettier src/**/*.{ts,tsx,js,jsx} --check",
"type-check": "tsc --noEmit",
"check": "yarn lint && yarn prettier:check && yarn type-check",
"hooks:install": "husky install",
"hooks:uninstall": "husky uninstall",
"pre-commit": "yarn prettier:check && yarn lint",
- "cypress:open": "env-cmd -f ./.env.test cypress open",
- "test": "concurrently -k -s first \"yarn start:test\" \"yarn test:ci\" ",
- "test:ci": "env-cmd -f ./.env.test cypress run --browser chrome --headless && nyc report --reporter=text --reporter=text-summary",
+ "playwright": "playwright test --project chromium",
+ "playwright:ui": "playwright test --ui",
+ "unittest": "vitest",
"cov:report": "open ./coverage/lcov-report/index.html"
},
"devDependencies": {
"@commitlint/cli": "19.5.0",
"@commitlint/config-conventional": "19.5.0",
- "@cypress/code-coverage": "3.13.4",
"@eslint/compat": "^1.2.0",
"@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.12.0",
+ "@playwright/test": "^1.49.0",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/i18n": "0.13.12",
"@types/papaparse": "^5.3.15",
@@ -74,7 +74,7 @@
"@vitejs/plugin-react": "^4.2.1",
"axios": "1.7.7",
"concurrently": "8.2.2",
- "cypress": "13.15.1",
+ "dotenv": "^16.4.5",
"env-cmd": "10.1.0",
"eslint": "9.13.0",
"eslint-config-airbnb": "19.0.4",
@@ -82,7 +82,6 @@
"eslint-config-prettier": "9.1.0",
"eslint-config-react-app": "7.0.1",
"eslint-import-resolver-typescript": "^3.6.1",
- "eslint-plugin-cypress": "4.0.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-jsx-a11y": "6.10.2",
"eslint-plugin-prettier": "5.2.1",
@@ -92,6 +91,7 @@
"husky": "9.1.6",
"nock": "^13.5.3",
"nyc": "17.1.0",
+ "playwright-test-coverage": "^1.2.12",
"prettier": "3.3.3",
"three-stdlib": "2.33.0",
"uuid": "9.0.1",
diff --git a/playwright.config.ts b/playwright.config.ts
new file mode 100644
index 0000000..07481cb
--- /dev/null
+++ b/playwright.config.ts
@@ -0,0 +1,83 @@
+import { defineConfig, devices } from '@playwright/test';
+
+/**
+ * Read environment variables from file.
+ * https://github.com/motdotla/dotenv
+ */
+// import 'dotenv/config';
+import dotenv from 'dotenv';
+import path from 'path';
+
+dotenv.config({ path: path.resolve(process.cwd(), '.env.test') });
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+export default defineConfig({
+ testDir: './tests',
+ /* Run tests in files in parallel */
+ fullyParallel: true,
+ /* Fail the build on CI if you accidentally left test.only in the source code. */
+ forbidOnly: !!process.env.CI,
+ /* Retry on CI only */
+ retries: process.env.CI ? 2 : 0,
+ /* Opt out of parallel tests on CI. */
+ workers: process.env.CI ? 1 : undefined,
+ /* Reporter to use. See https://playwright.dev/docs/test-reporters */
+ reporter: 'html',
+ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
+ use: {
+ /* Base URL to use in actions like `await page.goto('/')`. */
+ baseURL: `http://localhost:${process.env.VITE_PORT || 4001}`,
+
+ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
+ trace: 'on-first-retry',
+ },
+
+ /* Configure projects for major browsers */
+ projects: [
+ {
+ name: 'chromium',
+ use: { ...devices['Desktop Chrome'] },
+ },
+
+ {
+ name: 'firefox',
+ use: { ...devices['Desktop Firefox'] },
+ },
+
+ {
+ name: 'webkit',
+ use: { ...devices['Desktop Safari'] },
+ },
+
+ /* Test against mobile viewports. */
+ // {
+ // name: 'Mobile Chrome',
+ // use: { ...devices['Pixel 5'] },
+ // },
+ // {
+ // name: 'Mobile Safari',
+ // use: { ...devices['iPhone 12'] },
+ // },
+
+ /* Test against branded browsers. */
+ // {
+ // name: 'Microsoft Edge',
+ // use: { ...devices['Desktop Edge'], channel: 'msedge' },
+ // },
+ // {
+ // name: 'Google Chrome',
+ // use: { ...devices['Desktop Chrome'], channel: 'chrome' },
+ // },
+ ],
+
+ /* Run your local dev server before starting the tests */
+ webServer: {
+ command: 'yarn start:test --no-open',
+ url: `http://localhost:${process.env.VITE_PORT || 4001}`,
+ stdout: 'ignore',
+ stderr: 'ignore',
+ reuseExistingServer: true,
+ },
+});
diff --git a/renovate.json b/renovate.json
index 61ad54a..c4c6d7f 100644
--- a/renovate.json
+++ b/renovate.json
@@ -6,7 +6,7 @@
"packageRules": [
{
"matchDepTypes": ["devDependencies"],
- "matchPackagePatterns": ["lint", "prettier", "vite", "cypress", "commitlint", "axios", "concurrently", "env"],
+ "matchPackagePatterns": ["lint", "prettier", "vite", "commitlint", "axios", "concurrently", "env"],
"automerge": true
},
{
diff --git a/src/config/env.ts b/src/config/env.ts
index 4e1546d..439f759 100644
--- a/src/config/env.ts
+++ b/src/config/env.ts
@@ -6,7 +6,7 @@ const {
VITE_GA_MEASUREMENT_ID,
VITE_ENABLE_MOCK_API,
VITE_API_HOST,
-} = window.Cypress ? Cypress.env() : import.meta.env;
+} = import.meta.env;
export const MOCK_API = VITE_ENABLE_MOCK_API === 'true';
export const GA_MEASUREMENT_ID = VITE_GA_MEASUREMENT_ID;
diff --git a/src/config/sentry.ts b/src/config/sentry.ts
index 100fdee..8a68cfd 100644
--- a/src/config/sentry.ts
+++ b/src/config/sentry.ts
@@ -18,8 +18,8 @@ export const generateSentryConfig = (): SentryConfigType => {
const PROD_REPLAY_SAMPLE_RATE = 0.1;
return {
- // dsn is set only when not running inside cypress
- dsn: (!window.Cypress && SENTRY_DSN) || '',
+ // dsn is set only when not running inside a test
+ dsn: (!navigator.webdriver && SENTRY_DSN) || '',
environment: SENTRY_ENV,
tracesSampleRate: import.meta.env.PROD
? PROD_TRACE_SAMPLE_RATE
diff --git a/src/context/HouseComponentsContext.tsx b/src/context/HouseComponentsContext.tsx
index f0171fb..be037fa 100644
--- a/src/context/HouseComponentsContext.tsx
+++ b/src/context/HouseComponentsContext.tsx
@@ -156,7 +156,7 @@ export const HouseComponentsProvider = ({ children }: Props): ReactNode => {
const insulationName =
component.insulationName as keyof (typeof HouseInsulationPerComponent)[T];
- const currMaterials = HOUSE_INSULATIONS[componentType][insulationName];
+ const currMaterials = component.buildingMaterials;
if (!currMaterials?.length) {
throw new Error(
diff --git a/src/main.tsx b/src/main.tsx
index 906c56c..c29d367 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -20,15 +20,15 @@ Sentry.init({
...generateSentryConfig(),
});
-// setup mocked api for cypress or standalone app
+// setup mocked api for playwright or standalone app
+// navigator.webdriver allows to determine if its in playwright if needed
/* istanbul ignore next */
if (MOCK_API) {
mockApi(
{
externalUrls: [],
- dbName: window.Cypress ? 'graasp-app-cypress' : undefined,
- appContext: window.Cypress ? window.appContext : defaultMockContext,
- database: window.Cypress ? window.database : buildDatabase(mockMembers),
+ appContext: defaultMockContext,
+ database: buildDatabase(mockMembers),
},
MockSolution.ServiceWorker,
);
diff --git a/src/modules/Root.tsx b/src/modules/Root.tsx
index ce3541a..6e551eb 100644
--- a/src/modules/Root.tsx
+++ b/src/modules/Root.tsx
@@ -87,9 +87,7 @@ const Root: FC = () => {
}
useGetLocalContext={hooks.useGetLocalContext}
useAutoResize={hooks.useAutoResize}
diff --git a/src/modules/main/App.tsx b/src/modules/main/App.tsx
index f196660..6933fa2 100644
--- a/src/modules/main/App.tsx
+++ b/src/modules/main/App.tsx
@@ -21,6 +21,7 @@ const App = (): JSX.Element => {
}
}, [context]);
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
const renderContent = (): JSX.Element => {
switch (context.context) {
case Context.Builder:
@@ -35,7 +36,11 @@ const App = (): JSX.Element => {
}
};
- return {renderContent()};
+ return (
+
+
+
+ );
};
export default App;
diff --git a/src/modules/scenes/SimulationControlPanel/MaterialControlDialog/FormControlValidator.tsx b/src/modules/scenes/SimulationControlPanel/MaterialControlDialog/FormControlValidator.tsx
index 1722922..aab71cc 100644
--- a/src/modules/scenes/SimulationControlPanel/MaterialControlDialog/FormControlValidator.tsx
+++ b/src/modules/scenes/SimulationControlPanel/MaterialControlDialog/FormControlValidator.tsx
@@ -126,7 +126,14 @@ export const FormControlValidator = ({
) : undefined
}
/>
- {error && {error}}
+ {error && (
+
+ {error}
+
+ )}
);
};
diff --git a/src/modules/scenes/SimulationControlPanel/WindowControlDialog/WindowControlDialog.tsx b/src/modules/scenes/SimulationControlPanel/WindowControlDialog/WindowControlDialog.tsx
index fabf845..547d36a 100644
--- a/src/modules/scenes/SimulationControlPanel/WindowControlDialog/WindowControlDialog.tsx
+++ b/src/modules/scenes/SimulationControlPanel/WindowControlDialog/WindowControlDialog.tsx
@@ -81,7 +81,7 @@ export const WindowControlDialog = ({
{t('SIZE_LABEL')}
-
+
{t('CURRENT_SIZE_LABEL')}{' '}
{formatComponentSize({ componentSize: windowComponent.size })}
diff --git a/src/window.d.ts b/src/window.d.ts
index a4861d7..71bae2b 100644
--- a/src/window.d.ts
+++ b/src/window.d.ts
@@ -1,7 +1,6 @@
declare global {
interface Window {
appContext: LocalContext;
- Cypress: boolean;
database: Database;
apiErrors: object;
}
diff --git a/tests/player/HousePage.ts b/tests/player/HousePage.ts
new file mode 100644
index 0000000..2a8fe8d
--- /dev/null
+++ b/tests/player/HousePage.ts
@@ -0,0 +1,47 @@
+import { Page, expect } from '@playwright/test';
+
+import { MaterialEditorPage } from './MaterialEditorPage';
+import { WindowEditorPage } from './WindowEditorPage';
+
+// Page Object for the house configuration page
+export class HousePage {
+ readonly page: Page;
+
+ constructor(page: Page) {
+ this.page = page;
+ }
+
+ async goto(): Promise {
+ await this.page.goto('/');
+ }
+
+ async selectWindowInsulation(newInsulation: string): Promise {
+ await this.page.getByLabel('Windows Insulation').click();
+ await this.page.getByRole('option', { name: newInsulation }).click();
+ await expect(
+ this.page.getByRole('combobox', { name: 'Windows Insulation' }),
+ ).toHaveText(newInsulation);
+ }
+
+ async selectWallInsulation(newInsulation: string): Promise {
+ await this.page.getByLabel('Wall Insulation').click();
+ await this.page.getByRole('option', { name: newInsulation }).click();
+ await expect(
+ this.page.getByRole('combobox', { name: 'Wall Insulation' }),
+ ).toHaveText(newInsulation);
+ }
+
+ async openMaterialEditor(): Promise {
+ const button = this.page.getByLabel('House').getByRole('button').first();
+ await button.click();
+
+ return new MaterialEditorPage(this.page);
+ }
+
+ async openWindowEditor(): Promise {
+ const button = this.page.getByLabel('House').getByRole('button').nth(1);
+ await button.click();
+
+ return new WindowEditorPage(this.page);
+ }
+}
diff --git a/tests/player/MaterialEditorPage.ts b/tests/player/MaterialEditorPage.ts
new file mode 100644
index 0000000..46eee6d
--- /dev/null
+++ b/tests/player/MaterialEditorPage.ts
@@ -0,0 +1,42 @@
+import { Locator, Page, expect } from '@playwright/test';
+
+// Page Object for the material editor (modal)
+export class MaterialEditorPage {
+ private readonly page: Page;
+
+ readonly materialPrice: Locator;
+
+ readonly materialThickness: Locator;
+
+ constructor(page: Page) {
+ this.page = page;
+ this.materialPrice = this.page.getByLabel('Price');
+ this.materialThickness = this.page.getByLabel('Thickness');
+ }
+
+ async selectTab(tabName: string): Promise {
+ await this.page.getByRole('tab', { name: tabName }).click();
+ }
+
+ async setMaterialPrice(price: string): Promise {
+ await this.materialPrice.fill(price);
+ await expect(this.materialPrice).toHaveValue(price);
+ }
+
+ async setMaterialThickness(thickness: string): Promise {
+ await this.materialThickness.fill(thickness);
+ await expect(this.materialThickness).toHaveValue(thickness);
+ }
+
+ async close(): Promise {
+ await this.page.getByRole('button', { name: 'Close' }).click();
+ }
+
+ async checkErrorIsVisible(
+ label: string,
+ type: 'Required' | 'Min' | 'Max',
+ ): Promise {
+ const errorId = `error-${label.toLowerCase()}-${type.toLowerCase()}`;
+ await expect(this.page.getByTestId(errorId)).toBeVisible();
+ }
+}
diff --git a/tests/player/WindowEditorPage.ts b/tests/player/WindowEditorPage.ts
new file mode 100644
index 0000000..4cace65
--- /dev/null
+++ b/tests/player/WindowEditorPage.ts
@@ -0,0 +1,43 @@
+import { Locator, Page, expect } from '@playwright/test';
+
+import { WindowSizeType } from '../../src/context/WindowSizeContext';
+
+// Page Object for the window editor (modal)
+export class WindowEditorPage {
+ private readonly page: Page;
+
+ private readonly closeButton: Locator;
+
+ constructor(page: Page) {
+ this.page = page;
+ this.closeButton = this.page.getByRole('button', { name: 'Close' });
+ }
+
+ async getWindowSizeHelper(size: WindowSizeType = 'Medium'): Promise {
+ return this.page.getByTestId(`window-size-helper-${size.toLowerCase()}`);
+ }
+
+ async selectWindowSize(
+ newSize: WindowSizeType,
+ currentSize: WindowSizeType = 'Medium',
+ ): Promise {
+ await this.page.getByLabel(currentSize).click();
+ await this.page.getByRole('option', { name: newSize }).click();
+
+ await expect(
+ this.page.getByRole('combobox', { name: 'Window Size' }),
+ ).toHaveText(newSize);
+ }
+
+ async checkIsOpen(): Promise {
+ await expect(this.closeButton).toBeVisible();
+ }
+
+ async checkIsClosed(): Promise {
+ await expect(this.closeButton).not.toBeVisible();
+ }
+
+ async close(): Promise {
+ await this.closeButton.click();
+ }
+}
diff --git a/tests/player/wall-insulation.spec.ts b/tests/player/wall-insulation.spec.ts
new file mode 100644
index 0000000..abd68fc
--- /dev/null
+++ b/tests/player/wall-insulation.spec.ts
@@ -0,0 +1,176 @@
+import { expect, test } from 'playwright-test-coverage';
+
+import { HousePage } from './HousePage';
+
+test('should change the wall insulation', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+ await housePage.selectWallInsulation('Fiberglass');
+});
+
+test('should only update the aerogel material', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ let materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialPrice('100');
+ await materialEditor.setMaterialThickness('1');
+
+ // expect Brick haven't been changed
+ await materialEditor.selectTab('Brick');
+
+ await expect(materialEditor.materialPrice).not.toHaveValue('100');
+ await expect(materialEditor.materialThickness).not.toHaveValue('1');
+
+ await materialEditor.close();
+ materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+
+ // expect Price and Thickness or Aergoel have not been reset
+ await expect(materialEditor.materialPrice).toHaveValue('100');
+ await expect(materialEditor.materialThickness).toHaveValue('1');
+});
+
+test('should update all the materials without reset', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.setMaterialPrice('10');
+ await materialEditor.setMaterialThickness('50');
+
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialPrice('100');
+ await materialEditor.setMaterialThickness('1');
+
+ await materialEditor.selectTab('Brick');
+ // expect Price and Thickness have not been reset
+ await expect(materialEditor.materialPrice).toHaveValue('10');
+ await expect(materialEditor.materialThickness).toHaveValue('50');
+
+ await materialEditor.selectTab('Aerogel');
+ // expect Price and Thickness have not been reset
+ await expect(materialEditor.materialPrice).toHaveValue('100');
+ await expect(materialEditor.materialThickness).toHaveValue('1');
+});
+
+test('price should accept numbers only', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.materialPrice.click();
+ await materialEditor.materialPrice.pressSequentially('Not a number');
+ await expect(materialEditor.materialPrice).toHaveValue('');
+});
+
+test('price should not be empty', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialPrice('150');
+ await materialEditor.materialPrice.fill('');
+
+ await materialEditor.checkErrorIsVisible('price', 'Required');
+
+ await materialEditor.selectTab('Brick');
+ await materialEditor.selectTab('Aerogel');
+ await expect(materialEditor.materialPrice).toHaveValue('150');
+});
+
+test('price should not be negative', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialPrice('150');
+ await materialEditor.setMaterialPrice('-1');
+
+ await materialEditor.checkErrorIsVisible('price', 'Min');
+
+ await materialEditor.selectTab('Brick');
+ await materialEditor.selectTab('Aerogel');
+ await expect(materialEditor.materialPrice).toHaveValue('150');
+});
+
+test('price should not exceed max value', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialPrice('150');
+ await materialEditor.setMaterialPrice('1000000000');
+
+ await materialEditor.checkErrorIsVisible('price', 'Max');
+
+ await materialEditor.selectTab('Brick');
+ await materialEditor.selectTab('Aerogel');
+ await expect(materialEditor.materialPrice).toHaveValue('150');
+});
+
+test('thickness should accept numbers only', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.materialThickness.click();
+ await materialEditor.materialThickness.pressSequentially('Not a number');
+ await expect(materialEditor.materialThickness).toHaveValue('');
+});
+
+test('thickness should not be empty', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialThickness('25');
+ await materialEditor.materialThickness.fill('');
+
+ await materialEditor.checkErrorIsVisible('thickness', 'Required');
+
+ await materialEditor.selectTab('Brick');
+ await materialEditor.selectTab('Aerogel');
+ await expect(materialEditor.materialThickness).toHaveValue('25');
+});
+
+test('thickness should not be negative or 0', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialThickness('25');
+ await materialEditor.setMaterialThickness('-1');
+
+ await materialEditor.checkErrorIsVisible('thickness', 'Min');
+
+ await materialEditor.setMaterialThickness('0');
+
+ await materialEditor.selectTab('Brick');
+ await materialEditor.selectTab('Aerogel');
+ await expect(materialEditor.materialThickness).toHaveValue('25');
+});
+
+test('thickness should not exceed max value', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const materialEditor = await housePage.openMaterialEditor();
+ await materialEditor.selectTab('Aerogel');
+ await materialEditor.setMaterialThickness('25');
+ await materialEditor.setMaterialThickness('100');
+
+ await materialEditor.checkErrorIsVisible('thickness', 'Max');
+
+ await materialEditor.selectTab('Brick');
+ await materialEditor.selectTab('Aerogel');
+ await expect(materialEditor.materialThickness).toHaveValue('25');
+});
diff --git a/tests/player/window-insulation.spec.ts b/tests/player/window-insulation.spec.ts
new file mode 100644
index 0000000..7cc94e0
--- /dev/null
+++ b/tests/player/window-insulation.spec.ts
@@ -0,0 +1,36 @@
+import { expect, test } from 'playwright-test-coverage';
+
+import { HousePage } from './HousePage';
+
+test('should change the window insulation', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+ await housePage.selectWindowInsulation('Triple Pane');
+});
+
+test('changing window size should update the size helper label', async ({
+ page,
+}) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+ await housePage.selectWindowInsulation('Single Pane');
+
+ const windowEditorPage = await housePage.openWindowEditor();
+ await expect(await windowEditorPage.getWindowSizeHelper()).toBeVisible();
+ await windowEditorPage.selectWindowSize('Small');
+
+ await expect(await windowEditorPage.getWindowSizeHelper()).not.toBeVisible();
+ await expect(
+ await windowEditorPage.getWindowSizeHelper('Small'),
+ ).toBeVisible();
+});
+
+test('close button should close the modal', async ({ page }) => {
+ const housePage = new HousePage(page);
+ await housePage.goto();
+
+ const windowEditorPage = await housePage.openWindowEditor();
+ await windowEditorPage.checkIsOpen();
+ await windowEditorPage.close();
+ await windowEditorPage.checkIsClosed();
+});
diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json
index 08695d3..a850a15 100644
--- a/tsconfig.eslint.json
+++ b/tsconfig.eslint.json
@@ -3,10 +3,9 @@
"include": [
"vite.config.ts",
"eslint.config.mjs",
- "cypress.config.ts",
+ "playwright.config.ts",
"src/**/*.tsx",
"src/**/*.ts",
- "test/**/*.ts",
- "cypress/**/*.ts"
+ "tests/**/*.ts"
]
}
diff --git a/tsconfig.json b/tsconfig.json
index a79374c..f0fc551 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -16,7 +16,7 @@
"noEmit": true,
"jsx": "react-jsx",
"typeRoots": ["node_modules", "node_modules/@types", "./src/@types"],
- "types": ["vite/client", "cypress"],
+ "types": ["vite/client"],
"baseUrl": "./src",
"paths": {
"@/*": ["./*"],
diff --git a/vite.config.ts b/vite.config.ts
index f602e06..de58ed0 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,9 +1,10 @@
///
import react from '@vitejs/plugin-react';
import { resolve } from 'path';
-import { UserConfigExport, defineConfig, loadEnv } from 'vite';
+import { loadEnv } from 'vite';
import checker from 'vite-plugin-checker';
import istanbul from 'vite-plugin-istanbul';
+import { UserConfigExport, defineConfig } from 'vitest/config';
// https://vitejs.dev/config/
export default ({ mode }: { mode: string }): UserConfigExport => {
@@ -20,7 +21,7 @@ export default ({ mode }: { mode: string }): UserConfigExport => {
port: parseInt(process.env.VITE_PORT, 10) || 4001,
open: mode !== 'test', // open only when mode is different from test
watch: {
- ignored: ['**/coverage/**', '**/cypress/downloads/**'],
+ ignored: ['**/coverage/**'],
},
},
preview: {
@@ -59,6 +60,9 @@ export default ({ mode }: { mode: string }): UserConfigExport => {
checkProd: true,
}),
],
+ test: {
+ include: ['**/*.test.ts'],
+ },
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
diff --git a/yarn.lock b/yarn.lock
index e3e3e55..04aa741 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -88,7 +88,7 @@ __metadata:
languageName: node
linkType: hard
-"@babel/core@npm:^7.16.0, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.9, @babel/core@npm:^7.7.5":
+"@babel/core@npm:^7.16.0, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.9":
version: 7.25.2
resolution: "@babel/core@npm:7.25.2"
dependencies:
@@ -1961,13 +1961,6 @@ __metadata:
languageName: node
linkType: hard
-"@colors/colors@npm:1.5.0":
- version: 1.5.0
- resolution: "@colors/colors@npm:1.5.0"
- checksum: 10/9d226461c1e91e95f067be2bdc5e6f99cfe55a721f45afb44122e23e4b8602eeac4ff7325af6b5a369f36396ee1514d3809af3f57769066d80d83790d8e53339
- languageName: node
- linkType: hard
-
"@commitlint/cli@npm:19.5.0":
version: 19.5.0
resolution: "@commitlint/cli@npm:19.5.0"
@@ -2159,81 +2152,6 @@ __metadata:
languageName: node
linkType: hard
-"@cypress/code-coverage@npm:3.13.4":
- version: 3.13.4
- resolution: "@cypress/code-coverage@npm:3.13.4"
- dependencies:
- "@cypress/webpack-preprocessor": "npm:^6.0.0"
- chalk: "npm:4.1.2"
- dayjs: "npm:1.11.13"
- debug: "npm:4.3.7"
- execa: "npm:4.1.0"
- globby: "npm:11.1.0"
- istanbul-lib-coverage: "npm:^3.0.0"
- js-yaml: "npm:4.1.0"
- nyc: "npm:15.1.0"
- peerDependencies:
- "@babel/core": ^7.0.1
- "@babel/preset-env": ^7.0.0
- babel-loader: ^8.3 || ^9
- cypress: "*"
- webpack: ^4 || ^5
- checksum: 10/7525b39fd1122c9888a4fd940c5a56b650bd41ede65f95419c6dc74e2157d61fd716a9669040da8e3ed15c5e6b3ddeb978c52b45b140e4522ae3df9d2343b6e6
- languageName: node
- linkType: hard
-
-"@cypress/request@npm:^3.0.4":
- version: 3.0.5
- resolution: "@cypress/request@npm:3.0.5"
- 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:~4.0.0"
- http-signature: "npm:~1.4.0"
- 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.13.0"
- safe-buffer: "npm:^5.1.2"
- tough-cookie: "npm:^4.1.3"
- tunnel-agent: "npm:^0.6.0"
- uuid: "npm:^8.3.2"
- checksum: 10/41ea0de43c8be1f22b82ad8728505c8a155b8ac38be34fe404fbf1872aa631e7a990c913a5ceb4ef0e7c0d3ddd1b59f1637400379f1a50f6f79c7e70cb551574
- languageName: node
- linkType: hard
-
-"@cypress/webpack-preprocessor@npm:^6.0.0":
- version: 6.0.2
- resolution: "@cypress/webpack-preprocessor@npm:6.0.2"
- dependencies:
- bluebird: "npm:3.7.1"
- debug: "npm:^4.3.4"
- lodash: "npm:^4.17.20"
- peerDependencies:
- "@babel/core": ^7.0.1
- "@babel/preset-env": ^7.0.0
- babel-loader: ^8.3 || ^9
- webpack: ^4 || ^5
- checksum: 10/da98d36a4f4ee106b13c03e3e86d2345c4c909fc73913897117477e2b690ab4be838d655c95aa8175f52434dca6c12ff4f7357702bd93616634b57cb354429b4
- 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: 10/cb995b069f8c4f1e7857049bda0bd73a58e0048ccaf276ef0e66d1e1c03ba6fa099b5d765ad12ea37a7e5b7685f7413a2b9a99b27891407565b915f4a2f919a7
- languageName: node
- linkType: hard
-
"@emotion/babel-plugin@npm:^11.11.0, @emotion/babel-plugin@npm:^11.12.0":
version: 11.12.0
resolution: "@emotion/babel-plugin@npm:11.12.0"
@@ -3504,6 +3422,17 @@ __metadata:
languageName: node
linkType: hard
+"@playwright/test@npm:^1.49.0":
+ version: 1.49.0
+ resolution: "@playwright/test@npm:1.49.0"
+ dependencies:
+ playwright: "npm:1.49.0"
+ bin:
+ playwright: cli.js
+ checksum: 10/e87485ab4c02b6dc0bc20a43ea3965c949c45caa4e7f5beea4a0abd29be0a318662931e887072db0d165f8dde93709b97ea1b2c6f4c833b403aa13427d76dd22
+ languageName: node
+ linkType: hard
+
"@popperjs/core@npm:^2.11.8":
version: 2.11.8
resolution: "@popperjs/core@npm:2.11.8"
@@ -4716,20 +4645,6 @@ __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: 10/567e01159b07eb19a56aa9a619bda963a3e2c1261b197b83fc664867228ce679e189450f0ae38483a08857155f94d9ae5d88e72c0f44f269103f63c2946a73ed
- languageName: node
- linkType: hard
-
-"@types/sizzle@npm:^2.3.2":
- version: 2.3.8
- resolution: "@types/sizzle@npm:2.3.8"
- checksum: 10/2ac62443dc917f5f903cbd9afc51c7d6cc1c6569b4e1a15faf04aea5b13b486e7f208650014c3dc4fed34653eded3e00fe5abffe0e6300cbf0e8a01beebf11a6
- languageName: node
- linkType: hard
-
"@types/stats.js@npm:*":
version: 0.17.3
resolution: "@types/stats.js@npm:0.17.3"
@@ -4778,15 +4693,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/yauzl@npm:^2.9.1":
- version: 2.10.3
- resolution: "@types/yauzl@npm:2.10.3"
- dependencies:
- "@types/node": "npm:*"
- checksum: 10/5ee966ea7bd6b2802f31ad4281c92c4c0b6dfa593c378a2582c58541fa113bec3d70eb0696b34ad95e8e6861a884cba6c3e351285816693ed176222f840a8c08
- languageName: node
- linkType: hard
-
"@typescript-eslint/eslint-plugin@npm:7.18.0":
version: 7.18.0
resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0"
@@ -5357,13 +5263,6 @@ __metadata:
languageName: node
linkType: hard
-"ansi-colors@npm:^4.1.1":
- version: 4.1.3
- resolution: "ansi-colors@npm:4.1.3"
- checksum: 10/43d6e2fc7b1c6e4dc373de708ee76311ec2e0433e7e8bd3194e7ff123ea6a747428fc61afdcf5969da5be3a5f0fd054602bec56fc0ebe249ce2fcde6e649e3c2
- languageName: node
- linkType: hard
-
"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0":
version: 4.3.2
resolution: "ansi-escapes@npm:4.3.2"
@@ -5445,13 +5344,6 @@ __metadata:
languageName: node
linkType: hard
-"arch@npm:^2.2.0":
- version: 2.2.0
- resolution: "arch@npm:2.2.0"
- checksum: 10/e35dbc6d362297000ab90930069576ba165fe63cd52383efcce14bd66c1b16a91ce849e1fd239964ed029d5e0bdfc32f68e9c7331b7df6c84ddebebfdbf242f7
- languageName: node
- linkType: hard
-
"archy@npm:^1.0.0":
version: 1.0.0
resolution: "archy@npm:1.0.0"
@@ -5617,22 +5509,6 @@ __metadata:
languageName: node
linkType: hard
-"asn1@npm:~0.2.3":
- version: 0.2.6
- resolution: "asn1@npm:0.2.6"
- dependencies:
- safer-buffer: "npm:~2.1.0"
- checksum: 10/cf629291fee6c1a6f530549939433ebf32200d7849f38b810ff26ee74235e845c0c12b2ed0f1607ac17383d19b219b69cefa009b920dab57924c5c544e495078
- languageName: node
- linkType: hard
-
-"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0":
- version: 1.0.0
- resolution: "assert-plus@npm:1.0.0"
- checksum: 10/f4f991ae2df849cc678b1afba52d512a7cbf0d09613ba111e72255409ff9158550c775162a47b12d015d1b82b3c273e8e25df0e4783d3ddb008a293486d00a07
- languageName: node
- linkType: hard
-
"assert@npm:^2.1.0":
version: 2.1.0
resolution: "assert@npm:2.1.0"
@@ -5676,20 +5552,6 @@ __metadata:
languageName: node
linkType: hard
-"astral-regex@npm:^2.0.0":
- version: 2.0.0
- resolution: "astral-regex@npm:2.0.0"
- checksum: 10/876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766
- languageName: node
- linkType: hard
-
-"async@npm:^3.2.0":
- version: 3.2.6
- resolution: "async@npm:3.2.6"
- checksum: 10/cb6e0561a3c01c4b56a799cc8bab6ea5fef45f069ab32500b6e19508db270ef2dffa55e5aed5865c5526e9907b1f8be61b27530823b411ffafb5e1538c86c368
- languageName: node
- linkType: hard
-
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
@@ -5697,13 +5559,6 @@ __metadata:
languageName: node
linkType: hard
-"at-least-node@npm:^1.0.0":
- version: 1.0.0
- resolution: "at-least-node@npm:1.0.0"
- checksum: 10/463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e
- languageName: node
- linkType: hard
-
"available-typed-arrays@npm:^1.0.7":
version: 1.0.7
resolution: "available-typed-arrays@npm:1.0.7"
@@ -5713,20 +5568,6 @@ __metadata:
languageName: node
linkType: hard
-"aws-sign2@npm:~0.7.0":
- version: 0.7.0
- resolution: "aws-sign2@npm:0.7.0"
- checksum: 10/2ac497d739f71be3264cf096a33ab256a1fea7fe80b87dc51ec29374505bd5a661279ef1c22989d68528ea61ed634021ca63b31cf1d3c2a3682ffc106f7d0e96
- languageName: node
- linkType: hard
-
-"aws4@npm:^1.8.0":
- version: 1.13.2
- resolution: "aws4@npm:1.13.2"
- checksum: 10/290b9f84facbad013747725bfd8b4c42d0b3b04b5620d8418f0219832ef95a7dc597a4af7b1589ae7fce18bacde96f40911c3cda36199dd04d9f8e01f72fa50a
- languageName: node
- linkType: hard
-
"axe-core@npm:^4.10.0":
version: 4.10.0
resolution: "axe-core@npm:4.10.0"
@@ -5855,15 +5696,6 @@ __metadata:
languageName: node
linkType: hard
-"bcrypt-pbkdf@npm:^1.0.0":
- version: 1.0.2
- resolution: "bcrypt-pbkdf@npm:1.0.2"
- dependencies:
- tweetnacl: "npm:^0.14.3"
- checksum: 10/13a4cde058250dbf1fa77a4f1b9a07d32ae2e3b9e28e88a0c7a1827835bc3482f3e478c4a0cfd4da6ff0c46dae07da1061123a995372b32cc563d9975f975404
- languageName: node
- linkType: hard
-
"bidi-js@npm:^1.0.2":
version: 1.0.3
resolution: "bidi-js@npm:1.0.3"
@@ -5891,27 +5723,6 @@ __metadata:
languageName: node
linkType: hard
-"blob-util@npm:^2.0.2":
- version: 2.0.2
- resolution: "blob-util@npm:2.0.2"
- checksum: 10/b2c5a20c677f2a6c3821cf13c5522d64af96e666bc40cce6b43f87d16e89a55e2eab2f6264ec3f36d7f810eba848aa7e2bc611e47c14eb6395136c0b0a8b29ea
- languageName: node
- linkType: hard
-
-"bluebird@npm:3.7.1":
- version: 3.7.1
- resolution: "bluebird@npm:3.7.1"
- checksum: 10/2af420fcd493dea6aa2f53007bc511d44cd1da90e31810b405366956e4d9ca1c56f0c6d725e3444d9c59df7cacc9e3390ab52bd7d86c09852464d8a247f59841
- languageName: node
- linkType: hard
-
-"bluebird@npm:^3.7.2":
- version: 3.7.2
- resolution: "bluebird@npm:3.7.2"
- checksum: 10/007c7bad22c5d799c8dd49c85b47d012a1fe3045be57447721e6afbd1d5be43237af1db62e26cb9b0d9ba812d2e4ca3bac82f6d7e016b6b88de06ee25ceb96e7
- languageName: node
- linkType: hard
-
"body-parser@npm:1.20.3":
version: 1.20.3
resolution: "body-parser@npm:1.20.3"
@@ -5981,14 +5792,7 @@ __metadata:
languageName: node
linkType: hard
-"buffer-crc32@npm:~0.2.3":
- version: 0.2.13
- resolution: "buffer-crc32@npm:0.2.13"
- checksum: 10/06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c
- languageName: node
- linkType: hard
-
-"buffer@npm:^5.5.0, buffer@npm:^5.7.1":
+"buffer@npm:^5.5.0":
version: 5.7.1
resolution: "buffer@npm:5.7.1"
dependencies:
@@ -6042,13 +5846,6 @@ __metadata:
languageName: node
linkType: hard
-"cachedir@npm:^2.3.0":
- version: 2.4.0
- resolution: "cachedir@npm:2.4.0"
- checksum: 10/43198514eaa61f65b5535ed29ad651f22836fba3868ed58a6a87731f05462f317d39098fa3ac778801c25455483c9b7f32a2fcad1f690a978947431f12a0f4d0
- languageName: node
- linkType: hard
-
"caching-transform@npm:^4.0.0":
version: 4.0.0
resolution: "caching-transform@npm:4.0.0"
@@ -6104,13 +5901,6 @@ __metadata:
languageName: node
linkType: hard
-"caseless@npm:~0.12.0":
- version: 0.12.0
- resolution: "caseless@npm:0.12.0"
- checksum: 10/ea1efdf430975fdbac3505cdd21007f7ac5aa29b6d4d1c091f965853cd1bf87e4b08ea07b31a6d688b038872b7cdf0589d9262d59c699d199585daad052aeb20
- languageName: node
- linkType: hard
-
"chai@npm:^4.3.10":
version: 4.5.0
resolution: "chai@npm:4.5.0"
@@ -6139,16 +5929,6 @@ __metadata:
languageName: node
linkType: hard
-"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2":
- version: 4.1.2
- resolution: "chalk@npm:4.1.2"
- dependencies:
- ansi-styles: "npm:^4.1.0"
- supports-color: "npm:^7.1.0"
- checksum: 10/cb3f3e594913d63b1814d7ca7c9bafbf895f75fbf93b92991980610dfd7b48500af4e3a5d4e3a8f337990a96b168d7eb84ee55efdce965e2ee8efc20f8c8f139
- languageName: node
- linkType: hard
-
"chalk@npm:^2.4.2":
version: 2.4.2
resolution: "chalk@npm:2.4.2"
@@ -6160,6 +5940,16 @@ __metadata:
languageName: node
linkType: hard
+"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2":
+ version: 4.1.2
+ resolution: "chalk@npm:4.1.2"
+ dependencies:
+ ansi-styles: "npm:^4.1.0"
+ supports-color: "npm:^7.1.0"
+ checksum: 10/cb3f3e594913d63b1814d7ca7c9bafbf895f75fbf93b92991980610dfd7b48500af4e3a5d4e3a8f337990a96b168d7eb84ee55efdce965e2ee8efc20f8c8f139
+ languageName: node
+ linkType: hard
+
"chalk@npm:^5.3.0":
version: 5.3.0
resolution: "chalk@npm:5.3.0"
@@ -6190,13 +5980,6 @@ __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: 10/67c5288443bd73a81638e1185f8c5410d0edf6458c086149ef1cda95c07535b5dd5c11c426dc3ee8f0de0f3244aa2d4f2ba1937aaa8a94995589cdcce0bbccb9
- languageName: node
- linkType: hard
-
"chokidar@npm:^3.4.2, chokidar@npm:^3.5.1":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
@@ -6223,13 +6006,6 @@ __metadata:
languageName: node
linkType: hard
-"ci-info@npm:^3.2.0":
- version: 3.9.0
- resolution: "ci-info@npm:3.9.0"
- checksum: 10/75bc67902b4d1c7b435497adeb91598f6d52a3389398e44294f6601b20cfef32cf2176f7be0eb961d9e085bb333a8a5cae121cb22f81cf238ae7f58eb80e9397
- languageName: node
- linkType: hard
-
"clean-stack@npm:^2.0.0":
version: 2.2.0
resolution: "clean-stack@npm:2.2.0"
@@ -6253,29 +6029,6 @@ __metadata:
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: 10/8dca71256f6f1367bab84c33add3f957367c7c43750a9828a4212ebd31b8df76bd7419d386e3391ac7419698a8540c25f1a474584028f35b170841cde2e055c5
- 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: 10/976f1887de067a8cd6ec830a7a8508336aebe6cec79b521d98ed13f67ef073b637f7305675b6247dd22f9e9cf045ec55fe746c7bdb288fbe8db0dfdc9fd52e55
- languageName: node
- linkType: hard
-
"cli-width@npm:^3.0.0":
version: 3.0.0
resolution: "cli-width@npm:3.0.0"
@@ -6365,14 +6118,7 @@ __metadata:
languageName: node
linkType: hard
-"colorette@npm:^2.0.16":
- version: 2.0.20
- resolution: "colorette@npm:2.0.20"
- checksum: 10/0b8de48bfa5d10afc160b8eaa2b9938f34a892530b2f7d7897e0458d9535a066e3998b49da9d21161c78225b272df19ae3a64d6df28b4c9734c0e55bbd02406f
- languageName: node
- linkType: hard
-
-"combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6":
+"combined-stream@npm:^1.0.8":
version: 1.0.8
resolution: "combined-stream@npm:1.0.8"
dependencies:
@@ -6388,13 +6134,6 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^6.2.1":
- version: 6.2.1
- resolution: "commander@npm:6.2.1"
- checksum: 10/25b88c2efd0380c84f7844b39cf18510da7bfc5013692d68cdc65f764a1c34e6c8a36ea6d72b6620e3710a930cf8fab2695bdec2bf7107a0f4fa30a3ef3b7d0e
- languageName: node
- linkType: hard
-
"commander@npm:^8.0.0, commander@npm:^8.3.0":
version: 8.3.0
resolution: "commander@npm:8.3.0"
@@ -6402,13 +6141,6 @@ __metadata:
languageName: node
linkType: hard
-"common-tags@npm:^1.8.0":
- version: 1.8.2
- resolution: "common-tags@npm:1.8.2"
- checksum: 10/c665d0f463ee79dda801471ad8da6cb33ff7332ba45609916a508ad3d77ba07ca9deeb452e83f81f24c2b081e2c1315347f23d239210e63d1c5e1a0c7c019fe2
- languageName: node
- linkType: hard
-
"commondir@npm:^1.0.1":
version: 1.0.1
resolution: "commondir@npm:1.0.1"
@@ -6568,13 +6300,6 @@ __metadata:
languageName: node
linkType: hard
-"core-util-is@npm:1.0.2":
- version: 1.0.2
- resolution: "core-util-is@npm:1.0.2"
- checksum: 10/d0f7587346b44a1fe6c269267e037dd34b4787191e473c3e685f507229d88561c40eb18872fabfff02977301815d474300b7bfbd15396c13c5377393f7e87ec3
- languageName: node
- linkType: hard
-
"cosmiconfig-typescript-loader@npm:^5.0.0":
version: 5.0.0
resolution: "cosmiconfig-typescript-loader@npm:5.0.0"
@@ -6648,59 +6373,6 @@ __metadata:
languageName: node
linkType: hard
-"cypress@npm:13.15.1":
- version: 13.15.1
- resolution: "cypress@npm:13.15.1"
- dependencies:
- "@cypress/request": "npm:^3.0.4"
- "@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.3"
- tree-kill: "npm:1.2.2"
- untildify: "npm:^4.0.0"
- yauzl: "npm:^2.10.0"
- bin:
- cypress: bin/cypress
- checksum: 10/fa822dd7db5283d01b81fbad6278743e63b3bbb9e72e689b5bc92f6d7fbe8f62501d644e3db45fa4a11a810dccebae9c999cc59475a8f3d4c22536f7797e415b
- languageName: node
- linkType: hard
-
"damerau-levenshtein@npm:^1.0.8":
version: 1.0.8
resolution: "damerau-levenshtein@npm:1.0.8"
@@ -6715,15 +6387,6 @@ __metadata:
languageName: node
linkType: hard
-"dashdash@npm:^1.12.0":
- version: 1.14.1
- resolution: "dashdash@npm:1.14.1"
- dependencies:
- assert-plus: "npm:^1.0.0"
- checksum: 10/137b287fa021201ce100cef772c8eeeaaafdd2aa7282864022acf3b873021e54cb809e9c060fa164840bf54ff72d00d6e2d8da1ee5a86d7200eeefa1123a8f7f
- languageName: node
- linkType: hard
-
"data-view-buffer@npm:^1.0.1":
version: 1.0.1
resolution: "data-view-buffer@npm:1.0.1"
@@ -6766,13 +6429,6 @@ __metadata:
languageName: node
linkType: hard
-"dayjs@npm:1.11.13, dayjs@npm:^1.10.4":
- version: 1.11.13
- resolution: "dayjs@npm:1.11.13"
- checksum: 10/7374d63ab179b8d909a95e74790def25c8986e329ae989840bacb8b1888be116d20e1c4eee75a69ea0dfbae13172efc50ef85619d304ee7ca3c01d5878b704f5
- languageName: node
- linkType: hard
-
"debounce@npm:^1.2.1":
version: 1.2.1
resolution: "debounce@npm:1.2.1"
@@ -6789,7 +6445,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:4, debug@npm:4.3.7, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6":
+"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6":
version: 4.3.7
resolution: "debug@npm:4.3.7"
dependencies:
@@ -6801,7 +6457,7 @@ __metadata:
languageName: node
linkType: hard
-"debug@npm:^3.1.0, debug@npm:^3.2.7":
+"debug@npm:^3.2.7":
version: 3.2.7
resolution: "debug@npm:3.2.7"
dependencies:
@@ -7024,7 +6680,7 @@ __metadata:
languageName: node
linkType: hard
-"dotenv@npm:^16.0.0":
+"dotenv@npm:^16.0.0, dotenv@npm:^16.4.5":
version: 16.4.5
resolution: "dotenv@npm:16.4.5"
checksum: 10/55a3134601115194ae0f924e54473459ed0d9fc340ae610b676e248cca45aa7c680d86365318ea964e6da4e2ea80c4514c1adab5adb43d6867fb57ff068f95c8
@@ -7045,16 +6701,6 @@ __metadata:
languageName: node
linkType: hard
-"ecc-jsbn@npm:~0.1.1":
- version: 0.1.2
- resolution: "ecc-jsbn@npm:0.1.2"
- dependencies:
- jsbn: "npm:~0.1.0"
- safer-buffer: "npm:^2.1.0"
- checksum: 10/d43591f2396196266e186e6d6928038cc11c76c3699a912cb9c13757060f7bbc7f17f47c4cb16168cdeacffc7965aef021142577e646fb3cb88810c15173eb57
- languageName: node
- linkType: hard
-
"ee-first@npm:1.1.1":
version: 1.1.1
resolution: "ee-first@npm:1.1.1"
@@ -7106,15 +6752,6 @@ __metadata:
languageName: node
linkType: hard
-"end-of-stream@npm:^1.1.0":
- version: 1.4.4
- resolution: "end-of-stream@npm:1.4.4"
- dependencies:
- once: "npm:^1.4.0"
- checksum: 10/530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b
- languageName: node
- linkType: hard
-
"enhanced-resolve@npm:^5.15.0":
version: 5.17.1
resolution: "enhanced-resolve@npm:5.17.1"
@@ -7125,16 +6762,6 @@ __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: 10/b3726486cd98f0d458a851a03326a2a5dd4d84f37ff94ff2a2960c915e0fc865865da3b78f0877dc36ac5c1189069eca603e82ec63d5bc6b0dd9985bf6426d7a
- languageName: node
- linkType: hard
-
"env-cmd@npm:10.1.0":
version: 10.1.0
resolution: "env-cmd@npm:10.1.0"
@@ -7709,17 +7336,6 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-cypress@npm:4.0.0":
- version: 4.0.0
- resolution: "eslint-plugin-cypress@npm:4.0.0"
- dependencies:
- globals: "npm:^15.11.0"
- peerDependencies:
- eslint: ">=9"
- checksum: 10/54fdac6a9fa2e9a1ae1bfe8b1e2a348b5755150121810e203c21c3164c15fb42faa7e5bdde2bc60f07611d8f9615096c570ad7105f536e47a1f5bb47b1751187
- languageName: node
- linkType: hard
-
"eslint-plugin-flowtype@npm:^8.0.3":
version: 8.0.3
resolution: "eslint-plugin-flowtype@npm:8.0.3"
@@ -8128,13 +7744,6 @@ __metadata:
languageName: node
linkType: hard
-"eventemitter2@npm:6.4.7":
- version: 6.4.7
- resolution: "eventemitter2@npm:6.4.7"
- checksum: 10/df2a733ee3a7ac6e7f6988cebbaac5b14b46bf82f700f1ec86f9e3f3d095dba20f9aa5c29d9d62a6f50fd943f798f7f2a38c4e1b45148f6f7cec7586a8ac6881
- languageName: node
- linkType: hard
-
"eventemitter3@npm:^2.0.3":
version: 2.0.3
resolution: "eventemitter3@npm:2.0.3"
@@ -8149,23 +7758,6 @@ __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: 10/ed58e41fe424797f3d837c8fb622548eeb72fa03324f2676af95f806568904eb55f196127a097f87d4517cab524c169ece13e6c9e201867de57b089584864b8f
- languageName: node
- linkType: hard
-
"execa@npm:^8.0.1":
version: 8.0.1
resolution: "execa@npm:8.0.1"
@@ -8183,15 +7775,6 @@ __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: 10/f01927ce59bccec804e171bf859a26e362c1f50aa9ebc69f7cafdcce3859d29d4b6267fd47237c18b0a1830614bd3f0ee14b7380d9bad18a4e7af9b5f0b6984f
- languageName: node
- linkType: hard
-
"exponential-backoff@npm:^3.1.1":
version: 3.1.1
resolution: "exponential-backoff@npm:3.1.1"
@@ -8238,7 +7821,7 @@ __metadata:
languageName: node
linkType: hard
-"extend@npm:^3.0.2, extend@npm:~3.0.2":
+"extend@npm:^3.0.2":
version: 3.0.2
resolution: "extend@npm:3.0.2"
checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e
@@ -8256,37 +7839,6 @@ __metadata:
languageName: node
linkType: hard
-"extract-zip@npm:2.0.1":
- version: 2.0.1
- resolution: "extract-zip@npm:2.0.1"
- dependencies:
- "@types/yauzl": "npm:^2.9.1"
- debug: "npm:^4.1.1"
- get-stream: "npm:^5.1.0"
- yauzl: "npm:^2.10.0"
- dependenciesMeta:
- "@types/yauzl":
- optional: true
- bin:
- extract-zip: cli.js
- checksum: 10/8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635
- languageName: node
- linkType: hard
-
-"extsprintf@npm:1.3.0":
- version: 1.3.0
- resolution: "extsprintf@npm:1.3.0"
- checksum: 10/26967d6c7ecbfb5bc5b7a6c43503dc5fafd9454802037e9fa1665e41f615da4ff5918bd6cb871a3beabed01a31eca1ccd0bdfb41231f50ad50d405a430f78377
- languageName: node
- linkType: hard
-
-"extsprintf@npm:^1.2.0":
- version: 1.4.1
- resolution: "extsprintf@npm:1.4.1"
- checksum: 10/bfd6d55f3c0c04d826fe0213264b383c03f32825af6b1ff777f3f2dc49467e599361993568d75b7b19a8ea1bb08c8e7cd8c3d87d179ced91bb0dcf81ca6938e0
- languageName: node
- linkType: hard
-
"fake-xml-http-request@npm:^2.1.2":
version: 2.1.2
resolution: "fake-xml-http-request@npm:2.1.2"
@@ -8365,15 +7917,6 @@ __metadata:
languageName: node
linkType: hard
-"fd-slicer@npm:~1.1.0":
- version: 1.1.0
- resolution: "fd-slicer@npm:1.1.0"
- dependencies:
- pend: "npm:~1.2.0"
- checksum: 10/db3e34fa483b5873b73f248e818f8a8b59a6427fd8b1436cd439c195fdf11e8659419404826059a642b57d18075c856d06d6a50a1413b714f12f833a9341ead3
- languageName: node
- linkType: hard
-
"fflate@npm:^0.6.9":
version: 0.6.10
resolution: "fflate@npm:0.6.10"
@@ -8388,7 +7931,7 @@ __metadata:
languageName: node
linkType: hard
-"figures@npm:^3.0.0, figures@npm:^3.2.0":
+"figures@npm:^3.0.0":
version: 3.2.0
resolution: "figures@npm:3.2.0"
dependencies:
@@ -8559,14 +8102,7 @@ __metadata:
languageName: node
linkType: hard
-"forever-agent@npm:~0.6.1":
- version: 0.6.1
- resolution: "forever-agent@npm:0.6.1"
- checksum: 10/c1e1644d5e074ac063ecbc3fb8582013ef91fff0e3fa41e76db23d2f62bc6d9677aac86db950917deed4fe1fdd772df780cfaa352075f23deec9c015313afb97
- languageName: node
- linkType: hard
-
-"form-data@npm:^4.0.0, form-data@npm:~4.0.0":
+"form-data@npm:^4.0.0":
version: 4.0.0
resolution: "form-data@npm:4.0.0"
dependencies:
@@ -8620,18 +8156,6 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:^9.1.0":
- version: 9.1.0
- resolution: "fs-extra@npm:9.1.0"
- dependencies:
- at-least-node: "npm:^1.0.0"
- graceful-fs: "npm:^4.2.0"
- jsonfile: "npm:^6.0.1"
- universalify: "npm:^2.0.0"
- checksum: 10/08600da1b49552ed23dfac598c8fc909c66776dd130fea54fbcad22e330f7fcc13488bb995f6bc9ce5651aa35b65702faf616fe76370ee56f1aade55da982dca
- languageName: node
- linkType: hard
-
"fs-minipass@npm:^2.0.0":
version: 2.1.0
resolution: "fs-minipass@npm:2.1.0"
@@ -8657,12 +8181,31 @@ __metadata:
languageName: node
linkType: hard
-"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3":
- version: 2.3.3
- resolution: "fsevents@npm:2.3.3"
+"fsevents@npm:2.3.2":
+ version: 2.3.2
+ resolution: "fsevents@npm:2.3.2"
+ dependencies:
+ node-gyp: "npm:latest"
+ checksum: 10/6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
+"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3":
+ version: 2.3.3
+ resolution: "fsevents@npm:2.3.3"
+ dependencies:
+ node-gyp: "npm:latest"
+ checksum: 10/4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0
+ conditions: os=darwin
+ languageName: node
+ linkType: hard
+
+"fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin":
+ version: 2.3.2
+ resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1"
dependencies:
node-gyp: "npm:latest"
- checksum: 10/4c1ade961ded57cdbfbb5cac5106ec17bc8bccd62e16343c569a0ceeca83b9dfef87550b4dc5cbb89642da412b20c5071f304c8c464b80415446e8e155a038c0
conditions: os=darwin
languageName: node
linkType: hard
@@ -8743,15 +8286,6 @@ __metadata:
languageName: node
linkType: hard
-"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0":
- version: 5.2.0
- resolution: "get-stream@npm:5.2.0"
- dependencies:
- pump: "npm:^3.0.0"
- checksum: 10/13a73148dca795e41421013da6e3ebff8ccb7fba4d2f023fd0c6da2c166ec4e789bec9774a73a7b49c08daf2cae552f8a3e914042ac23b5f59dd278cc8f9cbfb
- languageName: node
- linkType: hard
-
"get-stream@npm:^8.0.1":
version: 8.0.1
resolution: "get-stream@npm:8.0.1"
@@ -8779,24 +8313,6 @@ __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: 10/228bede057f5cbed93dc6a66ce459a0364059faa2869682547663302f612e6295f13d3ad2a54ebbed573a9eb7f8124508b24409df6bcda6e15906c357526d11f
- languageName: node
- linkType: hard
-
-"getpass@npm:^0.1.1":
- version: 0.1.7
- resolution: "getpass@npm:0.1.7"
- dependencies:
- assert-plus: "npm:^1.0.0"
- checksum: 10/ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046
- languageName: node
- linkType: hard
-
"git-raw-commits@npm:^4.0.0":
version: 4.0.0
resolution: "git-raw-commits@npm:4.0.0"
@@ -8878,15 +8394,6 @@ __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: 10/70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438
- languageName: node
- linkType: hard
-
"globals@npm:^11.1.0":
version: 11.12.0
resolution: "globals@npm:11.12.0"
@@ -8918,7 +8425,7 @@ __metadata:
languageName: node
linkType: hard
-"globby@npm:11.1.0, globby@npm:^11.1.0":
+"globby@npm:^11.1.0":
version: 11.1.0
resolution: "globby@npm:11.1.0"
dependencies:
@@ -8954,7 +8461,6 @@ __metadata:
dependencies:
"@commitlint/cli": "npm:19.5.0"
"@commitlint/config-conventional": "npm:19.5.0"
- "@cypress/code-coverage": "npm:3.13.4"
"@emotion/react": "npm:11.13.3"
"@emotion/styled": "npm:11.13.0"
"@eslint/compat": "npm:^1.2.0"
@@ -8966,6 +8472,7 @@ __metadata:
"@mui/icons-material": "npm:5.16.7"
"@mui/lab": "npm:5.0.0-alpha.173"
"@mui/material": "npm:5.16.7"
+ "@playwright/test": "npm:^1.49.0"
"@react-three/drei": "npm:^9.114.4"
"@react-three/fiber": "npm:^8.17.10"
"@sentry/react": "npm:7.119.2"
@@ -8984,7 +8491,7 @@ __metadata:
"@vitejs/plugin-react": "npm:^4.2.1"
axios: "npm:1.7.7"
concurrently: "npm:8.2.2"
- cypress: "npm:13.15.1"
+ dotenv: "npm:^16.4.5"
env-cmd: "npm:10.1.0"
eslint: "npm:9.13.0"
eslint-config-airbnb: "npm:19.0.4"
@@ -8992,7 +8499,6 @@ __metadata:
eslint-config-prettier: "npm:9.1.0"
eslint-config-react-app: "npm:7.0.1"
eslint-import-resolver-typescript: "npm:^3.6.1"
- eslint-plugin-cypress: "npm:4.0.0"
eslint-plugin-import: "npm:2.31.0"
eslint-plugin-jsx-a11y: "npm:6.10.2"
eslint-plugin-prettier: "npm:5.2.1"
@@ -9005,6 +8511,7 @@ __metadata:
nock: "npm:^13.5.3"
nyc: "npm:17.1.0"
papaparse: "npm:^5.4.1"
+ playwright-test-coverage: "npm:^1.2.12"
prettier: "npm:3.3.3"
react: "npm:18.3.1"
react-dom: "npm:18.3.1"
@@ -9208,17 +8715,6 @@ __metadata:
languageName: node
linkType: hard
-"http-signature@npm:~1.4.0":
- version: 1.4.0
- resolution: "http-signature@npm:1.4.0"
- dependencies:
- assert-plus: "npm:^1.0.0"
- jsprim: "npm:^2.0.2"
- sshpk: "npm:^1.18.0"
- checksum: 10/f9f5eed4ac5db5e1ec6d00652680c7d8b76d553560017e34505c0c22c37abb2e6d22b9268ed4a8542aa9746852a2d64850531091e443393c9c8e0f4fd4174455
- languageName: node
- linkType: hard
-
"http-status-codes@npm:2.3.0":
version: 2.3.0
resolution: "http-status-codes@npm:2.3.0"
@@ -9236,13 +8732,6 @@ __metadata:
languageName: node
linkType: hard
-"human-signals@npm:^1.1.1":
- version: 1.1.1
- resolution: "human-signals@npm:1.1.1"
- checksum: 10/6a58224dffcef5588910b1028bda8623c9a7053460a1fe3367e61921a6b5f6b93aba30f323868a958f968d7de3f5f78421f11d4d9f7e9563b1bd2b00ed9a4deb
- languageName: node
- linkType: hard
-
"human-signals@npm:^5.0.0":
version: 5.0.0
resolution: "human-signals@npm:5.0.0"
@@ -9362,13 +8851,6 @@ __metadata:
languageName: node
linkType: hard
-"ini@npm:2.0.0":
- version: 2.0.0
- resolution: "ini@npm:2.0.0"
- checksum: 10/04e24ba05c4f6947e15560824e153b4610bceea2f5a3ab68651d221a4aab3c77d4e3e90a917ebc8bf5ad71a30a8575de56c39d6b4c4b1375a28016b9f3625f9d
- languageName: node
- linkType: hard
-
"ini@npm:4.1.1":
version: 4.1.1
resolution: "ini@npm:4.1.1"
@@ -9518,17 +9000,6 @@ __metadata:
languageName: node
linkType: hard
-"is-ci@npm:^3.0.1":
- version: 3.0.1
- resolution: "is-ci@npm:3.0.1"
- dependencies:
- ci-info: "npm:^3.2.0"
- bin:
- is-ci: bin.js
- checksum: 10/192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e
- languageName: node
- linkType: hard
-
"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1":
version: 2.15.1
resolution: "is-core-module@npm:2.15.1"
@@ -9597,16 +9068,6 @@ __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: 10/5294d21c82cb9beedd693ce1dfb12117c4db36d6e35edc9dc6bf06cb300d23c96520d1bfb063386b054268ae3d7255c3f09393b52218cc26ace99b217bf37c93
- languageName: node
- linkType: hard
-
"is-interactive@npm:^1.0.0":
version: 1.0.0
resolution: "is-interactive@npm:1.0.0"
@@ -9675,13 +9136,6 @@ __metadata:
languageName: node
linkType: hard
-"is-path-inside@npm:^3.0.2":
- version: 3.0.3
- resolution: "is-path-inside@npm:3.0.3"
- checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9
- languageName: node
- linkType: hard
-
"is-plain-object@npm:5.0.0":
version: 5.0.0
resolution: "is-plain-object@npm:5.0.0"
@@ -9772,7 +9226,7 @@ __metadata:
languageName: node
linkType: hard
-"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0":
+"is-typedarray@npm:^1.0.0":
version: 1.0.0
resolution: "is-typedarray@npm:1.0.0"
checksum: 10/4b433bfb0f9026f079f4eb3fbaa4ed2de17c9995c3a0b5c800bec40799b4b2a8b4e051b1ada77749deb9ded4ae52fe2096973f3a93ff83df1a5a7184a669478c
@@ -9847,13 +9301,6 @@ __metadata:
languageName: node
linkType: hard
-"isstream@npm:~0.1.2":
- version: 0.1.2
- resolution: "isstream@npm:0.1.2"
- checksum: 10/22d9c181015226d4534a227539256897bbbcb7edd1066ca4fc4d3a06dbd976325dfdd16b3983c7d236a89f256805c1a685a772e0364e98873d3819b064ad35a1
- languageName: node
- linkType: hard
-
"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0":
version: 3.2.2
resolution: "istanbul-lib-coverage@npm:3.2.2"
@@ -9870,18 +9317,6 @@ __metadata:
languageName: node
linkType: hard
-"istanbul-lib-instrument@npm:^4.0.0":
- version: 4.0.3
- resolution: "istanbul-lib-instrument@npm:4.0.3"
- dependencies:
- "@babel/core": "npm:^7.7.5"
- "@istanbuljs/schema": "npm:^0.1.2"
- istanbul-lib-coverage: "npm:^3.0.0"
- semver: "npm:^6.3.0"
- checksum: 10/6e04ab365b95644ec4954b645f901be90be8ad81233d6df536300cdafcf70dd1ed22a912ceda38b32053c7fc9830c44cd23550c603f493329a8532073d1d6c42
- languageName: node
- linkType: hard
-
"istanbul-lib-instrument@npm:^6.0.2":
version: 6.0.3
resolution: "istanbul-lib-instrument@npm:6.0.3"
@@ -10042,17 +9477,6 @@ __metadata:
languageName: node
linkType: hard
-"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0":
- version: 4.1.0
- resolution: "js-yaml@npm:4.1.0"
- dependencies:
- argparse: "npm:^2.0.1"
- bin:
- js-yaml: bin/js-yaml.js
- checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140
- languageName: node
- linkType: hard
-
"js-yaml@npm:^3.13.1":
version: 3.14.1
resolution: "js-yaml@npm:3.14.1"
@@ -10065,6 +9489,17 @@ __metadata:
languageName: node
linkType: hard
+"js-yaml@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "js-yaml@npm:4.1.0"
+ dependencies:
+ argparse: "npm:^2.0.1"
+ bin:
+ js-yaml: bin/js-yaml.js
+ checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140
+ languageName: node
+ linkType: hard
+
"jsbn@npm:1.1.0":
version: 1.1.0
resolution: "jsbn@npm:1.1.0"
@@ -10072,13 +9507,6 @@ __metadata:
languageName: node
linkType: hard
-"jsbn@npm:~0.1.0":
- version: 0.1.1
- resolution: "jsbn@npm:0.1.1"
- checksum: 10/5450133242845100e694f0ef9175f44c012691a9b770b2571e677314e6f70600abb10777cdfc9a0c6a9f2ac6d134577403633de73e2fcd0f97875a67744e2d14
- languageName: node
- linkType: hard
-
"jsesc@npm:^2.5.1":
version: 2.5.2
resolution: "jsesc@npm:2.5.2"
@@ -10134,13 +9562,6 @@ __metadata:
languageName: node
linkType: hard
-"json-schema@npm:0.4.0":
- version: 0.4.0
- resolution: "json-schema@npm:0.4.0"
- checksum: 10/8b3b64eff4a807dc2a3045b104ed1b9335cd8d57aa74c58718f07f0f48b8baa3293b00af4dcfbdc9144c3aafea1e97982cc27cc8e150fc5d93c540649507a458
- languageName: node
- linkType: hard
-
"json-stable-stringify-without-jsonify@npm:^1.0.1":
version: 1.0.1
resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
@@ -10148,7 +9569,7 @@ __metadata:
languageName: node
linkType: hard
-"json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1":
+"json-stringify-safe@npm:^5.0.1":
version: 5.0.1
resolution: "json-stringify-safe@npm:5.0.1"
checksum: 10/59169a081e4eeb6f9559ae1f938f656191c000e0512aa6df9f3c8b2437a4ab1823819c6b9fd1818a4e39593ccfd72e9a051fdd3e2d1e340ed913679e888ded8c
@@ -10195,18 +9616,6 @@ __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: 10/fcfca5b55f83e1b8be5f932c71754bd37afd2611f81685abd05689e8ce718a91155ff7bd5b94c65ce483a787b5c43c6d0c18c1d2259fca5bb61a3f8ea2e29c0a
- 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"
@@ -10255,13 +9664,6 @@ __metadata:
languageName: node
linkType: hard
-"lazy-ass@npm:^1.6.0":
- version: 1.6.0
- resolution: "lazy-ass@npm:1.6.0"
- checksum: 10/3969ebef060b6f665fc78310ec769f7d2945db2d5af2b6663eda1bc9ec45c845deba9c4a3f75f124ce2c76fedf56514a063ee5c2affc8bc94963fbbddb442a88
- languageName: node
- linkType: hard
-
"lazy-universal-dotenv@npm:^4.0.0":
version: 4.0.0
resolution: "lazy-universal-dotenv@npm:4.0.0"
@@ -10308,27 +9710,6 @@ __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: 10/cebbd692330279ea82f05468cbb0a16f5b40015a6163e0a2fb04ef168da8e2d6c54e129148e90112d92e7f9ecb85a56e6b88d867a58a8ebdf36e0c98df49ae5c
- languageName: node
- linkType: hard
-
"local-pkg@npm:^0.5.0":
version: 0.5.0
resolution: "local-pkg@npm:0.5.0"
@@ -10424,13 +9805,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.once@npm:^4.1.1":
- version: 4.1.1
- resolution: "lodash.once@npm:4.1.1"
- checksum: 10/202f2c8c3d45e401b148a96de228e50ea6951ee5a9315ca5e15733d5a07a6b1a02d9da1e7fdf6950679e17e8ca8f7190ec33cae47beb249b0c50019d753f38f3
- languageName: node
- linkType: hard
-
"lodash.snakecase@npm:^4.1.1":
version: 4.1.1
resolution: "lodash.snakecase@npm:4.1.1"
@@ -10466,14 +9840,14 @@ __metadata:
languageName: node
linkType: hard
-"lodash@npm:^4.0.0, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4":
+"lodash@npm:^4.0.0, lodash@npm:^4.17.21, lodash@npm:^4.17.4":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532
languageName: node
linkType: hard
-"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0":
+"log-symbols@npm:^4.1.0":
version: 4.1.0
resolution: "log-symbols@npm:4.1.0"
dependencies:
@@ -10483,18 +9857,6 @@ __metadata:
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: 10/ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2
- languageName: node
- linkType: hard
-
"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0":
version: 1.4.0
resolution: "loose-envify@npm:1.4.0"
@@ -10722,7 +10084,7 @@ __metadata:
languageName: node
linkType: hard
-"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
+"mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34":
version: 2.1.35
resolution: "mime-types@npm:2.1.35"
dependencies:
@@ -11074,7 +10436,7 @@ __metadata:
languageName: node
linkType: hard
-"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1":
+"npm-run-path@npm:^4.0.1":
version: 4.0.1
resolution: "npm-run-path@npm:4.0.1"
dependencies:
@@ -11092,43 +10454,6 @@ __metadata:
languageName: node
linkType: hard
-"nyc@npm:15.1.0":
- version: 15.1.0
- resolution: "nyc@npm:15.1.0"
- dependencies:
- "@istanbuljs/load-nyc-config": "npm:^1.0.0"
- "@istanbuljs/schema": "npm:^0.1.2"
- caching-transform: "npm:^4.0.0"
- convert-source-map: "npm:^1.7.0"
- decamelize: "npm:^1.2.0"
- find-cache-dir: "npm:^3.2.0"
- find-up: "npm:^4.1.0"
- foreground-child: "npm:^2.0.0"
- get-package-type: "npm:^0.1.0"
- glob: "npm:^7.1.6"
- istanbul-lib-coverage: "npm:^3.0.0"
- istanbul-lib-hook: "npm:^3.0.0"
- istanbul-lib-instrument: "npm:^4.0.0"
- istanbul-lib-processinfo: "npm:^2.0.2"
- istanbul-lib-report: "npm:^3.0.0"
- istanbul-lib-source-maps: "npm:^4.0.0"
- istanbul-reports: "npm:^3.0.2"
- make-dir: "npm:^3.0.0"
- node-preload: "npm:^0.2.1"
- p-map: "npm:^3.0.0"
- process-on-spawn: "npm:^1.0.0"
- resolve-from: "npm:^5.0.0"
- rimraf: "npm:^3.0.0"
- signal-exit: "npm:^3.0.2"
- spawn-wrap: "npm:^2.0.0"
- test-exclude: "npm:^6.0.0"
- yargs: "npm:^15.0.2"
- bin:
- nyc: bin/nyc.js
- checksum: 10/c987f04f4192dfd94e9e69869c76a54220b3ed555016751f380a413a378cceff8ec346df579e9126035b6acbc60ab893cc65e67729cc427c0171361bcb481e66
- languageName: node
- linkType: hard
-
"nyc@npm:17.1.0":
version: 17.1.0
resolution: "nyc@npm:17.1.0"
@@ -11263,7 +10588,7 @@ __metadata:
languageName: node
linkType: hard
-"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0":
+"once@npm:^1.3.0":
version: 1.4.0
resolution: "once@npm:1.4.0"
dependencies:
@@ -11328,13 +10653,6 @@ __metadata:
languageName: node
linkType: hard
-"ospath@npm:^1.2.2":
- version: 1.2.2
- resolution: "ospath@npm:1.2.2"
- checksum: 10/505f48a4f4f1c557d6c656ec985707726e3714721680139be037613e903aa8c8fa4ddd8d1342006f9b2dc0065e6e20f8b7bea2ee05354f31257044790367b347
- languageName: node
- linkType: hard
-
"outvariant@npm:^1.2.1, outvariant@npm:^1.4.0":
version: 1.4.3
resolution: "outvariant@npm:1.4.3"
@@ -11585,20 +10903,6 @@ __metadata:
languageName: node
linkType: hard
-"pend@npm:~1.2.0":
- version: 1.2.0
- resolution: "pend@npm:1.2.0"
- checksum: 10/6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d
- languageName: node
- linkType: hard
-
-"performance-now@npm:^2.1.0":
- version: 2.1.0
- resolution: "performance-now@npm:2.1.0"
- checksum: 10/534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550
- languageName: node
- linkType: hard
-
"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0":
version: 1.1.0
resolution: "picocolors@npm:1.1.0"
@@ -11613,13 +10917,6 @@ __metadata:
languageName: node
linkType: hard
-"pify@npm:^2.2.0":
- version: 2.3.0
- resolution: "pify@npm:2.3.0"
- checksum: 10/9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba
- languageName: node
- linkType: hard
-
"pkg-dir@npm:^4.1.0":
version: 4.2.0
resolution: "pkg-dir@npm:4.2.0"
@@ -11649,6 +10946,39 @@ __metadata:
languageName: node
linkType: hard
+"playwright-core@npm:1.49.0":
+ version: 1.49.0
+ resolution: "playwright-core@npm:1.49.0"
+ bin:
+ playwright-core: cli.js
+ checksum: 10/ef9c708293adab100337ed7fd8e61660be381707fc2b84f07b5f40d1ead44feb6a8e52fef98075e594522229d15a9ad56dd1471689cfa59409bec6447c22944d
+ languageName: node
+ linkType: hard
+
+"playwright-test-coverage@npm:^1.2.12":
+ version: 1.2.12
+ resolution: "playwright-test-coverage@npm:1.2.12"
+ peerDependencies:
+ "@playwright/test": ^1.14.1
+ checksum: 10/2a858543e0540d66ac43524a3f15abcfd26be5ec89ea899bf05ba44c525dccad3fa4053077329356cef2f009e5804be908fbf92557b8d655d0bfdceb2ee60c94
+ languageName: node
+ linkType: hard
+
+"playwright@npm:1.49.0":
+ version: 1.49.0
+ resolution: "playwright@npm:1.49.0"
+ dependencies:
+ fsevents: "npm:2.3.2"
+ playwright-core: "npm:1.49.0"
+ dependenciesMeta:
+ fsevents:
+ optional: true
+ bin:
+ playwright: cli.js
+ checksum: 10/1fb198d09d388ec46cc2f0fc6b889a8bde8a75066ded82d35f08ba333091ebf3fc4ddf11263a86058a7078c7238ec4f23a86a9f1dc3ebd4f610c9eb07841fb32
+ languageName: node
+ linkType: hard
+
"possible-typed-array-names@npm:^1.0.0":
version: 1.0.0
resolution: "possible-typed-array-names@npm:1.0.0"
@@ -11709,13 +11039,6 @@ __metadata:
languageName: node
linkType: hard
-"pretty-bytes@npm:^5.6.0":
- version: 5.6.0
- resolution: "pretty-bytes@npm:5.6.0"
- checksum: 10/9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd
- languageName: node
- linkType: hard
-
"pretty-format@npm:^29.7.0":
version: 29.7.0
resolution: "pretty-format@npm:29.7.0"
@@ -11750,13 +11073,6 @@ __metadata:
languageName: node
linkType: hard
-"process@npm:^0.11.10":
- version: 0.11.10
- resolution: "process@npm:0.11.10"
- checksum: 10/dbaa7e8d1d5cf375c36963ff43116772a989ef2bb47c9bdee20f38fd8fc061119cf38140631cf90c781aca4d3f0f0d2c834711952b728953f04fd7d238f59f5b
- languageName: node
- linkType: hard
-
"promise-retry@npm:^2.0.1":
version: 2.0.1
resolution: "promise-retry@npm:2.0.1"
@@ -11805,13 +11121,6 @@ __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: 10/f26b59c0f21dd118c23a0eb1f5250848a23b5029ec5c9f2b4011b6439b19fa83da50858d84e9261da94aa4e67778c1bac5483afce884b7770a96895a4e6b9a19
- languageName: node
- linkType: hard
-
"proxy-from-env@npm:^1.1.0":
version: 1.1.0
resolution: "proxy-from-env@npm:1.1.0"
@@ -11819,24 +11128,7 @@ __metadata:
languageName: node
linkType: hard
-"psl@npm:^1.1.33":
- version: 1.9.0
- resolution: "psl@npm:1.9.0"
- checksum: 10/d07879d4bfd0ac74796306a8e5a36a93cfb9c4f4e8ee8e63fbb909066c192fe1008cd8f12abd8ba2f62ca28247949a20c8fb32e1d18831d9e71285a1569720f9
- languageName: node
- linkType: hard
-
-"pump@npm:^3.0.0":
- version: 3.0.2
- resolution: "pump@npm:3.0.2"
- dependencies:
- end-of-stream: "npm:^1.1.0"
- once: "npm:^1.3.1"
- checksum: 10/e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f
- languageName: node
- linkType: hard
-
-"punycode@npm:^2.1.0, punycode@npm:^2.1.1":
+"punycode@npm:^2.1.0":
version: 2.3.1
resolution: "punycode@npm:2.3.1"
checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059
@@ -11852,13 +11144,6 @@ __metadata:
languageName: node
linkType: hard
-"querystringify@npm:^2.1.1":
- version: 2.2.0
- resolution: "querystringify@npm:2.2.0"
- checksum: 10/46ab16f252fd892fc29d6af60966d338cdfeea68a231e9457631ffd22d67cec1e00141e0a5236a2eb16c0d7d74175d9ec1d6f963660c6f2b1c2fc85b194c5680
- languageName: node
- linkType: hard
-
"queue-microtask@npm:^1.2.2":
version: 1.2.3
resolution: "queue-microtask@npm:1.2.3"
@@ -12283,15 +11568,6 @@ __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: 10/c25b1c75fb0a0c3b38874abd7ebd58e320c55bc17a48e76772b26828d9e0f688741e144d31b678af9cf447cba32ae153efad05f8a2db225eb07135a613d3162b
- languageName: node
- linkType: hard
-
"require-directory@npm:^2.1.1":
version: 2.1.1
resolution: "require-directory@npm:2.1.1"
@@ -12313,13 +11589,6 @@ __metadata:
languageName: node
linkType: hard
-"requires-port@npm:^1.0.0":
- version: 1.0.0
- resolution: "requires-port@npm:1.0.0"
- checksum: 10/878880ee78ccdce372784f62f52a272048e2d0827c29ae31e7f99da18b62a2b9463ea03a75f277352f4697c100183debb0532371ad515a2d49d4bfe596dd4c20
- languageName: node
- linkType: hard
-
"resolve-from@npm:^4.0.0":
version: 4.0.0
resolution: "resolve-from@npm:4.0.0"
@@ -12417,13 +11686,6 @@ __metadata:
languageName: node
linkType: hard
-"rfdc@npm:^1.3.0":
- version: 1.4.1
- resolution: "rfdc@npm:1.4.1"
- checksum: 10/2f3d11d3d8929b4bfeefc9acb03aae90f971401de0add5ae6c5e38fec14f0405e6a4aad8fdb76344bfdd20c5193110e3750cbbd28ba86d73729d222b6cf4a729
- languageName: node
- linkType: hard
-
"rimraf@npm:^3.0.0":
version: 3.0.2
resolution: "rimraf@npm:3.0.2"
@@ -12535,7 +11797,7 @@ __metadata:
languageName: node
linkType: hard
-"rxjs@npm:^7.5.1, rxjs@npm:^7.5.5, rxjs@npm:^7.8.1":
+"rxjs@npm:^7.5.5, rxjs@npm:^7.8.1":
version: 7.8.1
resolution: "rxjs@npm:7.8.1"
dependencies:
@@ -12556,7 +11818,7 @@ __metadata:
languageName: node
linkType: hard
-"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0":
+"safe-buffer@npm:5.2.1, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451
@@ -12574,7 +11836,7 @@ __metadata:
languageName: node
linkType: hard
-"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0":
+"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83
@@ -12760,28 +12022,6 @@ __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: 10/5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24
- 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: 10/4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756
- languageName: node
- linkType: hard
-
"smart-buffer@npm:^4.2.0":
version: 4.2.0
resolution: "smart-buffer@npm:4.2.0"
@@ -12880,27 +12120,6 @@ __metadata:
languageName: node
linkType: hard
-"sshpk@npm:^1.18.0":
- version: 1.18.0
- resolution: "sshpk@npm:1.18.0"
- dependencies:
- asn1: "npm:~0.2.3"
- assert-plus: "npm:^1.0.0"
- bcrypt-pbkdf: "npm:^1.0.0"
- dashdash: "npm:^1.12.0"
- ecc-jsbn: "npm:~0.1.1"
- getpass: "npm:^0.1.1"
- jsbn: "npm:~0.1.0"
- safer-buffer: "npm:^2.0.2"
- tweetnacl: "npm:~0.14.0"
- bin:
- sshpk-conv: bin/sshpk-conv
- sshpk-sign: bin/sshpk-sign
- sshpk-verify: bin/sshpk-verify
- checksum: 10/858339d43e3c6b6a848772a66f69442ce74f1a37655d9f35ba9d1f85329499ff0000af9f8ab83dbb39ad24c0c370edabe0be1e39863f70c6cded9924b8458c34
- languageName: node
- linkType: hard
-
"ssri@npm:^10.0.0":
version: 10.0.6
resolution: "ssri@npm:10.0.6"
@@ -13127,13 +12346,6 @@ __metadata:
languageName: node
linkType: hard
-"strip-final-newline@npm:^2.0.0":
- version: 2.0.0
- resolution: "strip-final-newline@npm:2.0.0"
- checksum: 10/69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64
- languageName: node
- linkType: hard
-
"strip-final-newline@npm:^3.0.0":
version: 3.0.0
resolution: "strip-final-newline@npm:3.0.0"
@@ -13329,14 +12541,7 @@ __metadata:
languageName: node
linkType: hard
-"throttleit@npm:^1.0.0":
- version: 1.0.1
- resolution: "throttleit@npm:1.0.1"
- checksum: 10/17f1aba82192d8b4f5be5f7e7955acd2db0b60557a2e041900bcb685c03fc0a42e44fae955741c2994ec314918c6c1c2c179bfe17b1fbb4a011c506e9ea7cc33
- languageName: node
- linkType: hard
-
-"through@npm:>=2.2.7 <3, through@npm:^2.3.6, through@npm:^2.3.8":
+"through@npm:>=2.2.7 <3, through@npm:^2.3.6":
version: 2.3.8
resolution: "through@npm:2.3.8"
checksum: 10/5da78346f70139a7d213b65a0106f3c398d6bc5301f9248b5275f420abc2c4b1e77c2abc72d218dedc28c41efb2e7c312cb76a7730d04f9c2d37d247da3f4198
@@ -13408,13 +12613,6 @@ __metadata:
languageName: node
linkType: hard
-"tmp@npm:~0.2.3":
- version: 0.2.3
- resolution: "tmp@npm:0.2.3"
- checksum: 10/7b13696787f159c9754793a83aa79a24f1522d47b87462ddb57c18ee93ff26c74cbb2b8d9138f571d2e0e765c728fb2739863a672b280528512c6d83d511c6fa
- languageName: node
- linkType: hard
-
"to-fast-properties@npm:^2.0.0":
version: 2.0.0
resolution: "to-fast-properties@npm:2.0.0"
@@ -13438,18 +12636,6 @@ __metadata:
languageName: node
linkType: hard
-"tough-cookie@npm:^4.1.3":
- version: 4.1.4
- resolution: "tough-cookie@npm:4.1.4"
- dependencies:
- psl: "npm:^1.1.33"
- punycode: "npm:^2.1.1"
- universalify: "npm:^0.2.0"
- url-parse: "npm:^1.5.3"
- checksum: 10/75663f4e2cd085f16af0b217e4218772adf0617fb3227171102618a54ce0187a164e505d61f773ed7d65988f8ff8a8f935d381f87da981752c1171b076b4afac
- languageName: node
- linkType: hard
-
"tr46@npm:~0.0.3":
version: 0.0.3
resolution: "tr46@npm:0.0.3"
@@ -13457,7 +12643,7 @@ __metadata:
languageName: node
linkType: hard
-"tree-kill@npm:1.2.2, tree-kill@npm:^1.2.2":
+"tree-kill@npm:^1.2.2":
version: 1.2.2
resolution: "tree-kill@npm:1.2.2"
bin:
@@ -13556,15 +12742,6 @@ __metadata:
languageName: node
linkType: hard
-"tunnel-agent@npm:^0.6.0":
- version: 0.6.0
- resolution: "tunnel-agent@npm:0.6.0"
- dependencies:
- safe-buffer: "npm:^5.0.1"
- checksum: 10/7f0d9ed5c22404072b2ae8edc45c071772affd2ed14a74f03b4e71b4dd1a14c3714d85aed64abcaaee5fec2efc79002ba81155c708f4df65821b444abb0cfade
- languageName: node
- linkType: hard
-
"tunnel-rat@npm:^0.1.2":
version: 0.1.2
resolution: "tunnel-rat@npm:0.1.2"
@@ -13574,13 +12751,6 @@ __metadata:
languageName: node
linkType: hard
-"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0":
- version: 0.14.5
- resolution: "tweetnacl@npm:0.14.5"
- checksum: 10/04ee27901cde46c1c0a64b9584e04c96c5fe45b38c0d74930710751ea991408b405747d01dfae72f80fc158137018aea94f9c38c651cb9c318f0861a310c3679
- languageName: node
- linkType: hard
-
"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0
resolution: "type-check@npm:0.4.0"
@@ -13807,13 +12977,6 @@ __metadata:
languageName: node
linkType: hard
-"universalify@npm:^0.2.0":
- version: 0.2.0
- resolution: "universalify@npm:0.2.0"
- checksum: 10/e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5
- languageName: node
- linkType: hard
-
"universalify@npm:^2.0.0":
version: 2.0.1
resolution: "universalify@npm:2.0.1"
@@ -13843,13 +13006,6 @@ __metadata:
languageName: node
linkType: hard
-"untildify@npm:^4.0.0":
- version: 4.0.0
- resolution: "untildify@npm:4.0.0"
- checksum: 10/39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9
- languageName: node
- linkType: hard
-
"update-browserslist-db@npm:^1.1.0":
version: 1.1.0
resolution: "update-browserslist-db@npm:1.1.0"
@@ -13873,16 +13029,6 @@ __metadata:
languageName: node
linkType: hard
-"url-parse@npm:^1.5.3":
- version: 1.5.10
- resolution: "url-parse@npm:1.5.10"
- dependencies:
- querystringify: "npm:^2.1.1"
- requires-port: "npm:^1.0.0"
- checksum: 10/c9e96bc8c5b34e9f05ddfeffc12f6aadecbb0d971b3cc26015b58d5b44676a99f50d5aeb1e5c9e61fa4d49961ae3ab1ae997369ed44da51b2f5ac010d188e6ad
- languageName: node
- linkType: hard
-
"use-sync-external-store@npm:1.2.2, use-sync-external-store@npm:^1.2.0":
version: 1.2.2
resolution: "use-sync-external-store@npm:1.2.2"
@@ -13965,17 +13111,6 @@ __metadata:
languageName: node
linkType: hard
-"verror@npm:1.10.0":
- version: 1.10.0
- resolution: "verror@npm:1.10.0"
- dependencies:
- assert-plus: "npm:^1.0.0"
- core-util-is: "npm:1.0.2"
- extsprintf: "npm:^1.2.0"
- checksum: 10/da548149dd9c130a8a2587c9ee71ea30128d1526925707e2d01ed9c5c45c9e9f86733c66a328247cdd5f7c1516fb25b0f959ba754bfbe15072aa99ff96468a29
- languageName: node
- linkType: hard
-
"vite-node@npm:1.5.2":
version: 1.5.2
resolution: "vite-node@npm:1.5.2"
@@ -14593,16 +13728,6 @@ __metadata:
languageName: node
linkType: hard
-"yauzl@npm:^2.10.0":
- version: 2.10.0
- resolution: "yauzl@npm:2.10.0"
- dependencies:
- buffer-crc32: "npm:~0.2.3"
- fd-slicer: "npm:~1.1.0"
- checksum: 10/1e4c311050dc0cf2ee3dbe8854fe0a6cde50e420b3e561a8d97042526b4cf7a0718d6c8d89e9e526a152f4a9cec55bcea9c3617264115f48bd6704cf12a04445
- languageName: node
- linkType: hard
-
"yocto-queue@npm:^0.1.0":
version: 0.1.0
resolution: "yocto-queue@npm:0.1.0"