From 46698de3dc3b3b2379760e23ecd19afb1a3ced42 Mon Sep 17 00:00:00 2001 From: Marija Najdova Date: Fri, 6 Sep 2024 12:08:23 +0200 Subject: [PATCH] [wip][poc] Add Pigment CSS screenshot test (#43280) --- .circleci/config.yml | 6 + .../src/app/material-ui/react-select/page.tsx | 121 ++++ apps/pigment-css-vite-app/.mocharc.cjs | 7 + apps/pigment-css-vite-app/package.json | 4 +- .../pages/fixtures/PigmentCssSelectOpen.js | 34 + .../src/pages/fixtures/index.test.js | 117 ++++ .../src/pages/fixtures/index.tsx | 80 +++ .../src/pages/material-ui/react-select.tsx | 122 ++++ apps/pigment-css-vite-app/vite.config.ts | 2 + package.json | 6 + pnpm-lock.yaml | 580 +++++++++++++++++- scripts/pushArgos.mjs | 7 +- test/README.md | 3 + 13 files changed, 1069 insertions(+), 20 deletions(-) create mode 100644 apps/pigment-css-next-app/src/app/material-ui/react-select/page.tsx create mode 100644 apps/pigment-css-vite-app/.mocharc.cjs create mode 100644 apps/pigment-css-vite-app/src/pages/fixtures/PigmentCssSelectOpen.js create mode 100644 apps/pigment-css-vite-app/src/pages/fixtures/index.test.js create mode 100644 apps/pigment-css-vite-app/src/pages/fixtures/index.tsx create mode 100644 apps/pigment-css-vite-app/src/pages/material-ui/react-select.tsx diff --git a/.circleci/config.yml b/.circleci/config.yml index 457cdfdc359393..4cb1b1a1d52884 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -495,6 +495,12 @@ jobs: - run: name: Run visual regression tests command: xvfb-run pnpm test:regressions + - run: + name: Build packages for fixtures + command: xvfb-run pnpm release:build + - run: + name: Run visual regression tests using Pigment CSS + command: xvfb-run pnpm test:regressions-pigment-css - run: name: Upload screenshots to Argos CI command: pnpm test:argos diff --git a/apps/pigment-css-next-app/src/app/material-ui/react-select/page.tsx b/apps/pigment-css-next-app/src/app/material-ui/react-select/page.tsx new file mode 100644 index 00000000000000..08503cbb49db81 --- /dev/null +++ b/apps/pigment-css-next-app/src/app/material-ui/react-select/page.tsx @@ -0,0 +1,121 @@ +'use client'; +import * as React from 'react'; +import BasicSelect from '../../../../../../docs/data/material/components/selects/BasicSelect'; +import ControlledOpenSelect from '../../../../../../docs/data/material/components/selects/ControlledOpenSelect'; +import CustomizedSelects from '../../../../../../docs/data/material/components/selects/CustomizedSelects'; +import DialogSelect from '../../../../../../docs/data/material/components/selects/DialogSelect'; +import GroupedSelect from '../../../../../../docs/data/material/components/selects/GroupedSelect'; +import MultipleSelect from '../../../../../../docs/data/material/components/selects/MultipleSelect'; +import MultipleSelectCheckmarks from '../../../../../../docs/data/material/components/selects/MultipleSelectCheckmarks'; +import MultipleSelectChip from '../../../../../../docs/data/material/components/selects/MultipleSelectChip'; +import MultipleSelectNative from '../../../../../../docs/data/material/components/selects/MultipleSelectNative'; +import MultipleSelectPlaceholder from '../../../../../../docs/data/material/components/selects/MultipleSelectPlaceholder'; +import NativeSelectDemo from '../../../../../../docs/data/material/components/selects/NativeSelectDemo'; +import SelectAutoWidth from '../../../../../../docs/data/material/components/selects/SelectAutoWidth'; +import SelectLabels from '../../../../../../docs/data/material/components/selects/SelectLabels'; +import SelectOtherProps from '../../../../../../docs/data/material/components/selects/SelectOtherProps'; +import SelectSmall from '../../../../../../docs/data/material/components/selects/SelectSmall'; +import SelectVariants from '../../../../../../docs/data/material/components/selects/SelectVariants'; + +export default function Selects() { + return ( + +
+

Basic Select

+
+ +
+
+
+

Controlled Open Select

+
+ +
+
+
+

Customized Selects

+
+ +
+
+
+

Dialog Select

+
+ +
+
+
+

Grouped Select

+
+ +
+
+
+

Multiple Select

+
+ +
+
+
+

Multiple Select Checkmarks

+
+ +
+
+
+

Multiple Select Chip

+
+ +
+
+
+

Multiple Select Native

+
+ +
+
+
+

Multiple Select Placeholder

+
+ +
+
+
+

Native Select Demo

+
+ +
+
+
+

Select Auto Width

+
+ +
+
+
+

Select Labels

+
+ +
+
+
+

Select Other Props

+
+ +
+
+
+

Select Small

+
+ +
+
+
+

Select Variants

+
+ +
+
+
+ ); +} diff --git a/apps/pigment-css-vite-app/.mocharc.cjs b/apps/pigment-css-vite-app/.mocharc.cjs new file mode 100644 index 00000000000000..5f79b51262cb72 --- /dev/null +++ b/apps/pigment-css-vite-app/.mocharc.cjs @@ -0,0 +1,7 @@ +module.exports = { + recursive: true, + slow: 500, + timeout: (process.env.CIRCLECI === 'true' ? 4 : 2) * 1000, // Circle CI has low-performance CPUs. + reporter: 'dot', + require: ['@mui/internal-test-utils/setupBabelPlaywright'], +}; diff --git a/apps/pigment-css-vite-app/package.json b/apps/pigment-css-vite-app/package.json index 92702773bbdf21..f90feb1ffc8f3c 100644 --- a/apps/pigment-css-vite-app/package.json +++ b/apps/pigment-css-vite-app/package.json @@ -17,6 +17,7 @@ "@mui/material": "workspace:^", "@mui/system": "workspace:^", "clsx": "^2.1.1", + "playwright": "^1.46.1", "react": "^18.3.1", "react-dom": "^18.3.1", "react-error-boundary": "^4.0.13", @@ -32,7 +33,8 @@ "postcss": "^8.4.44", "postcss-combine-media-query": "^1.0.1", "vite": "5.4.2", - "vite-plugin-pages": "^0.32.3" + "vite-plugin-pages": "^0.32.3", + "vite-plugin-node-polyfills": "0.22.0" }, "nx": { "targets": { diff --git a/apps/pigment-css-vite-app/src/pages/fixtures/PigmentCssSelectOpen.js b/apps/pigment-css-vite-app/src/pages/fixtures/PigmentCssSelectOpen.js new file mode 100644 index 00000000000000..e525d640f24c81 --- /dev/null +++ b/apps/pigment-css-vite-app/src/pages/fixtures/PigmentCssSelectOpen.js @@ -0,0 +1,34 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +export default function BasicSelect() { + const [age, setAge] = React.useState(10); + + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + + + Age + + + + ); +} diff --git a/apps/pigment-css-vite-app/src/pages/fixtures/index.test.js b/apps/pigment-css-vite-app/src/pages/fixtures/index.test.js new file mode 100644 index 00000000000000..374fb877080d44 --- /dev/null +++ b/apps/pigment-css-vite-app/src/pages/fixtures/index.test.js @@ -0,0 +1,117 @@ +import * as path from 'path'; +import * as fse from 'fs-extra'; +import * as playwright from 'playwright'; + +async function main() { + const baseUrl = 'http://localhost:5001/fixtures'; + const screenshotDir = path.resolve('screenshots/chrome'); + const browser = await playwright.chromium.launch({ + args: ['--font-render-hinting=none'], + // otherwise the loaded google Roboto font isn't applied + headless: false, + }); + // reuse viewport from `vrtest` + // https://github.com/nathanmarks/vrtest/blob/1185b852a6c1813cedf5d81f6d6843d9a241c1ce/src/server/runner.js#L44 + const page = await browser.newPage({ + viewport: { width: 1000, height: 700 }, + reducedMotion: 'reduce', + }); + + // Block images since they slow down tests (need download). + // They're also most likely decorative for documentation demos + await page.route(/./, async (route, request) => { + const type = await request.resourceType(); + if (type === 'image') { + route.abort(); + } else { + route.continue(); + } + }); + + // Wait for all requests to finish. + // This should load shared resources such as fonts. + await page.goto(`${baseUrl}`, { waitUntil: 'networkidle0' }); + // If we still get flaky fonts after awaiting this try `document.fonts.ready` + // await page.waitForSelector('[data-webfontloader="active"]', { state: 'attached' }); + + // Simulate portrait mode for date pickers. + // See `useIsLandscape`. + await page.evaluate(() => { + Object.defineProperty(window.screen.orientation, 'angle', { + get() { + return 0; + }, + }); + }); + + let routes = await page.$$eval('#tests a', (links) => { + return links.map((link) => link.href); + }); + routes = routes.map((route) => route.replace(baseUrl, '')); + + async function renderFixture(index) { + // Use client-side routing which is much faster than full page navigation via page.goto(). + // Could become an issue with test isolation. + // If tests are flaky due to global pollution switch to page.goto(route); + // puppeteers built-in click() times out + await page.$eval(`#tests li:nth-of-type(${index + 1}) a`, (link) => { + link.click(); + }); + // Move cursor offscreen to not trigger unwanted hover effects. + page.mouse.move(0, 0); + + const testcase = await page.waitForSelector('#root-demo'); + + return testcase; + } + + async function takeScreenshot({ testcase, route }) { + const screenshotPath = path.resolve(screenshotDir, `.${route}.png`); + await fse.ensureDir(path.dirname(screenshotPath)); + + const explicitScreenshotTarget = await page.$('[data-testid="screenshot-target"]'); + const screenshotTarget = explicitScreenshotTarget || testcase; + + await screenshotTarget.screenshot({ + path: screenshotPath, + type: 'png', + animations: 'disabled', + }); + } + + // prepare screenshots + await fse.emptyDir(screenshotDir); + + describe('visual regressions', () => { + beforeEach(async () => { + await page.evaluate(() => { + localStorage.clear(); + }); + }); + + after(async () => { + await browser.close(); + }); + + routes.forEach((route, index) => { + it(`creates screenshots of ${route}`, async function test() { + // With the playwright inspector we might want to call `page.pause` which would lead to a timeout. + if (process.env.PWDEBUG) { + this.timeout(0); + } + + const testcase = await renderFixture(index); + await takeScreenshot({ testcase, route }); + }); + }); + }); + + run(); +} + +main().catch((error) => { + // error during setup. + // Throwing lets mocha hang. + console.error(error); + process.exit(1); +}); diff --git a/apps/pigment-css-vite-app/src/pages/fixtures/index.tsx b/apps/pigment-css-vite-app/src/pages/fixtures/index.tsx new file mode 100644 index 00000000000000..bacf026ccd1f03 --- /dev/null +++ b/apps/pigment-css-vite-app/src/pages/fixtures/index.tsx @@ -0,0 +1,80 @@ +import * as React from 'react'; +import { useLocation, matchRoutes, Link } from 'react-router-dom'; +import routes from '~react-pages'; +import IndexLayout from '../../Layout'; + +export default function Layout() { + const location = useLocation(); + const matchedRoute = React.useMemo( + () => matchRoutes(routes, location.pathname)?.[0], + [location.pathname], + ); + + const materialUIRoute = React.useMemo( + () => matchRoutes(routes, location.pathname.replace('fixtures', 'material-ui'))?.[0], + [location.pathname], + ); + + const demo = new URLSearchParams(location.search).get('demo'); + const fixturesRoutes = (matchedRoute?.route.children ?? []).filter( + (item) => !!item.path && item.path !== 'index.test', + ); + + const demosRoutes = (materialUIRoute?.route.children ?? []).filter( + (item) => !!item.path && item.path.indexOf('react-pagination') < 0, + ); + + return ( + + {demo && ( +
+ {fixturesRoutes.find((item) => item.path === demo)?.element} + {demosRoutes.find((item) => item.path === demo)?.element} +
+ )} +
+

Fixtures Material UI + Pigment CSS

+ +
+
+ ); +} diff --git a/apps/pigment-css-vite-app/src/pages/material-ui/react-select.tsx b/apps/pigment-css-vite-app/src/pages/material-ui/react-select.tsx new file mode 100644 index 00000000000000..df82f58c059786 --- /dev/null +++ b/apps/pigment-css-vite-app/src/pages/material-ui/react-select.tsx @@ -0,0 +1,122 @@ +import * as React from 'react'; +import MaterialUILayout from '../../Layout'; +import BasicSelect from '../../../../../docs/data/material/components/selects/BasicSelect.tsx'; +import ControlledOpenSelect from '../../../../../docs/data/material/components/selects/ControlledOpenSelect.tsx'; +import CustomizedSelects from '../../../../../docs/data/material/components/selects/CustomizedSelects.tsx'; +import DialogSelect from '../../../../../docs/data/material/components/selects/DialogSelect.tsx'; +import GroupedSelect from '../../../../../docs/data/material/components/selects/GroupedSelect.tsx'; +import MultipleSelect from '../../../../../docs/data/material/components/selects/MultipleSelect.tsx'; +import MultipleSelectCheckmarks from '../../../../../docs/data/material/components/selects/MultipleSelectCheckmarks.tsx'; +import MultipleSelectChip from '../../../../../docs/data/material/components/selects/MultipleSelectChip.tsx'; +import MultipleSelectNative from '../../../../../docs/data/material/components/selects/MultipleSelectNative.tsx'; +import MultipleSelectPlaceholder from '../../../../../docs/data/material/components/selects/MultipleSelectPlaceholder.tsx'; +import NativeSelectDemo from '../../../../../docs/data/material/components/selects/NativeSelectDemo.tsx'; +import SelectAutoWidth from '../../../../../docs/data/material/components/selects/SelectAutoWidth.tsx'; +import SelectLabels from '../../../../../docs/data/material/components/selects/SelectLabels.tsx'; +import SelectOtherProps from '../../../../../docs/data/material/components/selects/SelectOtherProps.tsx'; +import SelectSmall from '../../../../../docs/data/material/components/selects/SelectSmall.tsx'; +import SelectVariants from '../../../../../docs/data/material/components/selects/SelectVariants.tsx'; + +export default function Selects() { + return ( + +

Selects

+
+

Basic Select

+
+ +
+
+
+

Controlled Open Select

+
+ +
+
+
+

Customized Selects

+
+ +
+
+
+

Dialog Select

+
+ +
+
+
+

Grouped Select

+
+ +
+
+
+

Multiple Select

+
+ +
+
+
+

Multiple Select Checkmarks

+
+ +
+
+
+

Multiple Select Chip

+
+ +
+
+
+

Multiple Select Native

+
+ +
+
+
+

Multiple Select Placeholder

+
+ +
+
+
+

Native Select Demo

+
+ +
+
+
+

Select Auto Width

+
+ +
+
+
+

Select Labels

+
+ +
+
+
+

Select Other Props

+
+ +
+
+
+

Select Small

+
+ +
+
+
+

Select Variants

+
+ +
+
+
+ ); +} diff --git a/apps/pigment-css-vite-app/vite.config.ts b/apps/pigment-css-vite-app/vite.config.ts index 4b00635a94362b..2be1c60009bb98 100644 --- a/apps/pigment-css-vite-app/vite.config.ts +++ b/apps/pigment-css-vite-app/vite.config.ts @@ -1,6 +1,7 @@ import { defineConfig, splitVendorChunkPlugin } from 'vite'; import reactPlugin from '@vitejs/plugin-react'; import Pages from 'vite-plugin-pages'; +import { nodePolyfills } from 'vite-plugin-node-polyfills'; import { pigment } from '@pigment-css/vite-plugin'; import { extendTheme } from '@mui/material/styles'; @@ -44,6 +45,7 @@ export default defineConfig({ }), Pages(), splitVendorChunkPlugin(), + nodePolyfills(), ], resolve: { alias: [ diff --git a/package.json b/package.json index 8aa4add5afe8cf..2067831176f183 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,11 @@ "test:regressions:dev": "concurrently \"pnpm test:regressions:build --watch\" \"pnpm test:regressions:server\"", "test:regressions:run": "nx run nx_test_regressions_run", "test:regressions:server": "serve test/regressions -p 5001", + "test:regressions-pigment-css": "cross-env NODE_ENV=production pnpm test:regressions-pigment-css:build && concurrently --success first --kill-others \"pnpm test:regressions-pigment-css:run\" \"pnpm test:regressions-pigment-css:server\"", + "test:regressions-pigment-css:build": "pnpm --filter @app/vite-app run build", + "test:regressions-pigment-css:dev": "concurrently \"pnpm test:regressions-pigment-css:build --watch\" \"pnpm test:regressions-pigment-css:server\"", + "test:regressions-pigment-css:run": "nx run nx_test_regressions_pigment_css_run", + "test:regressions-pigment-css:server": "pnpm --filter @app/vite-app run preview --port 5001", "test:unit": "nx run nx_test_unit", "test:argos": "node ./scripts/pushArgos.mjs", "typescript": "lerna run --no-bail --parallel typescript", @@ -89,6 +94,7 @@ "nx_test_karma_profile": "cross-env NODE_ENV=test karma start test/karma.conf.profile.js", "nx_test_karma": "cross-env NODE_ENV=test karma start test/karma.conf.js", "nx_test_regressions_run": "mocha --config test/regressions/.mocharc.js --delay 'test/regressions/**/*.test.js'", + "nx_test_regressions_pigment_css_run": "mocha --config apps/pigment-css-vite-app/.mocharc.cjs --delay 'apps/pigment-css-vite-app/**/*.test.js'", "nx_test_unit": "cross-env NODE_ENV=test mocha 'packages/**/*.test.{js,ts,tsx}' 'packages-internal/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}'" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4ace936546b0bb..d230d4d24afb09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -414,6 +414,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + playwright: + specifier: ^1.46.1 + version: 1.46.1 react: specifier: ^18.3.1 version: 18.3.1 @@ -454,6 +457,9 @@ importers: vite: specifier: 5.4.2 version: 5.4.2(@types/node@20.16.4)(terser@5.29.2) + vite-plugin-node-polyfills: + specifier: 0.22.0 + version: 0.22.0(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.4)(terser@5.29.2)) vite-plugin-pages: specifier: ^0.32.3 version: 0.32.3(vite@5.4.2(@types/node@20.16.4)(terser@5.29.2)) @@ -4945,6 +4951,24 @@ packages: resolution: {integrity: sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==} engines: {node: '>=14.0.0'} + '@rollup/plugin-inject@5.0.5': + resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.21.1': resolution: {integrity: sha512-2thheikVEuU7ZxFXubPDOtspKn1x0yqaYQwvALVtEcvFhMifPADBrgRPyHV0TF3b+9BgvgjgagVyvA/UqPZHmg==} cpu: [arm] @@ -5975,6 +5999,12 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} @@ -6166,6 +6196,12 @@ packages: bluebird@3.4.7: resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + body-parser@1.20.2: resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -6187,12 +6223,37 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-resolve@2.0.0: + resolution: {integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==} + browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + + browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} + browserify-zlib@0.1.4: resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + browserslist@4.23.3: resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6223,6 +6284,9 @@ packages: resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} engines: {node: '>=0.10'} + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + buffer@4.9.2: resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} @@ -6236,6 +6300,9 @@ packages: resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} engines: {node: '>=0.2.0'} + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -6423,6 +6490,9 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} @@ -6641,9 +6711,15 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} @@ -6769,6 +6845,18 @@ packages: crc@3.8.0: resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} @@ -6787,6 +6875,9 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + css-box-model@1.2.1: resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} @@ -7070,6 +7161,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -7096,6 +7190,9 @@ packages: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -7132,6 +7229,10 @@ packages: dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + domain-browser@4.23.0: + resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==} + engines: {node: '>=10'} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -7190,6 +7291,9 @@ packages: electron-to-chromium@1.5.4: resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -7519,6 +7623,9 @@ packages: resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} engines: {node: '>=8.3.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -7554,6 +7661,9 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + exceljs@4.4.0: resolution: {integrity: sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==} engines: {node: '>=8.3.0'} @@ -8114,6 +8224,17 @@ packages: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} + hash-base@3.0.4: + resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} + engines: {node: '>=4'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hasha@5.2.2: resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} engines: {node: '>=8'} @@ -8142,6 +8263,9 @@ packages: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} engines: {node: '>=8'} + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} @@ -8214,6 +8338,9 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + https-proxy-agent@2.2.4: resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} engines: {node: '>= 4.5.0'} @@ -8478,6 +8605,10 @@ packages: is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -8634,6 +8765,10 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + isomorphic-timers-promises@1.0.1: + resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} + engines: {node: '>=10'} + istanbul-lib-coverage@2.0.5: resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} engines: {node: '>=6'} @@ -9317,6 +9452,9 @@ packages: mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} @@ -9443,6 +9581,10 @@ packages: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} @@ -9484,6 +9626,12 @@ packages: minimal-request-promise@1.5.0: resolution: {integrity: sha512-/yNNjR3sxetX7sdX1f9ttHfDjajNKpngpz9ir3jZwKAT+I4tfBOqAiFNIEdDthU/mTd4osaO1HuU/GwR8iNJyg==} + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + minimatch@3.0.5: resolution: {integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==} @@ -9721,6 +9869,10 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-stdlib-browser@1.2.0: + resolution: {integrity: sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==} + engines: {node: '>=10'} + node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} @@ -9844,6 +9996,10 @@ packages: object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + object-keys@0.4.0: resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} @@ -9942,6 +10098,9 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -10075,6 +10234,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} + parse-code-context@1.0.0: resolution: {integrity: sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA==} engines: {node: '>=6'} @@ -10133,6 +10296,9 @@ packages: pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -10205,6 +10371,10 @@ packages: pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} @@ -10256,6 +10426,10 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -10524,6 +10698,9 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + pump@2.0.1: resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} @@ -10563,10 +10740,14 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - qs@6.12.0: - resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + querystring@0.2.0: resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} engines: {node: '>=0.4.x'} @@ -10595,6 +10776,9 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} @@ -10867,8 +11051,8 @@ packages: readable-stream@1.0.34: resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - readable-stream@2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} @@ -11080,6 +11264,9 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} @@ -11219,6 +11406,10 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -11427,9 +11618,15 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} @@ -11774,6 +11971,10 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -11898,6 +12099,9 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + tuf-js@2.2.1: resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -12098,6 +12302,10 @@ packages: url@0.10.3: resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + urlpattern-polyfill@8.0.2: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} @@ -12175,6 +12383,11 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-plugin-node-polyfills@0.22.0: + resolution: {integrity: sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + vite-plugin-pages@0.32.3: resolution: {integrity: sha512-1vmKwc9e+lRBLkpTAMUNSVV3BglyE+DRa0iivpe6q3pbOCGkAHHSUp8f6yceXC8+lu/kFgH60vm5vK6IHyvdVw==} peerDependencies: @@ -12252,6 +12465,9 @@ packages: vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + void-elements@2.0.1: resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} engines: {node: '>=0.10.0'} @@ -14239,12 +14455,12 @@ snapshots: '@gitbeaker/core@38.12.1': dependencies: '@gitbeaker/requester-utils': 38.12.1 - qs: 6.12.0 + qs: 6.13.0 xcase: 2.0.1 '@gitbeaker/requester-utils@38.12.1': dependencies: - qs: 6.12.0 + qs: 6.13.0 xcase: 2.0.1 '@gitbeaker/rest@38.12.1': @@ -15838,6 +16054,22 @@ snapshots: '@remix-run/router@1.19.1': {} + '@rollup/plugin-inject@5.0.5(rollup@4.21.1)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.1) + estree-walker: 2.0.2 + magic-string: 0.30.10 + optionalDependencies: + rollup: 4.21.1 + + '@rollup/pluginutils@5.1.0(rollup@4.21.1)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.21.1 + '@rollup/rollup-android-arm-eabi@4.21.1': optional: true @@ -16962,7 +17194,7 @@ snapshots: lodash.isplainobject: 4.0.6 lodash.union: 4.6.0 normalize-path: 3.0.0 - readable-stream: 2.3.7 + readable-stream: 2.3.8 archiver@3.1.1: dependencies: @@ -17107,6 +17339,20 @@ snapshots: asap@2.0.6: {} + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + assert@2.1.0: + dependencies: + call-bind: 1.0.7 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.5 + util: 0.12.5 + assertion-error@1.1.0: {} assertion-error@2.0.1: {} @@ -17332,6 +17578,10 @@ snapshots: bluebird@3.4.7: {} + bn.js@4.12.0: {} + + bn.js@5.2.1: {} + body-parser@1.20.2: dependencies: bytes: 3.1.2 @@ -17375,12 +17625,62 @@ snapshots: dependencies: fill-range: 7.1.1 + brorand@1.1.0: {} + + browser-resolve@2.0.0: + dependencies: + resolve: 1.22.8 + browser-stdout@1.3.1: {} + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.4 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.0: + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + + browserify-sign@4.2.3: + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.7 + hash-base: 3.0.4 + inherits: 2.0.4 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + browserify-zlib@0.1.4: dependencies: pako: 0.2.9 + browserify-zlib@0.2.0: + dependencies: + pako: 1.0.11 + browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001649 @@ -17418,6 +17718,8 @@ snapshots: buffer-indexof-polyfill@1.0.2: {} + buffer-xor@1.0.3: {} + buffer@4.9.2: dependencies: base64-js: 1.5.1 @@ -17436,6 +17738,8 @@ snapshots: buffers@0.1.1: {} + builtin-status-codes@3.0.0: {} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -17651,6 +17955,11 @@ snapshots: ci-info@4.0.0: {} + cipher-base@1.0.4: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + classnames@2.3.2: {} claudia-api-builder@4.1.2: {} @@ -17817,7 +18126,7 @@ snapshots: buffer-crc32: 0.2.13 crc32-stream: 3.0.1 normalize-path: 3.0.0 - readable-stream: 2.3.7 + readable-stream: 2.3.8 compress-commons@4.1.1: dependencies: @@ -17880,8 +18189,12 @@ snapshots: transitivePeerDependencies: - supports-color + console-browserify@1.2.0: {} + console-control-strings@1.1.0: {} + constants-browserify@1.0.0: {} + content-disposition@0.5.2: {} content-disposition@0.5.4: @@ -18036,6 +18349,30 @@ snapshots: dependencies: buffer: 5.7.1 + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.7 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + create-require@1.1.1: {} + cross-env@7.0.3: dependencies: cross-spawn: 7.0.3 @@ -18063,6 +18400,20 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crypto-browserify@3.12.0: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.3 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + css-box-model@1.2.1: dependencies: tiny-invariant: 1.3.3 @@ -18355,6 +18706,11 @@ snapshots: dequal@2.0.3: {} + des.js@1.1.0: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + destroy@1.2.0: {} detect-indent@5.0.0: {} @@ -18369,6 +18725,12 @@ snapshots: diff@5.2.0: {} + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -18415,6 +18777,8 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 + domain-browser@4.23.0: {} + domelementtype@2.3.0: {} domhandler@4.3.1: @@ -18454,7 +18818,7 @@ snapshots: duplexer2@0.1.4: dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 duplexer@0.1.2: {} @@ -18462,7 +18826,7 @@ snapshots: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 - readable-stream: 2.3.7 + readable-stream: 2.3.8 stream-shift: 1.0.1 eastasianwidth@0.2.0: {} @@ -18479,6 +18843,16 @@ snapshots: electron-to-chromium@1.5.4: {} + elliptic@6.5.7: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} @@ -19007,6 +19381,8 @@ snapshots: transitivePeerDependencies: - supports-color + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.5 @@ -19037,6 +19413,11 @@ snapshots: events@3.3.0: {} + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + exceljs@4.4.0: dependencies: archiver: 5.3.1 @@ -19682,7 +20063,7 @@ snapshots: extend: 3.0.2 gaxios: 6.1.1(encoding@0.1.13) google-auth-library: 9.13.0(encoding@0.1.13) - qs: 6.12.0 + qs: 6.13.0 url-template: 2.0.8 uuid: 9.0.1 transitivePeerDependencies: @@ -19764,6 +20145,22 @@ snapshots: dependencies: function-bind: 1.1.2 + hash-base@3.0.4: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + hash-base@3.1.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + hasha@5.2.2: dependencies: is-stream: 2.0.1 @@ -19791,6 +20188,12 @@ snapshots: dependencies: source-map: 0.7.4 + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 @@ -19885,6 +20288,8 @@ snapshots: transitivePeerDependencies: - debug + https-browserify@1.0.0: {} + https-proxy-agent@2.2.4: dependencies: agent-base: 4.3.0 @@ -20130,6 +20535,11 @@ snapshots: is-map@2.0.2: {} + is-nan@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + is-negative-zero@2.0.3: {} is-number-object@1.0.7: @@ -20240,6 +20650,8 @@ snapshots: isobject@3.0.1: {} + isomorphic-timers-promises@1.0.1: {} + istanbul-lib-coverage@2.0.5: {} istanbul-lib-coverage@3.2.0: {} @@ -20681,7 +21093,7 @@ snapshots: dependencies: lie: 3.3.0 pako: 1.0.11 - readable-stream: 2.3.7 + readable-stream: 2.3.8 setimmediate: 1.0.5 junk@4.0.1: {} @@ -20811,7 +21223,7 @@ snapshots: lazystream@1.0.1: dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 lerna@8.1.8(babel-plugin-macros@3.1.0)(encoding@0.1.13): dependencies: @@ -21217,6 +21629,12 @@ snapshots: mathml-tag-names@2.1.3: {} + md5.js@1.3.5: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + mdast-util-from-markdown@0.8.5: dependencies: '@types/mdast': 3.0.10 @@ -21479,6 +21897,11 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + mime-db@1.33.0: {} mime-db@1.52.0: {} @@ -21503,6 +21926,10 @@ snapshots: minimal-request-promise@1.5.0: {} + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + minimatch@3.0.5: dependencies: brace-expansion: 1.1.11 @@ -21763,6 +22190,36 @@ snapshots: node-releases@2.0.18: {} + node-stdlib-browser@1.2.0: + dependencies: + assert: 2.1.0 + browser-resolve: 2.0.0 + browserify-zlib: 0.2.0 + buffer: 5.7.1 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + create-require: 1.1.1 + crypto-browserify: 3.12.0 + domain-browser: 4.23.0 + events: 3.3.0 + https-browserify: 1.0.0 + isomorphic-timers-promises: 1.0.1 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + pkg-dir: 5.0.0 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 3.6.0 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.4 + util: 0.12.5 + vm-browserify: 1.1.2 + node-stream-zip@1.15.0: {} nopt@7.2.1: @@ -21958,6 +22415,11 @@ snapshots: object-inspect@1.13.1: {} + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + object-keys@0.4.0: {} object-keys@1.1.1: {} @@ -22089,6 +22551,8 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 + os-browserify@0.3.0: {} + os-tmpdir@1.0.2: {} override-require@1.1.1: {} @@ -22226,6 +22690,15 @@ snapshots: dependencies: callsites: 3.1.0 + parse-asn1@5.1.7: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + hash-base: 3.0.4 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + parse-code-context@1.0.0: {} parse-conflict-json@3.0.1: @@ -22292,6 +22765,8 @@ snapshots: no-case: 3.0.4 tslib: 2.6.2 + path-browserify@1.0.1: {} + path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -22339,6 +22814,14 @@ snapshots: dependencies: through: 2.3.8 + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 @@ -22377,6 +22860,10 @@ snapshots: dependencies: find-up: 4.1.0 + pkg-dir@5.0.0: + dependencies: + find-up: 5.0.0 + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 @@ -22641,6 +23128,15 @@ snapshots: psl@1.9.0: {} + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.7 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + pump@2.0.1: dependencies: end-of-stream: 1.4.4 @@ -22673,10 +23169,12 @@ snapshots: dependencies: side-channel: 1.0.6 - qs@6.12.0: + qs@6.13.0: dependencies: side-channel: 1.0.6 + querystring-es3@0.2.1: {} + querystring@0.2.0: {} querystringify@2.2.0: {} @@ -22697,6 +23195,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + range-parser@1.2.0: {} range-parser@1.2.1: {} @@ -23073,7 +23576,7 @@ snapshots: isarray: 0.0.1 string_decoder: 0.10.31 - readable-stream@2.3.7: + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -23306,6 +23809,11 @@ snapshots: dependencies: glob: 10.3.10 + ripemd160@2.0.2: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + robust-predicates@3.0.2: {} rollup@4.21.1: @@ -23500,6 +24008,11 @@ snapshots: setprototypeof@1.2.0: {} + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 @@ -23751,10 +24264,22 @@ snapshots: dependencies: internal-slot: 1.0.7 + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + stream-combiner@0.0.4: dependencies: duplexer: 0.1.2 + stream-http@3.2.0: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.0 + xtend: 4.0.2 + stream-shift@1.0.1: {} streamroller@3.1.2: @@ -24211,11 +24736,15 @@ snapshots: through2@2.0.5: dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 xtend: 4.0.2 through@2.3.8: {} + timers-browserify@2.0.12: + dependencies: + setimmediate: 1.0.5 + tiny-invariant@1.3.3: {} tiny-warning@1.0.3: {} @@ -24316,6 +24845,8 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tty-browserify@0.0.1: {} + tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 @@ -24492,7 +25023,7 @@ snapshots: fstream: 1.0.12 graceful-fs: 4.2.11 listenercount: 1.0.1 - readable-stream: 2.3.7 + readable-stream: 2.3.8 setimmediate: 1.0.5 upath@2.0.1: {} @@ -24524,6 +25055,11 @@ snapshots: punycode: 1.3.2 querystring: 0.2.0 + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.0 + urlpattern-polyfill@8.0.2: {} use-count-up@3.0.1(react@18.3.1): @@ -24610,6 +25146,14 @@ snapshots: - supports-color - terser + vite-plugin-node-polyfills@0.22.0(rollup@4.21.1)(vite@5.4.2(@types/node@20.16.4)(terser@5.29.2)): + dependencies: + '@rollup/plugin-inject': 5.0.5(rollup@4.21.1) + node-stdlib-browser: 1.2.0 + vite: 5.4.2(@types/node@20.16.4)(terser@5.29.2) + transitivePeerDependencies: + - rollup + vite-plugin-pages@0.32.3(vite@5.4.2(@types/node@20.16.4)(terser@5.29.2)): dependencies: '@types/debug': 4.1.12 @@ -24672,6 +25216,8 @@ snapshots: vlq@1.0.1: {} + vm-browserify@1.1.2: {} + void-elements@2.0.1: {} w3c-xmlserializer@5.0.0: diff --git a/scripts/pushArgos.mjs b/scripts/pushArgos.mjs index b9a43853f6da25..0c15df855f404e 100644 --- a/scripts/pushArgos.mjs +++ b/scripts/pushArgos.mjs @@ -5,11 +5,14 @@ import lodashChunk from 'lodash/chunk.js'; import { upload } from '@argos-ci/core'; const screenshotsBase = 'test/regressions/screenshots/chrome'; +const screenshotsPigmentCSSBase = 'screenshots/chrome'; const screenshotsTmp = 'test/regressions/screenshots/argos'; const BATCH_SIZE = 200; async function run() { - const screenshots = await glob(`${screenshotsBase}/**/*`); + const emotionScreenshots = await glob(`${screenshotsBase}/**/*`); + const pigmentCSSScnreeshots = await glob(`${screenshotsPigmentCSSBase}/**/*`); + const screenshots = [...emotionScreenshots, ...pigmentCSSScnreeshots]; const chunks = lodashChunk(screenshots, BATCH_SIZE); await Promise.all( @@ -18,7 +21,7 @@ async function run() { chunk.map((screenshot) => { return fse.move( screenshot, - `${screenshotsTmp}/${chunkIndex}/${screenshot.replace(screenshotsBase, '')}`, + `${screenshotsTmp}/${chunkIndex}/${screenshot.replace(screenshotsBase, '').replace(screenshotsPigmentCSSBase, '')}`, ); }), ), diff --git a/test/README.md b/test/README.md index 59c4dc4acac989..d69686d7776e29 100644 --- a/test/README.md +++ b/test/README.md @@ -202,6 +202,9 @@ You can view the screenshots in `test/regressions/screenshots/chrome`. Alternatively, you might want to open `http://localhost:5001` (while `pnpm test:regressions:dev` is running) to view individual views separately. +For testing the components using Pigment CSS, you can run `pnpm test:regressions-pigment-css:dev`. +You can then open `http://localhost:5001/fixtures` to vide individual views separately. + ### Caveats #### Accessibility tree exclusion