diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 39cd5f034f..cb0b338e7d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,9 +44,11 @@ jobs: - run: npm run build:ci - run: npm run format:check - run: npm run lint - - run: npx playwright install --with-deps - - run: npm run test - - run: npm run e2e + - run: npm run test:coverage + - uses: codecov/codecov-action@v3 + with: + file: core/coverage/lcov.info + flags: unit - if: inputs.docPublish uses: actions/checkout@v3 with: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ad255cd870..5129bd246c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,3 +7,5 @@ on: jobs: build: uses: './.github/workflows/build.yml' + e2e-tests: + uses: './.github/workflows/e2e-tests.yml' diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml new file mode 100644 index 0000000000..835d2566e6 --- /dev/null +++ b/.github/workflows/e2e-tests.yml @@ -0,0 +1,25 @@ +name: e2e-tests +on: + workflow_call: +jobs: + e2e-tests: + runs-on: ubuntu-latest + name: Test (${{ matrix.shard }}/${{ strategy.job-total}}) + strategy: + matrix: + shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '18.x' + cache: 'npm' + registry-url: 'https://registry.npmjs.org' + - run: npm ci + - run: npx playwright install --with-deps + - run: npm run build:coverage + - run: npm run e2e -- --shard=${{ matrix.shard }}/${{ strategy.job-total}} + - uses: codecov/codecov-action@v3 + with: + file: e2e/coverage/lcov.info + flags: e2e-${{ matrix.shard }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ef60fb9bf5..ff44b6d9c8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,10 @@ on: description: Version number (x.y.z) jobs: + e2e-tests: + uses: './.github/workflows/e2e-tests.yml' build: + needs: e2e-tests uses: './.github/workflows/build.yml' with: version: ${{ inputs.version }} diff --git a/.gitignore b/.gitignore index 31848bcd97..d93b3825e9 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ playwright-report/ test-results/ .svelte-kit/ dist.tar.gz +.nyc_output/ \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 3b91d94904..0e2d75302e 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,6 +2,7 @@ node_modules dist .angular coverage/ +.nyc_output/ playwright-report/ test-results/ .svelte-kit/ diff --git a/README.md b/README.md index 83b40ff3c9..a253ac106a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # AgnosUI: A Versatile Frontend Widget Library for CSS Bootstrap Design +[![Build Status](https://github.com/AmadeusITGroup/AgnosUI/workflows/ci/badge.svg?branch=main)](https://github.com/AmadeusITGroup/AgnosUI/actions) +[![codecov](https://codecov.io/gh/AmadeusITGroup/AgnosUI/branch/main/graph/badge.svg)](https://codecov.io/gh/AmadeusITGroup/AgnosUI) + ## Introduction AgnosUI is a powerful library of widgets designed specifically for the [CSS Bootstrap design](https://getbootstrap.com/). Inspired by the success of [ng-bootstrap](https://ng-bootstrap.github.io/#/home), AgnosUI takes the concept a step further by offering widgets that can seamlessly integrate with any front-end framework of your choice. With support for popular frameworks like [Angular](https://angular.io/), [React](https://react.dev/), and [Svelte](https://svelte.dev/), AgnosUI allows you to effortlessly create consistent and visually appealing UI components across your projects. diff --git a/angular/angular.json b/angular/angular.json index 17e9df39dd..bb28a70d90 100644 --- a/angular/angular.json +++ b/angular/angular.json @@ -15,7 +15,7 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:browser", + "builder": "ngx-build-plus:browser", "options": { "outputPath": "dist/demo", "index": "demo/src/index.html", @@ -55,12 +55,16 @@ "extractLicenses": false, "sourceMap": true, "namedChunks": true + }, + "coverage": { + "sourceMap": true, + "extraWebpackConfig": "./demo/coverage.webpack.js" } }, "defaultConfiguration": "production" }, "serve": { - "builder": "@angular-devkit/build-angular:dev-server", + "builder": "ngx-build-plus:dev-server", "configurations": { "production": { "servePath": "/angular/samples", @@ -69,6 +73,11 @@ "development": { "servePath": "/angular/samples", "browserTarget": "demo:build:development" + }, + "coverage": { + "servePath": "/angular/samples", + "browserTarget": "demo:build:coverage", + "extraWebpackConfig": "./demo/coverage.webpack.js" } }, "defaultConfiguration": "development" diff --git a/angular/demo/coverage.webpack.js b/angular/demo/coverage.webpack.js new file mode 100644 index 0000000000..4aa142754c --- /dev/null +++ b/angular/demo/coverage.webpack.js @@ -0,0 +1,15 @@ +module.exports = { + module: { + rules: [ + { + test: /\.(js|ts)$/, + loader: 'coverage-istanbul-loader', + options: {esModules: true}, + enforce: 'post', + // eslint-disable-next-line @typescript-eslint/no-var-requires + include: [require('path').join(__dirname, '..', 'lib', 'src'), require('path').join(__dirname, '..', '..', 'core')], + exclude: [/\.(e2e|spec|po)\.ts$/, /node_modules/, /(ngfactory|ngstyle)\.js/], + }, + ], + }, +}; diff --git a/angular/package.json b/angular/package.json index ff46681bde..99278e76b1 100644 --- a/angular/package.json +++ b/angular/package.json @@ -4,10 +4,12 @@ "scripts": { "ng": "ng", "dev": "ng serve", + "dev:coverage": "ng serve --configuration coverage", "build": "npm run build:lib && npm run build:demo", "build:lib": "ng build lib", "build:demo": "ng build demo", "build:copy": "node ../demo/scripts/copy.mjs angular", + "build:coverage": "ng build demo --configuration coverage", "watch": "ng build --watch --configuration development", "preview": "node ./scripts/preview.cjs dist/demo --port 4200 --single", "tdd": "npm run test:lib --watch", @@ -37,6 +39,7 @@ "@angular/compiler-cli": "^16.1.3", "@types/jasmine": "^4.3.5", "@types/webpack-env": "^1.18.1", + "coverage-istanbul-loader": "^3.0.5", "jasmine-core": "^5.0.1", "karma": "^6.4.2", "karma-chrome-launcher": "^3.2.0", @@ -44,6 +47,7 @@ "karma-jasmine": "^5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "ng-packagr": "^16.1.0", + "ngx-build-plus": "^16.0.0", "raw-loader": "^4.0.2", "sirv-cli": "^2.0.2", "typescript": "~5.1.6" diff --git a/core/vitest.config.ts b/core/vitest.config.ts index 854d300069..f3c995e173 100644 --- a/core/vitest.config.ts +++ b/core/vitest.config.ts @@ -4,8 +4,8 @@ export default defineConfig({ test: { include: ['./**/*.spec.ts'], coverage: { + provider: 'istanbul', reporter: ['text', 'json', 'html', 'lcov'], - src: ['.'], exclude: ['**/*.spec.ts', '**/__mocks__/**'], }, environment: 'happy-dom', diff --git a/demo/package.json b/demo/package.json index dfa3b12c84..bb6d8e24a4 100644 --- a/demo/package.json +++ b/demo/package.json @@ -5,6 +5,7 @@ "scripts": { "dev": "vite dev -c vite.config.ts", "build": "npm run build:demo && npm run svelte-check", + "build:coverage": "npm run build", "build:demo": "vite build -c vite.config.ts", "preview": "vite preview -c vite.config.ts", "svelte-check": "svelte-check" diff --git a/e2e/alert/alert.e2e-spec.ts b/e2e/alert/alert.e2e-spec.ts index 7aebc5b1ca..ad11898503 100644 --- a/e2e/alert/alert.e2e-spec.ts +++ b/e2e/alert/alert.e2e-spec.ts @@ -1,7 +1,8 @@ import {AlertPO} from '@agnos-ui/page-objects'; -import {expect, test} from '@playwright/test'; +import {expect, getTest} from '../fixture'; import {AlertDemoPO} from '../demo-po/alert.po'; +const test = getTest(); test.describe(`Alert tests`, () => { test(`Config alert`, async ({page}) => { const alertDemoPO = new AlertDemoPO(page); diff --git a/e2e/fixture.ts b/e2e/fixture.ts new file mode 100644 index 0000000000..b0e64bff4e --- /dev/null +++ b/e2e/fixture.ts @@ -0,0 +1,20 @@ +import type {Page} from '@playwright/test'; +import {test as base} from '@playwright/test'; +import {promises as fs} from 'fs'; +import path from 'path'; +import {v4 as uuidv4} from 'uuid'; + +async function afterEach({page}: {page: Page}) { + const coverage: string = await page.evaluate(() => { + return JSON.stringify((window as any).__coverage__); + }); + if (coverage) { + await fs.writeFile(path.join(__dirname, '.nyc_output', `${uuidv4()}.json`), coverage); + } +} +export {expect} from '@playwright/test'; +export function getTest() { + const test = base.extend({}); + test.afterEach(afterEach); + return test; +} diff --git a/e2e/focustrack/focustrack.e2e-spec.ts b/e2e/focustrack/focustrack.e2e-spec.ts index 4bb4f7f1b6..c87cb6a0d1 100644 --- a/e2e/focustrack/focustrack.e2e-spec.ts +++ b/e2e/focustrack/focustrack.e2e-spec.ts @@ -1,9 +1,10 @@ -import {test, expect} from '@playwright/test'; +import {expect, getTest} from '../fixture'; import {FocusTrackPO} from '../demo-po/focustrack.po'; type PromiseValue = T extends Promise ? U : never; type State = PromiseValue>; +const test = getTest(); test.describe(`Select tests`, () => { test.beforeEach(async ({page}) => { await page.goto('#/focustrack/focustrack'); diff --git a/e2e/global-setup.ts b/e2e/global-setup.ts new file mode 100644 index 0000000000..20f1c3bf36 --- /dev/null +++ b/e2e/global-setup.ts @@ -0,0 +1,28 @@ +import NYC from 'nyc'; +import {promises as fs} from 'fs'; +import {rm} from 'fs/promises'; +import path from 'path'; + +async function globalSetup() { + console.log('Cleaning up coverage folders...'); + const nycDir = path.join('e2e', '.nyc_output'); + const reportDir = path.join('e2e', 'coverage'); + await rm(nycDir, {recursive: true, force: true}); + await fs.mkdir(nycDir); + await rm(reportDir, {recursive: true, force: true}); + await fs.mkdir(reportDir); + console.log('Coverage setup ready !'); + const nycInstance = new NYC({ + cwd: __dirname, + ['report-dir']: reportDir, + reporter: ['lcov', 'json', 'text-summary'], + extension: ['.ts', '.tsx', '.svelte'], + }); + return async () => { + console.log('Saving coverage report...'); + await nycInstance.report(); + console.log('Coverage report saved !'); + }; +} + +export default globalSetup; diff --git a/e2e/modal/modal.e2e-spec.ts b/e2e/modal/modal.e2e-spec.ts index c5eef04ee2..082aeb1fef 100644 --- a/e2e/modal/modal.e2e-spec.ts +++ b/e2e/modal/modal.e2e-spec.ts @@ -1,30 +1,45 @@ -import {expect, test} from '@playwright/test'; +import {expect, getTest} from '../fixture'; import {ModalDefaultDemoModalPO, ModalDemoPO, ModalStackDemoModalPO} from '../demo-po/modal.po'; +const test = getTest(); test.describe.parallel(`Modal tests`, () => { test(`Default modal`, async ({page}) => { const modalDemoPO = new ModalDemoPO(page); const modalPO = new ModalDefaultDemoModalPO(page, 0); await page.goto('#/modal/default'); await modalDemoPO.locatorRoot.waitFor(); - await modalDemoPO.locatorLaunchDemoModalButton().click(); - expect(modalPO.locatorTitle()).toContainText('Save changes'); - expect(modalPO.locatorBody()).toContainText('Do you want to save your changes?'); - await modalPO.locatorCloseButton().click(); - await modalPO.locatorRoot.waitFor({state: 'hidden'}); - await expect(modalDemoPO.locatorMessage()).toContainText('You clicked on the close button'); - await modalDemoPO.locatorLaunchDemoModalButton().click(); - expect(modalPO.locatorTitle()).toContainText('Save changes'); - expect(modalPO.locatorBody()).toContainText('Do you want to save your changes?'); - await modalPO.locatorYesButton().click(); - await modalPO.locatorRoot.waitFor({state: 'hidden'}); - await expect(modalDemoPO.locatorMessage()).toContainText('You answered the question with "Yes"'); - await modalDemoPO.locatorLaunchDemoModalButton().click(); - expect(modalPO.locatorTitle()).toContainText('Save changes'); - expect(modalPO.locatorBody()).toContainText('Do you want to save your changes?'); - await modalPO.locatorNoButton().click(); - await modalPO.locatorRoot.waitFor({state: 'hidden'}); - await expect(modalDemoPO.locatorMessage()).toContainText('You answered the question with "No"'); + await test.step('open modal and click on close', async () => { + await modalDemoPO.locatorLaunchDemoModalButton().click(); + expect(modalPO.locatorTitle()).toContainText('Save changes'); + expect(modalPO.locatorBody()).toContainText('Do you want to save your changes?'); + await modalPO.locatorCloseButton().click(); + await modalPO.locatorRoot.waitFor({state: 'hidden'}); + await expect(modalDemoPO.locatorMessage()).toContainText('You clicked on the close button'); + }); + await test.step('open modal and click on yes', async () => { + await modalDemoPO.locatorLaunchDemoModalButton().click(); + expect(modalPO.locatorTitle()).toContainText('Save changes'); + expect(modalPO.locatorBody()).toContainText('Do you want to save your changes?'); + await modalPO.locatorYesButton().click(); + await modalPO.locatorRoot.waitFor({state: 'hidden'}); + await expect(modalDemoPO.locatorMessage()).toContainText('You answered the question with "Yes"'); + }); + await test.step('open modal and click on no', async () => { + await modalDemoPO.locatorLaunchDemoModalButton().click(); + expect(modalPO.locatorTitle()).toContainText('Save changes'); + expect(modalPO.locatorBody()).toContainText('Do you want to save your changes?'); + await modalPO.locatorNoButton().click(); + await modalPO.locatorRoot.waitFor({state: 'hidden'}); + await expect(modalDemoPO.locatorMessage()).toContainText('You answered the question with "No"'); + }); + await test.step('open modal and click on backdrop', async () => { + await modalDemoPO.locatorLaunchDemoModalButton().click(); + expect(modalPO.locatorTitle()).toContainText('Save changes'); + expect(modalPO.locatorBody()).toContainText('Do you want to save your changes?'); + await modalPO.locatorRoot.click(); + await modalPO.locatorRoot.waitFor({state: 'hidden'}); + await expect(modalDemoPO.locatorMessage()).toContainText('You clicked outside the modal'); + }); }); test(`Modal stack`, async ({page}) => { diff --git a/e2e/pagination/pagination.e2e-spec.ts b/e2e/pagination/pagination.e2e-spec.ts index c2e7932226..1adb33728b 100644 --- a/e2e/pagination/pagination.e2e-spec.ts +++ b/e2e/pagination/pagination.e2e-spec.ts @@ -1,7 +1,8 @@ -import {expect, test} from '@playwright/test'; +import {expect, getTest} from '../fixture'; import {PaginationPO} from '@agnos-ui/page-objects'; import {PaginationDemoPO} from '../demo-po/pagination.po'; +const test = getTest(); async function paginationState(paginationPO: PaginationPO) { return paginationPO.locatorRoot.evaluate((rootNode: HTMLElement) => { const pagesElements = [...rootNode.querySelectorAll('.au-page')] as HTMLLinkElement[]; diff --git a/e2e/rating/rating.e2e-spec.ts b/e2e/rating/rating.e2e-spec.ts index 3df002940f..99608365f1 100644 --- a/e2e/rating/rating.e2e-spec.ts +++ b/e2e/rating/rating.e2e-spec.ts @@ -1,4 +1,4 @@ -import {expect, test} from '@playwright/test'; +import {expect, getTest} from '../fixture'; import {RatingPO} from '@agnos-ui/page-objects'; import {RatingDemoPO} from '../demo-po/rating.po'; @@ -12,6 +12,7 @@ function createArray(length: number, value: T) { return array; } +const test = getTest(); test.describe.parallel(`Rating tests`, () => { test(`Basic features`, async ({page}) => { const ratingDemoPO = new RatingDemoPO(page); @@ -20,41 +21,89 @@ test.describe.parallel(`Rating tests`, () => { await page.goto('#/rating/default'); await ratingPO.locatorRoot.waitFor(); - let expectedState: State = { - rootClasses: ['d-inline-flex', 'au-rating'], - min: '0', - max: '10', - value: '3', - text: '3 out of 10', - disabled: null, - readonly: null, - stars: ['★', '★', '★', '☆', '☆', '☆', '☆', '☆', '☆', '☆'], - classes: createArray(10, ['au-rating-star']), - }; - - expect(await ratingPO.state()).toEqual(expectedState); - expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 3, hovered: 0, left: 0}); - - const star = ratingPO.locatorStar(4); - - await star.hover(); - expectedState = { - ...expectedState, - value: '5', - text: '5 out of 10', - stars: ['★', '★', '★', '★', '★', '☆', '☆', '☆', '☆', '☆'], - }; - expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 3, hovered: 5, left: 0}); - expect(await ratingPO.state()).toEqual(expectedState); - - await star.click(); - expect(await ratingPO.state()).toEqual(expectedState); - expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 5, hovered: 5, left: 0}); - - await page.locator('body').hover(); // Leave the first rating - - expect(await ratingPO.state()).toEqual(expectedState); - expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 5, hovered: 5, left: 5}); + await test.step('click interactions', async () => { + let expectedState: State = { + rootClasses: ['d-inline-flex', 'au-rating'], + min: '0', + max: '10', + value: '3', + text: '3 out of 10', + disabled: null, + readonly: null, + stars: ['★', '★', '★', '☆', '☆', '☆', '☆', '☆', '☆', '☆'], + classes: createArray(10, ['au-rating-star']), + }; + + expect(await ratingPO.state()).toEqual(expectedState); + expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 3, hovered: 0, left: 0}); + + const star = ratingPO.locatorStar(4); + + await star.hover(); + expectedState = { + ...expectedState, + value: '5', + text: '5 out of 10', + stars: ['★', '★', '★', '★', '★', '☆', '☆', '☆', '☆', '☆'], + }; + expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 3, hovered: 5, left: 0}); + expect(await ratingPO.state()).toEqual(expectedState); + + await star.click(); + expect(await ratingPO.state()).toEqual(expectedState); + expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 5, hovered: 5, left: 0}); + + await page.locator('body').hover(); // Leave the first rating + + expect(await ratingPO.state()).toEqual(expectedState); + expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 5, hovered: 5, left: 5}); + + await star.click(); + await page.locator('body').hover(); // Leave the first rating + expectedState = { + ...expectedState, + value: '0', + text: '0 out of 10', + stars: ['☆', '☆', '☆', '☆', '☆', '☆', '☆', '☆', '☆', '☆'], + }; + expect(await ratingPO.state()).toEqual(expectedState); + expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: 0, hovered: 5, left: 5}); + }); + await test.step('keyboard interactions', async () => { + await ratingPO.locatorRoot.focus(); + const expectValue = async (value: number) => { + expect(await ratingPO.state()).toEqual({ + rootClasses: ['d-inline-flex', 'au-rating'], + min: '0', + max: '10', + value: value.toString(), + text: `${value} out of 10`, + disabled: null, + readonly: null, + stars: createArray(value, '★').concat(createArray(10 - value, '☆')), + classes: createArray(10, ['au-rating-star']), + }); + expect(await ratingDemoPO.defaultRatingDemoState()).toEqual({rating: value, hovered: 5, left: 5}); + }; + await page.keyboard.press('ArrowRight'); + await expectValue(1); + await page.keyboard.press('ArrowUp'); + await expectValue(2); + await page.keyboard.press('ArrowLeft'); + await expectValue(1); + await page.keyboard.press('ArrowDown'); + await expectValue(0); + await page.keyboard.press('End'); + await expectValue(10); + await page.keyboard.press('Home'); + await expectValue(0); + await page.keyboard.press('PageUp'); + await expectValue(10); + await page.keyboard.press('PageDown'); + await expectValue(0); + await page.keyboard.press('a'); + await expectValue(0); + }); }); test(`Read only`, async ({page}) => { diff --git a/e2e/select/select.e2e-spec.ts b/e2e/select/select.e2e-spec.ts index a0f7d0f30f..fcbeb930f7 100644 --- a/e2e/select/select.e2e-spec.ts +++ b/e2e/select/select.e2e-spec.ts @@ -1,10 +1,11 @@ -import {expect, test} from '@playwright/test'; +import {expect, getTest} from '../fixture'; import {SelectPO} from '@agnos-ui/page-objects'; import {SelectDemoPO} from '../demo-po/select.po'; type PromiseValue = T extends Promise ? U : never; type State = PromiseValue>; +const test = getTest(); test.describe.parallel(`Select tests`, () => { test.beforeEach(async ({page}) => { await page.goto('#/select/select?filterText=initial value'); diff --git a/e2e/transition/transition.e2e-spec.ts b/e2e/transition/transition.e2e-spec.ts index fe4233d281..30f90a48cc 100644 --- a/e2e/transition/transition.e2e-spec.ts +++ b/e2e/transition/transition.e2e-spec.ts @@ -1,4 +1,4 @@ -import {expect, test} from '@playwright/test'; +import {expect, getTest} from '../fixture'; import type {State} from '../demo-po/transition.po'; import {TransitionPO} from '../demo-po/transition.po'; @@ -20,6 +20,7 @@ const disableAnimationSetting = async (po: TransitionPO, expectedState: State) = expect(await po.getState()).toEqual(expectedState); }; +const test = getTest(); test.describe.parallel('Transition tests', () => { test.beforeEach(async ({page}) => { await page.goto('#/transition/transition'); diff --git a/package-lock.json b/package-lock.json index 13210ef539..6deeb31738 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,10 +22,12 @@ "@microsoft/api-extractor": "^7.36.0", "@playwright/test": "^1.35.1", "@types/node": "^18.16.19", + "@types/uuid": "^9.0.2", "@typescript-eslint/eslint-plugin": "^5.60.1", "@typescript-eslint/parser": "^5.60.1", - "@vitest/coverage-v8": "^0.32.2", - "@vitest/ui": "^0.32.2", + "@vitest/coverage-istanbul": "^0.33.0", + "@vitest/coverage-v8": "^0.33.0", + "@vitest/ui": "^0.33.0", "bootstrap": "^5.3.0", "eslint": "^8.44.0", "eslint-config-prettier": "^8.8.0", @@ -33,14 +35,16 @@ "happy-dom": "^9.20.3", "husky": "^8.0.0", "npm-run-all": "^4.1.5", + "nyc": "^15.1.0", "prettier": "^2.8.8", "pretty-quick": "^3.1.3", "semver": "^7.5.4", "syncpack": "^10.7.3", "ts-node": "^10.9.1", "typescript": "~5.1.6", + "uuid": "^9.0.0", "vite": "^4.3.9", - "vitest": "^0.32.2" + "vitest": "^0.33.0" } }, "angular": { @@ -67,6 +71,7 @@ "@angular/compiler-cli": "^16.1.3", "@types/jasmine": "^4.3.5", "@types/webpack-env": "^1.18.1", + "coverage-istanbul-loader": "^3.0.5", "jasmine-core": "^5.0.1", "karma": "^6.4.2", "karma-chrome-launcher": "^3.2.0", @@ -74,6 +79,7 @@ "karma-jasmine": "^5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "ng-packagr": "^16.1.0", + "ngx-build-plus": "^16.0.0", "raw-loader": "^4.0.2", "sirv-cli": "^2.0.2", "typescript": "~5.1.6" @@ -338,9 +344,8 @@ }, "node_modules/@angular-devkit/build-angular/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -350,9 +355,8 @@ }, "node_modules/@angular-devkit/build-angular/node_modules/semver": { "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -929,9 +933,8 @@ }, "node_modules/@angular/cli/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -957,9 +960,8 @@ }, "node_modules/@angular/cli/node_modules/semver": { "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1181,9 +1183,8 @@ }, "node_modules/@axe-core/playwright": { "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.7.3.tgz", - "integrity": "sha512-v2PRgAyGvop7bamrTpNJtc5b1R7giAPnMzZXrS/VDZBCY5+uwVYtCNgDvBsqp5P1QMZxUMoBN+CERJUTMjFN0A==", "dev": true, + "license": "MPL-2.0", "dependencies": { "axe-core": "^4.7.0" }, @@ -1241,9 +1242,8 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1312,9 +1312,8 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1348,9 +1347,8 @@ }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1373,9 +1371,8 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -1398,9 +1395,8 @@ }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2633,9 +2629,8 @@ }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2865,9 +2860,8 @@ }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -2972,9 +2966,8 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -2984,9 +2977,8 @@ }, "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -3002,24 +2994,21 @@ }, "node_modules/@effect/data": { "version": "0.12.9", - "resolved": "https://registry.npmjs.org/@effect/data/-/data-0.12.9.tgz", - "integrity": "sha512-nuzFo+2LK4yG9H16WRv51MDhUAIuUGhmKYkuSrgCApwwLy2eUATaioQEbbR2rHOTprOiYpbIYKwvPsylEm/Fdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@effect/io": { "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.27.0.tgz", - "integrity": "sha512-3ZUaf6B+aH83HPJ84KTthd4glgrRk6DXj9M915OB9G4cMbbJAwE/709tgamzD2IxcfSlqPowtvx73Cs4N7Ywrw==", "dev": true, + "license": "MIT", "dependencies": { "@effect/data": "~0.12.6" } }, "node_modules/@effect/match": { "version": "0.24.5", - "resolved": "https://registry.npmjs.org/@effect/match/-/match-0.24.5.tgz", - "integrity": "sha512-mMoQLGt8s0AmXQR1yUTdBCbdzNIn8d5Ujf1o0T4mldiap4/eq3pf8cvyQm8dHK1Y8KyT4dA2ukJq56rSMIBZXA==", "dev": true, + "license": "MIT", "dependencies": { "@effect/data": "^0.12.9", "@effect/schema": "^0.20.2" @@ -3027,18 +3016,16 @@ }, "node_modules/@effect/match/node_modules/@effect/io": { "version": "0.26.2", - "resolved": "https://registry.npmjs.org/@effect/io/-/io-0.26.2.tgz", - "integrity": "sha512-PdqtgmfEw88kX1UKZZvK42dpMZPSCPmdWAAzN17yCzfEsA3HoPjjxo9jLyzfjtUcU+tWO0tF/GY7pcDVLcJZAg==", "dev": true, + "license": "MIT", "dependencies": { "@effect/data": "~0.12.6" } }, "node_modules/@effect/match/node_modules/@effect/schema": { "version": "0.20.3", - "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.20.3.tgz", - "integrity": "sha512-pjJW9QkHZd2/fq7Bhd6pAOidMJ0OUODOeUlesPDK0jpo62AaU9g+IGXt3v5NU8rXSX77igZgfK08XhmofwHn0A==", "dev": true, + "license": "MIT", "dependencies": { "@effect/data": "^0.12.7", "@effect/io": "^0.26.0", @@ -3047,9 +3034,8 @@ }, "node_modules/@effect/schema": { "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@effect/schema/-/schema-0.21.0.tgz", - "integrity": "sha512-IFB6hnwuTzHKaMGrAuzp0LBIIkPtW8gaXXQAik/h7ZnPpE8sOkSWKyDHuD4lpOqgsFp1G55NobVKpJUPcL8Onw==", "dev": true, + "license": "MIT", "dependencies": { "@effect/data": "^0.12.9", "@effect/io": "^0.27.0", @@ -3266,8 +3252,6 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -3292,8 +3276,6 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3305,8 +3287,6 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -3321,8 +3301,6 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -3348,6 +3326,18 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "29.6.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", + "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "dev": true, @@ -3401,6 +3391,80 @@ "dev": true, "license": "MIT" }, + "node_modules/@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.3", + "loader-utils": "^2.0.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.7.0" + } + }, + "node_modules/@jsdevtools/coverage-istanbul-loader/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@jsdevtools/coverage-istanbul-loader/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/@jsdevtools/coverage-istanbul-loader/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jsdevtools/coverage-istanbul-loader/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@jsdevtools/coverage-istanbul-loader/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", "dev": true, @@ -3408,9 +3472,8 @@ }, "node_modules/@microsoft/api-extractor": { "version": "7.36.2", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.36.2.tgz", - "integrity": "sha512-ONe/jOmTZtR3OjTkWKHmeSV1P5ozbHDxHr6FV3KoWyIl1AcPk2B3dmvVBM5eOlZB5bgM66nxcWQTZ6msQo2hHg==", "dev": true, + "license": "MIT", "dependencies": { "@microsoft/api-extractor-model": "7.27.4", "@microsoft/tsdoc": "0.14.2", @@ -3431,9 +3494,8 @@ }, "node_modules/@microsoft/api-extractor-model": { "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.27.4.tgz", - "integrity": "sha512-HjqQFmuGPOS20rtnu+9Jj0QrqZyR59E+piUWXPMZTTn4jaZI+4UmsHSf3Id8vyueAhOBH2cgwBuRTE5R+MfSMw==", "dev": true, + "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", @@ -3479,15 +3541,13 @@ }, "node_modules/@microsoft/tsdoc": { "version": "0.14.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", - "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@microsoft/tsdoc-config": { "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", - "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", "dev": true, + "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.14.2", "ajv": "~6.12.6", @@ -3497,9 +3557,8 @@ }, "node_modules/@microsoft/tsdoc-config/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3513,9 +3572,8 @@ }, "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.1.0", "path-parse": "^1.0.6" @@ -3683,9 +3741,8 @@ }, "node_modules/@popperjs/core": { "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "dev": true, + "license": "MIT", "peer": true, "funding": { "type": "opencollective", @@ -3771,9 +3828,8 @@ }, "node_modules/@rushstack/node-core-library": { "version": "3.59.5", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.59.5.tgz", - "integrity": "sha512-1IpV7LufrI1EoVO8hYsb3t6L8L+yp40Sa0OaOV2CIu1zx4e6ZeVNaVIEXFgMXBKdGXkAh21MnCaIzlDNpG6ZQw==", "dev": true, + "license": "MIT", "dependencies": { "colors": "~1.2.1", "fs-extra": "~7.0.1", @@ -3794,9 +3850,8 @@ }, "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3806,9 +3861,8 @@ }, "node_modules/@rushstack/node-core-library/node_modules/semver": { "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3874,6 +3928,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "dev": true, @@ -3980,27 +4040,23 @@ }, "node_modules/@tsconfig/node10": { "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tufjs/canonical-json": { "version": "1.0.0", @@ -4024,8 +4080,6 @@ }, "node_modules/@tufjs/models/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -4225,9 +4279,8 @@ }, "node_modules/@types/minimatch": { "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "18.16.19", @@ -4346,6 +4399,11 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/uuid": { + "version": "9.0.2", + "dev": true, + "license": "MIT" + }, "node_modules/@types/webpack-env": { "version": "1.18.1", "dev": true, @@ -4585,10 +4643,30 @@ "vite": "^4.2.0" } }, + "node_modules/@vitest/coverage-istanbul": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-0.33.0.tgz", + "integrity": "sha512-DGv6ybomCbLFGlNOGHgVCsaqHPWJWLp8JPrwzZo8I4vZ/O3muqTyZq5R52CZl0ENqgjFGWjra7yNPFUgxKf5pw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.2.1", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.5", + "test-exclude": "^6.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": ">=0.32.0 <1" + } + }, "node_modules/@vitest/coverage-v8": { - "version": "0.32.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.32.4.tgz", - "integrity": "sha512-itiCYY3TmWEK+5wnFBoNr0ZA+adACp7Op1r2TeX5dPOgU2See7+Gx2NlK2lVMHVxfPsu5z9jszKa3i//eR+hqg==", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.33.0.tgz", + "integrity": "sha512-Rj5IzoLF7FLj6yR7TmqsfRDSeaFki6NAJ/cQexqhbWkHEV2htlVGrmuOde3xzvFsCbLCagf4omhcIaVmfU8Okg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", @@ -4597,7 +4675,7 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.1", "istanbul-reports": "^3.1.5", - "magic-string": "^0.30.0", + "magic-string": "^0.30.1", "picocolors": "^1.0.0", "std-env": "^3.3.3", "test-exclude": "^6.0.0", @@ -4610,13 +4688,26 @@ "vitest": ">=0.32.0 <1" } }, + "node_modules/@vitest/coverage-v8/node_modules/magic-string": { + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz", + "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@vitest/expect": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.33.0.tgz", + "integrity": "sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/spy": "0.32.2", - "@vitest/utils": "0.32.2", + "@vitest/spy": "0.33.0", + "@vitest/utils": "0.33.0", "chai": "^4.3.7" }, "funding": { @@ -4624,14 +4715,14 @@ } }, "node_modules/@vitest/runner": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.33.0.tgz", + "integrity": "sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/utils": "0.32.2", - "concordance": "^5.0.4", + "@vitest/utils": "0.33.0", "p-limit": "^4.0.0", - "pathe": "^1.1.0" + "pathe": "^1.1.1" }, "funding": { "url": "https://opencollective.com/vitest" @@ -4639,8 +4730,9 @@ }, "node_modules/@vitest/runner/node_modules/p-limit": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -4653,8 +4745,9 @@ }, "node_modules/@vitest/runner/node_modules/yocto-queue": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.20" }, @@ -4663,39 +4756,54 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.33.0.tgz", + "integrity": "sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==", "dev": true, - "license": "MIT", "dependencies": { - "magic-string": "^0.30.0", - "pathe": "^1.1.0", - "pretty-format": "^27.5.1" + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/snapshot/node_modules/magic-string": { + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz", + "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@vitest/spy": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.33.0.tgz", + "integrity": "sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==", "dev": true, - "license": "MIT", "dependencies": { - "tinyspy": "^2.1.0" + "tinyspy": "^2.1.1" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/ui": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.33.0.tgz", + "integrity": "sha512-7gbAjLqt30R4bodkJAutdpy4ncv+u5IKTHYTow1c2q+FOxZUC9cKOSqMUxjwaaTwLN+EnDnmXYPtg3CoahaUzQ==", "dev": true, - "license": "MIT", "dependencies": { - "@vitest/utils": "0.32.2", - "fast-glob": "^3.2.12", - "fflate": "^0.7.4", + "@vitest/utils": "0.33.0", + "fast-glob": "^3.3.0", + "fflate": "^0.8.0", "flatted": "^3.2.7", - "pathe": "^1.1.0", + "pathe": "^1.1.1", "picocolors": "^1.0.0", "sirv": "^2.0.3" }, @@ -4707,13 +4815,14 @@ } }, "node_modules/@vitest/utils": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.33.0.tgz", + "integrity": "sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==", "dev": true, - "license": "MIT", "dependencies": { "diff-sequences": "^29.4.3", "loupe": "^2.3.6", - "pretty-format": "^27.5.1" + "pretty-format": "^29.5.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -5091,11 +5200,27 @@ "node": ">= 8" } }, + "node_modules/append-transform": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/aproba": { "version": "2.0.0", "dev": true, "license": "ISC" }, + "node_modules/archy": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, "node_modules/are-we-there-yet": { "version": "3.0.1", "dev": true, @@ -5110,9 +5235,8 @@ }, "node_modules/arg": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", @@ -5144,9 +5268,8 @@ }, "node_modules/array-differ": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5229,17 +5352,17 @@ }, "node_modules/arrify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/assertion-error": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -5289,9 +5412,8 @@ }, "node_modules/axe-core": { "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } @@ -5350,9 +5472,8 @@ }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -5442,11 +5563,6 @@ "readable-stream": "^3.4.0" } }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "dev": true, - "license": "MIT" - }, "node_modules/body-parser": { "version": "1.20.2", "dev": true, @@ -5667,8 +5783,9 @@ }, "node_modules/cac": { "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -5695,6 +5812,20 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/caching-transform": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.2", "dev": true, @@ -5743,8 +5874,9 @@ }, "node_modules/chai": { "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", "dev": true, - "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.2", @@ -5779,8 +5911,9 @@ }, "node_modules/check-error": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -6015,24 +6148,6 @@ "version": "0.0.1", "license": "MIT" }, - "node_modules/concordance": { - "version": "5.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" - } - }, "node_modules/connect": { "version": "3.7.0", "dev": true, @@ -6260,11 +6375,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/coverage-istanbul-loader": { + "version": "3.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsdevtools/coverage-istanbul-loader": "3.0.5" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/create-require": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/critters": { "version": "0.0.19", @@ -6407,17 +6532,6 @@ "node": ">=4.0" } }, - "node_modules/date-time": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "time-zone": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/debug": { "version": "4.3.4", "license": "MIT", @@ -6437,10 +6551,19 @@ "version": "2.1.2", "license": "MIT" }, + "node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-eql": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", "dev": true, - "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -6499,31 +6622,53 @@ "node": ">= 10" } }, - "node_modules/defaults": { - "version": "1.0.4", + "node_modules/default-require-extensions": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "clone": "^1.0.2" + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", + "node_modules/default-require-extensions/node_modules/strip-bom": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.2.0", + "node_modules/defaults": { + "version": "1.0.4", "dev": true, "license": "MIT", "dependencies": { - "has-property-descriptors": "^1.0.0", + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, "engines": { @@ -6596,17 +6741,17 @@ }, "node_modules/diff": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/diff-sequences": { "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -6756,9 +6901,8 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -6818,9 +6962,8 @@ }, "node_modules/enquirer": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -6986,6 +7129,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es6-error": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, "node_modules/es6-promise": { "version": "3.3.1", "dev": true, @@ -7181,9 +7329,8 @@ }, "node_modules/eslint-plugin-react/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -7285,7 +7432,7 @@ "license": "MIT" }, "node_modules/espree": { - "version": "9.6.0", + "version": "9.6.1", "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", @@ -7561,8 +7708,6 @@ }, "node_modules/fast-check": { "version": "3.11.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.11.0.tgz", - "integrity": "sha512-H2tctb7AGfFQfz+DEr3UWhJ3s47LXsGp5g3jeJr5tHjnf4xUvpArIqiwcDmL2EXiv+auLHIpF5MqaIpIKvpxiA==", "dev": true, "funding": [ { @@ -7574,6 +7719,7 @@ "url": "https://opencollective.com/fast-check" } ], + "license": "MIT", "dependencies": { "pure-rand": "^6.0.0" }, @@ -7585,11 +7731,6 @@ "version": "3.1.3", "license": "MIT" }, - "node_modules/fast-diff": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/fast-glob": { "version": "3.3.0", "license": "MIT", @@ -7631,9 +7772,10 @@ } }, "node_modules/fflate": { - "version": "0.7.4", - "dev": true, - "license": "MIT" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.0.tgz", + "integrity": "sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==", + "dev": true }, "node_modules/figures": { "version": "3.2.0", @@ -7792,9 +7934,8 @@ }, "node_modules/foreground-child": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -7808,9 +7949,8 @@ }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -7846,11 +7986,29 @@ "node": ">= 0.6" } }, + "node_modules/fromentries": { + "version": "1.3.2", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/fs-extra": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -7878,8 +8036,7 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.1", @@ -7947,8 +8104,9 @@ }, "node_modules/get-func-name": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -8011,9 +8169,8 @@ }, "node_modules/glob": { "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", @@ -8048,18 +8205,16 @@ }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/minimatch": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8236,6 +8391,29 @@ "dev": true, "license": "ISC" }, + "node_modules/hasha": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, "node_modules/hdr-histogram-js": { "version": "2.0.3", "dev": true, @@ -8459,9 +8637,8 @@ }, "node_modules/husky": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, + "license": "MIT", "bin": { "husky": "lib/bin.js" }, @@ -8533,8 +8710,6 @@ }, "node_modules/ignore-walk/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -8589,9 +8764,8 @@ }, "node_modules/import-lazy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8613,8 +8787,7 @@ }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9036,6 +9209,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "dev": true, @@ -9083,6 +9261,14 @@ "dev": true, "license": "MIT" }, + "node_modules/is-windows": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "dev": true, @@ -9130,6 +9316,17 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/istanbul-lib-instrument": { "version": "5.2.1", "dev": true, @@ -9147,13 +9344,47 @@ }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/p-map": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/node_modules/uuid": { + "version": "8.3.2", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.0", "dev": true, @@ -9256,17 +9487,8 @@ }, "node_modules/jju": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true - }, - "node_modules/js-string-escape": { - "version": "1.0.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -9476,9 +9698,8 @@ }, "node_modules/karma/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9624,9 +9845,8 @@ }, "node_modules/less/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "optional": true, "peer": true, "bin": { @@ -9755,17 +9975,20 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.get": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -9814,8 +10037,9 @@ }, "node_modules/loupe": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", "dev": true, - "license": "MIT", "dependencies": { "get-func-name": "^2.0.0" } @@ -9855,18 +10079,16 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/make-error": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/make-fetch-happen": { "version": "11.1.1", @@ -9893,17 +10115,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/md5-hex": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "blueimp-md5": "^2.10.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/mdn-data": { "version": "2.0.30", "dev": true, @@ -9940,6 +10151,14 @@ "dev": true, "license": "MIT" }, + "node_modules/merge-source-map": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.6.1" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "dev": true, @@ -10226,8 +10445,9 @@ }, "node_modules/mlly": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.0.tgz", + "integrity": "sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==", "dev": true, - "license": "MIT", "dependencies": { "acorn": "^8.9.0", "pathe": "^1.1.1", @@ -10270,9 +10490,8 @@ }, "node_modules/multimatch": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimatch": "^3.0.3", "array-differ": "^3.0.0", @@ -10436,6 +10655,20 @@ "node": ">=14.0.0" } }, + "node_modules/ngx-build-plus": { + "version": "16.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/build-angular": "^16.0.0", + "@schematics/angular": "^16.0.0", + "webpack-merge": "^5.0.0" + }, + "peerDependencies": { + "@angular-devkit/build-angular": "^16.0.0", + "rxjs": ">= 6.0.0" + } + }, "node_modules/nice-napi": { "version": "1.0.2", "dev": true, @@ -10506,9 +10739,8 @@ }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10538,6 +10770,17 @@ "node": ">= 8" } }, + "node_modules/node-preload": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/node-releases": { "version": "2.0.12", "dev": true, @@ -10575,9 +10818,8 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -10778,9 +11020,8 @@ }, "node_modules/npm-run-all/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -10801,65 +11042,286 @@ "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/foreground-child": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nyc/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/p-map": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", + "node_modules/nyc/node_modules/semver": { + "version": "6.3.1", "dev": true, "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, "bin": { - "which": "bin/which" + "semver": "bin/semver.js" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/npmlog": { - "version": "6.0.2", + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", "dev": true, - "license": "ISC", + "license": "ISC" + }, + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "boolbase": "^1.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">=6" } }, "node_modules/object-assign": { @@ -11149,6 +11611,20 @@ "node": ">=6" } }, + "node_modules/package-hash": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pacote": { "version": "15.2.0", "dev": true, @@ -11267,8 +11743,7 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11287,9 +11762,8 @@ }, "node_modules/path-scurry": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^9.1.1 || ^10.0.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -11303,9 +11777,8 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", - "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", "dev": true, + "license": "ISC", "engines": { "node": "14 || >=16.14" } @@ -11329,8 +11802,9 @@ }, "node_modules/pathval": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } @@ -11417,8 +11891,6 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -11430,8 +11902,6 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -11446,8 +11916,6 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -11459,8 +11927,9 @@ }, "node_modules/pkg-types": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", "dev": true, - "license": "MIT", "dependencies": { "jsonc-parser": "^3.2.0", "mlly": "^1.2.0", @@ -11743,22 +12212,24 @@ } }, "node_modules/pretty-format": { - "version": "27.5.1", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", + "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.0", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -11768,9 +12239,8 @@ }, "node_modules/pretty-quick": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", - "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^3.0.0", "execa": "^4.0.0", @@ -11791,9 +12261,8 @@ }, "node_modules/pretty-quick/node_modules/chalk": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11804,9 +12273,8 @@ }, "node_modules/pretty-quick/node_modules/execa": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -11827,9 +12295,8 @@ }, "node_modules/pretty-quick/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -11840,9 +12307,8 @@ }, "node_modules/pretty-quick/node_modules/get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -11855,18 +12321,16 @@ }, "node_modules/pretty-quick/node_modules/human-signals": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } }, "node_modules/pretty-quick/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -11876,9 +12340,8 @@ }, "node_modules/pretty-quick/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -11891,9 +12354,8 @@ }, "node_modules/pretty-quick/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -11914,6 +12376,17 @@ "dev": true, "license": "MIT" }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/promise-inflight": { "version": "1.0.1", "dev": true, @@ -11933,9 +12406,8 @@ }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -11946,9 +12418,8 @@ }, "node_modules/prompts/node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11989,9 +12460,8 @@ }, "node_modules/pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -12006,8 +12476,6 @@ }, "node_modules/pure-rand": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", "dev": true, "funding": [ { @@ -12018,7 +12486,8 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ] + ], + "license": "MIT" }, "node_modules/qjobs": { "version": "1.2.0", @@ -12103,9 +12572,8 @@ }, "node_modules/raw-loader": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -12123,9 +12591,8 @@ }, "node_modules/raw-loader/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -12139,18 +12606,16 @@ }, "node_modules/raw-loader/node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/raw-loader/node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -12188,9 +12653,10 @@ } }, "node_modules/react-is": { - "version": "17.0.2", - "dev": true, - "license": "MIT" + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/react-refresh": { "version": "0.14.0", @@ -12296,9 +12762,8 @@ }, "node_modules/read-yaml-file": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", - "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", "dev": true, + "license": "MIT", "dependencies": { "js-yaml": "^4.0.0", "strip-bom": "^4.0.0" @@ -12309,9 +12774,8 @@ }, "node_modules/read-yaml-file/node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -12429,6 +12893,17 @@ "jsesc": "bin/jsesc" } }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/require-directory": { "version": "2.1.1", "dev": true, @@ -12445,6 +12920,11 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, "node_modules/requires-port": { "version": "1.0.0", "dev": true, @@ -12536,8 +13016,7 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12665,9 +13144,8 @@ }, "node_modules/sander/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12806,8 +13284,7 @@ }, "node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13082,9 +13559,8 @@ }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", @@ -13149,6 +13625,14 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/socks": { "version": "2.7.1", "dev": true, @@ -13234,6 +13718,48 @@ "source-map": "^0.6.0" } }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/node_modules/foreground-child": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/spawn-wrap/node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "dev": true, @@ -13757,9 +14283,8 @@ }, "node_modules/syncpack": { "version": "10.7.3", - "resolved": "https://registry.npmjs.org/syncpack/-/syncpack-10.7.3.tgz", - "integrity": "sha512-nhsiOHR1zebKRn4eZn5zUjbSJm4D8GgqiraY45MsaOClPbhVJny/jWhWrjSOuwwupdwv8EYH+GA9sqCEn4DCnA==", "dev": true, + "license": "MIT", "dependencies": { "@effect/data": "0.12.9", "@effect/io": "0.27.0", @@ -13797,27 +14322,24 @@ }, "node_modules/syncpack/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/syncpack/node_modules/commander": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" } }, "node_modules/syncpack/node_modules/fs-extra": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13829,9 +14351,8 @@ }, "node_modules/syncpack/node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -13841,9 +14362,8 @@ }, "node_modules/syncpack/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13853,9 +14373,8 @@ }, "node_modules/syncpack/node_modules/minimatch": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13868,9 +14387,8 @@ }, "node_modules/syncpack/node_modules/semver": { "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -13883,9 +14401,8 @@ }, "node_modules/syncpack/node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -14069,9 +14586,8 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14103,19 +14619,10 @@ }, "node_modules/tightrope": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tightrope/-/tightrope-0.1.0.tgz", - "integrity": "sha512-HHHNYdCAIYwl1jOslQBT455zQpdeSo8/A346xpIb/uuqhSg+tCvYNsP5f11QW+z9VZ3vSX8YIfzTApjjuGH63w==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/time-zone": { - "version": "1.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=14" } }, "node_modules/tinybench": { @@ -14132,17 +14639,19 @@ } }, "node_modules/tinypool": { - "version": "0.5.0", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.6.0.tgz", + "integrity": "sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", + "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -14202,9 +14711,8 @@ }, "node_modules/ts-node": { "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -14245,9 +14753,8 @@ }, "node_modules/ts-toolbelt": { "version": "9.6.0", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", - "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/tslib": { "version": "2.6.0", @@ -14295,8 +14802,9 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -14341,6 +14849,14 @@ "dev": true, "license": "MIT" }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/typescript": { "version": "5.1.6", "license": "Apache-2.0", @@ -14372,8 +14888,9 @@ }, "node_modules/ufo": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", + "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==", + "dev": true }, "node_modules/unbox-primitive": { "version": "1.0.2", @@ -14524,7 +15041,7 @@ } }, "node_modules/uuid": { - "version": "8.3.2", + "version": "9.0.0", "dev": true, "license": "MIT", "bin": { @@ -14533,9 +15050,8 @@ }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.1.0", @@ -14572,9 +15088,8 @@ }, "node_modules/validator": { "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -14635,14 +15150,15 @@ } }, "node_modules/vite-node": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.33.0.tgz", + "integrity": "sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==", "dev": true, - "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", - "mlly": "^1.2.0", - "pathe": "^1.1.0", + "mlly": "^1.4.0", + "pathe": "^1.1.1", "picocolors": "^1.0.0", "vite": "^3.0.0 || ^4.0.0" }, @@ -14656,6 +15172,21 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite-plugin-istanbul": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.1.0", + "espree": "^9.6.1", + "istanbul-lib-instrument": "^5.1.0", + "picocolors": "^1.0.0", + "test-exclude": "^6.0.0" + }, + "peerDependencies": { + "vite": ">=2.9.1 <= 5" + } + }, "node_modules/vitefu": { "version": "0.2.4", "dev": true, @@ -14670,34 +15201,34 @@ } }, "node_modules/vitest": { - "version": "0.32.2", + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.33.0.tgz", + "integrity": "sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", "@types/node": "*", - "@vitest/expect": "0.32.2", - "@vitest/runner": "0.32.2", - "@vitest/snapshot": "0.32.2", - "@vitest/spy": "0.32.2", - "@vitest/utils": "0.32.2", - "acorn": "^8.8.2", + "@vitest/expect": "0.33.0", + "@vitest/runner": "0.33.0", + "@vitest/snapshot": "0.33.0", + "@vitest/spy": "0.33.0", + "@vitest/utils": "0.33.0", + "acorn": "^8.9.0", "acorn-walk": "^8.2.0", "cac": "^6.7.14", "chai": "^4.3.7", - "concordance": "^5.0.4", "debug": "^4.3.4", "local-pkg": "^0.4.3", - "magic-string": "^0.30.0", - "pathe": "^1.1.0", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", "picocolors": "^1.0.0", - "std-env": "^3.3.2", + "std-env": "^3.3.3", "strip-literal": "^1.0.1", "tinybench": "^2.5.0", - "tinypool": "^0.5.0", + "tinypool": "^0.6.0", "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.32.2", + "vite-node": "0.33.0", "why-is-node-running": "^2.2.2" }, "bin": { @@ -14751,6 +15282,18 @@ "dev": true, "license": "MIT" }, + "node_modules/vitest/node_modules/magic-string": { + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz", + "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/void-elements": { "version": "2.0.1", "dev": true, @@ -15102,14 +15645,6 @@ "node": ">=0.8.0" } }, - "node_modules/well-known-symbols": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=6" - } - }, "node_modules/whatwg-encoding": { "version": "2.0.0", "dev": true, @@ -15172,6 +15707,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, "node_modules/which-typed-array": { "version": "1.1.9", "dev": true, @@ -15256,6 +15796,17 @@ "version": "1.0.2", "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/ws": { "version": "8.11.0", "dev": true, @@ -15331,9 +15882,8 @@ }, "node_modules/yn": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -15350,9 +15900,8 @@ }, "node_modules/z-schema": { "version": "5.0.5", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", - "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", "dev": true, + "license": "MIT", "dependencies": { "lodash.get": "^4.4.2", "lodash.isequal": "^4.5.0", @@ -15370,9 +15919,8 @@ }, "node_modules/z-schema/node_modules/commander": { "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": "^12.20.0 || >=14" @@ -15410,7 +15958,8 @@ "eslint-plugin-react": "^7.32.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.14.1" + "react-router-dom": "^6.14.1", + "vite-plugin-istanbul": "^5.0.0" } }, "svelte": { diff --git a/package.json b/package.json index e2833aae88..b2987d143b 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,12 @@ "@microsoft/api-extractor": "^7.36.0", "@playwright/test": "^1.35.1", "@types/node": "^18.16.19", + "@types/uuid": "^9.0.2", "@typescript-eslint/eslint-plugin": "^5.60.1", "@typescript-eslint/parser": "^5.60.1", - "@vitest/coverage-v8": "^0.32.2", - "@vitest/ui": "^0.32.2", + "@vitest/coverage-istanbul": "^0.33.0", + "@vitest/coverage-v8": "^0.33.0", + "@vitest/ui": "^0.33.0", "bootstrap": "^5.3.0", "eslint": "^8.44.0", "eslint-config-prettier": "^8.8.0", @@ -21,17 +23,20 @@ "happy-dom": "^9.20.3", "husky": "^8.0.0", "npm-run-all": "^4.1.5", + "nyc": "^15.1.0", "prettier": "^2.8.8", "pretty-quick": "^3.1.3", "semver": "^7.5.4", "syncpack": "^10.7.3", "ts-node": "^10.9.1", "typescript": "~5.1.6", + "uuid": "^9.0.0", "vite": "^4.3.9", - "vitest": "^0.32.2" + "vitest": "^0.33.0" }, "scripts": { "build:ci": "npm run doc && npm run build && npm run build:copy", + "build:coverage": "npm run doc && node scripts/run.js build:coverage serial && npm run build:copy", "build": "node scripts/run.js build serial", "build:rollup": "node scripts/run.js build:rollup serial", "build:demo": "node scripts/run.js build:demo serial", @@ -46,6 +51,7 @@ "format:check": "prettier . \"**/*.svelte\" --check", "lint": "eslint --ext ts,tsx,svelte .", "dev": "node scripts/run.js dev", + "dev:coverage": "node scripts/run.js dev:coverage", "preview": "node scripts/run.js preview", "e2e": "node scripts/e2e.js", "e2e:ui": "playwright test --ui", diff --git a/playwright.config.ts b/playwright.config.ts index 1822d53c6b..ef46941079 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -2,23 +2,24 @@ import type {PlaywrightTestConfig} from '@playwright/test'; import {devices} from '@playwright/test'; const isCI = process.env.CI === 'true'; +const includeCoverage = process.env.COVERAGE === 'true'; const envFramework = process.env.FRAMEWORK?.toLowerCase(); const demoUrl = 'http://localhost:4000'; const previewDemoCommand = 'npm run preview demo'; const frameworks = [ { name: 'angular', - command: isCI ? previewDemoCommand : `npm run dev angular`, + command: isCI ? previewDemoCommand : includeCoverage ? `npm run dev:coverage angular` : `npm run dev angular`, url: `${isCI ? demoUrl : 'http://localhost:4200'}/angular/samples/`, }, { name: 'react', - command: isCI ? previewDemoCommand : `npm run dev react`, + command: isCI ? previewDemoCommand : includeCoverage ? `npm run dev:coverage react` : `npm run dev react`, url: `${isCI ? demoUrl : 'http://localhost:3000'}/react/samples/`, }, { name: 'svelte', - command: isCI ? previewDemoCommand : `npm run dev svelte`, + command: isCI ? previewDemoCommand : includeCoverage ? `npm run dev:coverage svelte` : `npm run dev svelte`, url: `${isCI ? demoUrl : 'http://localhost:3001'}/svelte/samples/`, }, ].filter(envFramework ? (framework) => framework.name === envFramework : () => true); @@ -63,15 +64,18 @@ if (includesDemo) { } const config: PlaywrightTestConfig = { + globalSetup: isCI || includeCoverage ? require.resolve('e2e/global-setup') : undefined, testDir: 'e2e', testMatch: '*e2e-spec.ts', - retries: 1, - reporter: [['list'], ['html', {open: 'never'}]], + retries: 0, + reporter: [[isCI ? 'github' : 'list'], ['html', {open: 'never'}]], forbidOnly: isCI, - use: { - trace: 'on-all-retries', - video: 'on-first-retry', - }, + use: isCI + ? undefined + : { + trace: 'retain-on-failure', + video: 'on', + }, projects, webServer: frameworks.map((framework) => ({ command: framework.command, diff --git a/react/package.json b/react/package.json index eb44b4b7f1..5e435cadad 100644 --- a/react/package.json +++ b/react/package.json @@ -20,7 +20,9 @@ ], "scripts": { "dev": "vite -c vite.demo.config.ts", + "dev:coverage": "vite -c vite.demo-coverage.config.ts", "build": "npm run build:rollup && npm run build:dts && npm run build:api-extractor && npm run build:demo && npm run build:tsc", + "build:coverage": "vite build -c vite.demo-coverage.config.ts", "build:rollup": "vite build -c vite.lib.config.ts", "build:dts": "tsc -p tsconfig.d.json", "build:api-extractor": "api-extractor run", @@ -36,7 +38,8 @@ "eslint-plugin-react": "^7.32.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^6.14.1" + "react-router-dom": "^6.14.1", + "vite-plugin-istanbul": "^5.0.0" }, "dependencies": { "@agnos-ui/core": "", diff --git a/react/vite.demo-coverage.config.ts b/react/vite.demo-coverage.config.ts new file mode 100644 index 0000000000..1d8fabadf6 --- /dev/null +++ b/react/vite.demo-coverage.config.ts @@ -0,0 +1,19 @@ +import type {UserConfig, UserConfigFn} from 'vite'; +import {defineConfig, mergeConfig} from 'vite'; +import configBuilder from './vite.demo.config'; +import istanbul from 'vite-plugin-istanbul'; +import * as path from 'path'; + +export default defineConfig((config) => { + const demoConfig = (configBuilder as UserConfigFn)(config) as UserConfig; + return mergeConfig(demoConfig, { + plugins: [ + istanbul({ + cwd: path.join(__dirname, '/..'), + include: ['react/lib/*', 'core/lib/*'], + exclude: ['node_modules', 'test/'], + forceBuildInstrument: true, + }), + ], + }); +}); diff --git a/scripts/e2e.js b/scripts/e2e.js index 2ad415667a..c240ccdb4a 100644 --- a/scripts/e2e.js +++ b/scripts/e2e.js @@ -19,6 +19,7 @@ const browsers = ['chromium', 'firefox', 'webkit']; let framework = ''; let browser = ''; +let includeCoverage = false; const restArgs = []; for (let i = 0; i < args.length; i++) { const arg = args[i]; @@ -26,10 +27,15 @@ for (let i = 0; i < args.length; i++) { framework = arg; } else if (browsers.indexOf(arg) > -1) { browser = arg; + } else if (arg === '--coverage') { + includeCoverage = true; } else { restArgs.push(arg); } } +if (includeCoverage) { + process.env.COVERAGE = 'true'; +} const cmd = []; if (framework) { diff --git a/svelte/package.json b/svelte/package.json index b32e6b9622..b6d5102b08 100644 --- a/svelte/package.json +++ b/svelte/package.json @@ -21,7 +21,9 @@ ], "scripts": { "dev": "vite -c vite.demo.config.ts", + "dev:coverage": "vite -c vite.demo-coverage.config.ts", "build": "npm run build:rollup && npm run build:dts && npm run build:api-extractor && npm run build:demo && npm run svelte-check", + "build:coverage": "vite build -c vite.demo-coverage.config.ts", "build:rollup": "vite build -c vite.lib.config.ts", "build:dts": "tsc -p tsconfig.d.json", "build:api-extractor": "api-extractor run", diff --git a/svelte/vite.demo-coverage.config.ts b/svelte/vite.demo-coverage.config.ts new file mode 100644 index 0000000000..f7e4405311 --- /dev/null +++ b/svelte/vite.demo-coverage.config.ts @@ -0,0 +1,20 @@ +import type {UserConfig, UserConfigFn} from 'vite'; +import {defineConfig, mergeConfig} from 'vite'; +import configBuilder from './vite.demo.config'; +import istanbul from 'vite-plugin-istanbul'; +import * as path from 'path'; + +export default defineConfig((config) => { + const demoConfig = (configBuilder as UserConfigFn)(config) as UserConfig; + return mergeConfig(demoConfig, { + plugins: [ + istanbul({ + cwd: path.join(__dirname, '/..'), + include: ['svelte/lib/*', 'core/lib/*'], + extension: ['.ts', '.svelte'], + exclude: ['node_modules', 'test/'], + forceBuildInstrument: true, + }), + ], + }); +});