diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 76076625904..dc9256a09a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-20.04 env: { PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 } steps: - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - uses: actions/setup-node@v4 @@ -52,7 +52,7 @@ jobs: shard-index: [1, 2] steps: - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - uses: actions/setup-node@v4 @@ -85,7 +85,7 @@ jobs: steps: # This only needs to be present so codecov can use the source tree for some post-processing # This job doesn't require that we install dependencies - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - uses: actions/setup-node@v4 @@ -111,7 +111,7 @@ jobs: runs-on: ubuntu-20.04 env: { PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 } steps: - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - uses: actions/setup-node@v4 @@ -145,7 +145,7 @@ jobs: codeql: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - uses: github/codeql-action/init@v3 @@ -161,14 +161,14 @@ jobs: name: e2e-web-tests (${{ matrix.shard-index }}/${{ strategy.job-total }}) runs-on: ubuntu-20.04 # We need to update this each time we update playwright - container: mcr.microsoft.com/playwright:v1.45.1-focal + container: mcr.microsoft.com/playwright:v1.45.3-focal strategy: fail-fast: false matrix: shard-index: [1, 2] steps: - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - uses: actions/setup-node@v4 @@ -218,7 +218,7 @@ jobs: runs-on: ubuntu-20.04 env: { PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 } steps: - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - uses: actions/setup-node@v4 @@ -247,7 +247,7 @@ jobs: check-clearly-defined: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v4.1.6 + - uses: actions/checkout@v4.1.7 timeout-minutes: 2 - name: Check ClearlyDefined for dependabot PR's diff --git a/Dockerfile b/Dockerfile index db7466e7f04..e82377dd91d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ # reference: https://stackoverflow.com/a/51683309/3711475 # reference: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker -FROM mcr.microsoft.com/playwright:v1.45.1-focal AS setup +FROM mcr.microsoft.com/playwright:v1.45.3-focal AS setup USER root diff --git a/deploy/package.json b/deploy/package.json index 3ba3e513161..033bec02224 100644 --- a/deploy/package.json +++ b/deploy/package.json @@ -9,7 +9,7 @@ }, "devDependencies": { "grunt": "^1.6.1", - "grunt-cli": "^1.3.1", + "grunt-cli": "^1.5.0", "grunt-contrib-compress": "^2.0.0", "grunt-webstore-upload": "^0.9.23" }, diff --git a/deploy/yarn.lock b/deploy/yarn.lock index 7d28d7af49e..321a1bfd538 100644 --- a/deploy/yarn.lock +++ b/deploy/yarn.lock @@ -97,7 +97,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@^3.0.2: +braces@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== @@ -339,7 +339,18 @@ graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -grunt-cli@^1.3.1, grunt-cli@~1.4.3: +grunt-cli@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.5.0.tgz#24fa92225946b2002c535c7583a003e15203876f" + integrity sha512-rILKAFoU0dzlf22SUfDtq2R1fosChXXlJM5j7wI6uoW8gwmXDXzbUvirlKZSYCdXl3LXFbR+8xyS+WFo+b6vlA== + dependencies: + grunt-known-options "~2.0.0" + interpret "~1.1.0" + liftup "~3.0.1" + nopt "~5.0.0" + v8flags "^4.0.1" + +grunt-cli@~1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.4.3.tgz#22c9f1a3d2780bf9b0d206e832e40f8f499175ff" integrity sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ== @@ -647,20 +658,12 @@ map-cache@^0.2.0: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -micromatch@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" minimatch@^3.0.4, minimatch@^3.0.5, minimatch@~3.0.4: @@ -690,6 +693,13 @@ nopt@~4.0.1: abbrev "1" osenv "^0.1.4" +nopt@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -788,11 +798,6 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" -picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -957,6 +962,11 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +v8flags@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-4.0.1.tgz#98fe6c4308317c5f394d85a435eb192490f7e132" + integrity sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg== + v8flags@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" diff --git a/package.json b/package.json index 091020d0c76..a775216dca8 100644 --- a/package.json +++ b/package.json @@ -78,8 +78,9 @@ "@esbuild-plugins/node-resolve": "^0.2.2", "@swc/core": "^1.3.107", "@swc/jest": "^0.2.36", + "@testing-library/dom": "^10.3.1", "@testing-library/jest-dom": "^6.4.2", - "@testing-library/react": "^15.0.5", + "@testing-library/react": "^16.0.0", "@types/chrome": "0.0.260", "@types/jest": "^29.5.11", "@types/jsdom": "^21.1.6", @@ -105,7 +106,7 @@ "esbuild": "^0.20.2", "eslint": "^8.57.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react": "^7.34.4", "eslint-plugin-security": "^1.7.1", "express": "^4.19.2", "extract-zip": "^2.0.1", @@ -125,12 +126,12 @@ "jest-environment-jsdom": "^29.7.0", "jest-junit": "^16.0.0", "js-yaml": "^4.1.0", - "jscodeshift": "^0.15.2", + "jscodeshift": "^0.16.1", "license-check-and-add": "^4.0.5", "mini-css-extract-plugin": "2.9.0", "npm-run-all": "^4.1.5", - "playwright": "^1.45.1", - "postcss": "^8.4.35", + "playwright": "^1.45.3", + "postcss": "^8.4.41", "postcss-modules": "^6.0.0", "prettier": "^3.2.5", "regenerator-runtime": "^0.14.1", @@ -159,7 +160,7 @@ "classnames": "^2.5.1", "idb-keyval": "^6.2.1", "lodash": "^4.17.21", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", @@ -168,7 +169,7 @@ "tabbable": "^6.2.0", "ua-parser-js": "^1.0.37", "uuid": "^9.0.1", - "webextension-polyfill": "^0.10.0" + "webextension-polyfill": "^0.12.0" }, "resolutions": { "@types/node": "^16.11.7", diff --git a/packages/report/package.json b/packages/report/package.json index 3a8df139df6..d803e1219d4 100644 --- a/packages/report/package.json +++ b/packages/report/package.json @@ -22,7 +22,7 @@ "axe-core": "4.9.1", "classnames": "^2.5.1", "lodash": "^4.17.21", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", diff --git a/packages/ui/package.json b/packages/ui/package.json index bc9dd304997..4295897c0bd 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -21,7 +21,7 @@ "axe-core": "4.9.1", "classnames": "^2.5.1", "lodash": "^4.17.21", - "luxon": "^3.4.4", + "luxon": "^3.5.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-helmet-async": "^2.0.5", diff --git a/src/DetailsView/components/issues-table.tsx b/src/DetailsView/components/issues-table.tsx index 825dc1dcadc..fc04947643f 100644 --- a/src/DetailsView/components/issues-table.tsx +++ b/src/DetailsView/components/issues-table.tsx @@ -62,6 +62,24 @@ export class IssuesTable extends React.Component { super(props); } + componentDidMount(): void { + const cardCount = this.getCardCount(); + const assessment = this.props.getProvider().forType(this.props.selectedVisualizationType); + const requirement = assessment?.requirements[0].key; + if (!this.props.issuesEnabled && cardCount > 0) { + this.props.deps.detailsViewActionMessageCreator.enableFastPassVisualHelperWithoutScan( + this.props.selectedVisualizationType, + requirement, + ); + } + if (!this.props.issuesEnabled && cardCount === 0) { + this.props.deps.detailsViewActionMessageCreator.rescanVisualizationWithoutTelemetry( + this.props.selectedVisualizationType, + requirement, + ); + } + } + public render(): JSX.Element { return (
@@ -109,22 +127,6 @@ export class IssuesTable extends React.Component { } private renderComponent(): JSX.Element { - const cardCount = this.getCardCount(); - const assessment = this.props.getProvider().forType(this.props.selectedVisualizationType); - const requirement = assessment?.requirements[0].key; - if (!this.props.issuesEnabled && cardCount > 0) { - this.props.deps.detailsViewActionMessageCreator.enableFastPassVisualHelperWithoutScan( - this.props.selectedVisualizationType, - requirement, - ); - } - if (!this.props.issuesEnabled && cardCount === 0) { - this.props.deps.detailsViewActionMessageCreator.rescanVisualizationWithoutTelemetry( - this.props.selectedVisualizationType, - requirement, - ); - } - if (this.props.scanning) { return this.renderSpinner('Scanning...'); } diff --git a/src/background/actions/action-creator.ts b/src/background/actions/action-creator.ts index b687c744a72..5eac20db7f7 100644 --- a/src/background/actions/action-creator.ts +++ b/src/background/actions/action-creator.ts @@ -475,6 +475,16 @@ export class ActionCreator { this.executingScope, ); } + switch (payload.test) { + case VisualizationType.Issues: + await this.cardSelectionActions.toggleVisualHelper.invoke(null); + break; + case VisualizationType.NeedsReview: + await this.needsReviewCardSelectionActions.toggleVisualHelper.invoke(null); + break; + default: + break; + } }; private onRescanVisualization = async (payload: RescanVisualizationPayload) => { diff --git a/src/background/actions/card-selection-action-creator.ts b/src/background/actions/card-selection-action-creator.ts index 65703e13384..c81c86b681d 100644 --- a/src/background/actions/card-selection-action-creator.ts +++ b/src/background/actions/card-selection-action-creator.ts @@ -1,5 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +import { VisualizationActions } from 'background/actions/visualization-actions'; import { StoreNames } from 'common/stores/store-names'; import * as TelemetryEvents from '../../common/extension-telemetry-events'; @@ -11,12 +12,14 @@ import { BaseActionPayload, CardSelectionPayload, RuleExpandCollapsePayload, + VisualizationTogglePayload, } from './action-payloads'; export class CardSelectionActionCreator { constructor( private readonly interpreter: Interpreter, private readonly cardSelectionActions: CardSelectionActions, + private readonly visualizationActions: VisualizationActions, private readonly telemetryEventHandler: TelemetryEventHandler, ) {} @@ -67,8 +70,13 @@ export class CardSelectionActionCreator { ); }; - private onToggleVisualHelper = async (payload: BaseActionPayload): Promise => { + private onToggleVisualHelper = async (payload: VisualizationTogglePayload): Promise => { await this.cardSelectionActions.toggleVisualHelper.invoke(null); + if (payload.enabled) { + await this.visualizationActions.disableVisualization.invoke(payload.test); + } else { + await this.visualizationActions.enableVisualization.invoke(payload); + } this.telemetryEventHandler.publishTelemetry(TelemetryEvents.VISUAL_HELPER_TOGGLED, payload); }; diff --git a/src/background/actions/needs-review-card-selection-action-creator.ts b/src/background/actions/needs-review-card-selection-action-creator.ts index 4df4a14f0ff..c2aac81350b 100644 --- a/src/background/actions/needs-review-card-selection-action-creator.ts +++ b/src/background/actions/needs-review-card-selection-action-creator.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. import { NeedsReviewCardSelectionActions } from 'background/actions/needs-review-card-selection-actions'; +import { VisualizationActions } from 'background/actions/visualization-actions'; import { StoreNames } from 'common/stores/store-names'; import * as TelemetryEvents from '../../common/extension-telemetry-events'; @@ -11,12 +12,14 @@ import { BaseActionPayload, CardSelectionPayload, RuleExpandCollapsePayload, + VisualizationTogglePayload, } from './action-payloads'; export class NeedsReviewCardSelectionActionCreator { constructor( private readonly interpreter: Interpreter, private readonly needsReviewCardSelectionActions: NeedsReviewCardSelectionActions, + private readonly visualizationActions: VisualizationActions, private readonly telemetryEventHandler: TelemetryEventHandler, ) {} @@ -69,8 +72,13 @@ export class NeedsReviewCardSelectionActionCreator { ); }; - private onToggleVisualHelper = async (payload: BaseActionPayload): Promise => { + private onToggleVisualHelper = async (payload: VisualizationTogglePayload): Promise => { await this.needsReviewCardSelectionActions.toggleVisualHelper.invoke(null); + if (payload.enabled) { + await this.visualizationActions.disableVisualization.invoke(payload.test); + } else { + await this.visualizationActions.enableVisualization.invoke(payload); + } this.telemetryEventHandler.publishTelemetry(TelemetryEvents.VISUAL_HELPER_TOGGLED, payload); }; diff --git a/src/background/initial-visualization-store-data-generator.ts b/src/background/initial-visualization-store-data-generator.ts index 482f810a0f2..5327502bfec 100644 --- a/src/background/initial-visualization-store-data-generator.ts +++ b/src/background/initial-visualization-store-data-generator.ts @@ -56,9 +56,10 @@ export class InitialVisualizationStoreDataGenerator { }; const initialState = !isEmpty(persistedData) - ? merge({}, defaultValues, persistedData) + ? merge({}, defaultValues, persistedData, { + tests: { adhoc: defaultValues.tests.adhoc }, + }) : defaultValues; - return initialState; } diff --git a/src/background/tab-context-factory.ts b/src/background/tab-context-factory.ts index f84c7508fcc..d6a321cf59f 100644 --- a/src/background/tab-context-factory.ts +++ b/src/background/tab-context-factory.ts @@ -152,11 +152,13 @@ export class TabContextFactory { const cardSelectionActionCreator = new CardSelectionActionCreator( interpreter, actionsHub.cardSelectionActions, + actionsHub.visualizationActions, this.telemetryEventHandler, ); const needsReviewCardSelectionActionCreator = new NeedsReviewCardSelectionActionCreator( interpreter, actionsHub.needsReviewCardSelectionActions, + actionsHub.visualizationActions, this.telemetryEventHandler, ); const injectionActionCreator = new InjectionActionCreator( diff --git a/src/common/components/cards/visual-helper-toggle.tsx b/src/common/components/cards/visual-helper-toggle.tsx index 66dab967626..720cdc0af8a 100644 --- a/src/common/components/cards/visual-helper-toggle.tsx +++ b/src/common/components/cards/visual-helper-toggle.tsx @@ -15,7 +15,12 @@ export type VisualHelperToggleProps = { export const VisualHelperToggle = NamedFC('VisualHelperToggle', props => { return ( { + props.cardSelectionMessageCreator.toggleVisualHelper( + event, + props.visualHelperEnabled, + ); + }} label="Visual helper" checked={props.visualHelperEnabled} className={css(styles.visualHelperToggle, props.className)} diff --git a/src/common/message-creators/automated-checks-card-selection-message-creator.ts b/src/common/message-creators/automated-checks-card-selection-message-creator.ts index a0dc68ecc4a..d8a75a988fe 100644 --- a/src/common/message-creators/automated-checks-card-selection-message-creator.ts +++ b/src/common/message-creators/automated-checks-card-selection-message-creator.ts @@ -4,12 +4,14 @@ import { BaseActionPayload, CardSelectionPayload, RuleExpandCollapsePayload, + VisualizationTogglePayload, } from 'background/actions/action-payloads'; import { TelemetryEventSource } from 'common/extension-telemetry-events'; import { CardSelectionMessageCreator } from 'common/message-creators/card-selection-message-creator'; import { ActionMessageDispatcher } from 'common/message-creators/types/dispatcher'; import { Messages } from 'common/messages'; import { SupportedMouseEvent, TelemetryDataFactory } from 'common/telemetry-data-factory'; +import { VisualizationType } from 'common/types/visualization-type'; export class AutomatedChecksCardSelectionMessageCreator implements CardSelectionMessageCreator { constructor( @@ -69,9 +71,14 @@ export class AutomatedChecksCardSelectionMessageCreator implements CardSelection }); }; - public toggleVisualHelper = (event: SupportedMouseEvent) => { - const payload: BaseActionPayload = { - telemetry: this.telemetryFactory.withTriggeredByAndSource(event, this.source), + public toggleVisualHelper = (event: SupportedMouseEvent, isEnabled: boolean) => { + const payload: VisualizationTogglePayload = { + enabled: isEnabled, + test: VisualizationType.Issues, + telemetry: { + ...this.telemetryFactory.withTriggeredByAndSource(event, this.source), + enabled: isEnabled, + }, }; this.dispatcher.dispatchMessage({ diff --git a/src/common/message-creators/card-selection-message-creator.ts b/src/common/message-creators/card-selection-message-creator.ts index feacc5040b3..f9518ff8015 100644 --- a/src/common/message-creators/card-selection-message-creator.ts +++ b/src/common/message-creators/card-selection-message-creator.ts @@ -12,5 +12,5 @@ export interface CardSelectionMessageCreator { toggleRuleExpandCollapse: (ruleId: string, event: React.SyntheticEvent) => void; collapseAllRules: (event: SupportedMouseEvent) => void; expandAllRules: (event: SupportedMouseEvent) => void; - toggleVisualHelper: (event: SupportedMouseEvent) => void; + toggleVisualHelper: (event: SupportedMouseEvent, isEnabled?: boolean) => void; } diff --git a/src/common/message-creators/needs-review-card-selection-message-creator.ts b/src/common/message-creators/needs-review-card-selection-message-creator.ts index 60020ad2244..2093cfac62a 100644 --- a/src/common/message-creators/needs-review-card-selection-message-creator.ts +++ b/src/common/message-creators/needs-review-card-selection-message-creator.ts @@ -4,12 +4,14 @@ import { BaseActionPayload, CardSelectionPayload, RuleExpandCollapsePayload, + VisualizationTogglePayload, } from 'background/actions/action-payloads'; import { TelemetryEventSource } from 'common/extension-telemetry-events'; import { CardSelectionMessageCreator } from 'common/message-creators/card-selection-message-creator'; import { ActionMessageDispatcher } from 'common/message-creators/types/dispatcher'; import { Messages } from 'common/messages'; import { SupportedMouseEvent, TelemetryDataFactory } from 'common/telemetry-data-factory'; +import { VisualizationType } from 'common/types/visualization-type'; export class NeedsReviewCardSelectionMessageCreator implements CardSelectionMessageCreator { constructor( @@ -69,11 +71,15 @@ export class NeedsReviewCardSelectionMessageCreator implements CardSelectionMess }); }; - public toggleVisualHelper = (event: SupportedMouseEvent) => { - const payload: BaseActionPayload = { - telemetry: this.telemetryFactory.withTriggeredByAndSource(event, this.source), + public toggleVisualHelper = (event: SupportedMouseEvent, isEnabled: boolean) => { + const payload: VisualizationTogglePayload = { + test: VisualizationType.NeedsReview, + enabled: isEnabled, + telemetry: { + ...this.telemetryFactory.withTriggeredByAndSource(event, this.source), + enabled: isEnabled, + }, }; - this.dispatcher.dispatchMessage({ messageType: Messages.NeedsReviewCardSelection.ToggleVisualHelper, payload, diff --git a/src/tests/unit/tests/DetailsView/components/issues-table.test.tsx b/src/tests/unit/tests/DetailsView/components/issues-table.test.tsx index 0d5f874e5ce..11e9f57973b 100644 --- a/src/tests/unit/tests/DetailsView/components/issues-table.test.tsx +++ b/src/tests/unit/tests/DetailsView/components/issues-table.test.tsx @@ -86,6 +86,7 @@ describe('IssuesTableTest', () => { it('includes subtitle if specified', () => { const props = new TestPropsBuilder() + .setDeps(deps) .setGetProviderMock(getProviderMock) .setSubtitle(<>test subtitle text) .build(); diff --git a/src/tests/unit/tests/background/actions/card-selection-action-creator.test.ts b/src/tests/unit/tests/background/actions/card-selection-action-creator.test.ts index 76a0d8f2985..1c02ede304c 100644 --- a/src/tests/unit/tests/background/actions/card-selection-action-creator.test.ts +++ b/src/tests/unit/tests/background/actions/card-selection-action-creator.test.ts @@ -4,12 +4,15 @@ import { BaseActionPayload, CardSelectionPayload, RuleExpandCollapsePayload, + VisualizationTogglePayload, } from 'background/actions/action-payloads'; import { CardSelectionActionCreator } from 'background/actions/card-selection-action-creator'; import { CardSelectionActions } from 'background/actions/card-selection-actions'; +import { VisualizationActions } from 'background/actions/visualization-actions'; import { TelemetryEventHandler } from 'background/telemetry/telemetry-event-handler'; import * as TelemetryEvents from 'common/extension-telemetry-events'; import { Messages } from 'common/messages'; +import { VisualizationType } from 'common/types/visualization-type'; import { MockInterpreter } from 'tests/unit/tests/background/global-action-creators/mock-interpreter'; import { IMock, Mock, Times } from 'typemoq'; @@ -19,10 +22,12 @@ describe('CardSelectionActionCreator', () => { const tabId = -2; let telemetryEventHandlerMock: IMock; let interpreterMock: MockInterpreter; + let visualizationActionsMock: IMock; beforeEach(() => { telemetryEventHandlerMock = Mock.ofType(); interpreterMock = new MockInterpreter(); + visualizationActionsMock = createVisualizationActionsMock(); }); it('handles card selection toggle', async () => { @@ -31,7 +36,7 @@ describe('CardSelectionActionCreator', () => { ruleId: 'test-rule-id', }; const toggleCardSelectionMock = createAsyncActionMock(payload); - const actionsMock = createActionsMock( + const actionsMock = createCardSelectionActionsMock( 'toggleCardSelection', toggleCardSelectionMock.object, ); @@ -39,6 +44,7 @@ describe('CardSelectionActionCreator', () => { const testSubject = new CardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -62,7 +68,7 @@ describe('CardSelectionActionCreator', () => { ruleId: 'test-rule-id', }; const ruleExpansionToggleMock = createAsyncActionMock(payload); - const actionsMock = createActionsMock( + const actionsMock = createCardSelectionActionsMock( 'toggleRuleExpandCollapse', ruleExpansionToggleMock.object, ); @@ -70,6 +76,7 @@ describe('CardSelectionActionCreator', () => { const testSubject = new CardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -89,13 +96,23 @@ describe('CardSelectionActionCreator', () => { }); test('onToggleVisualHelper', async () => { - const payloadStub: BaseActionPayload = {}; + const payloadStub: VisualizationTogglePayload = { + test: VisualizationType.NeedsReview, + enabled: false, + telemetry: { + enabled: false, + } as TelemetryEvents.ToggleTelemetryData, + }; const toggleVisualHelperMock = createAsyncActionMock(null); - const actionsMock = createActionsMock('toggleVisualHelper', toggleVisualHelperMock.object); + const actionsMock = createCardSelectionActionsMock( + 'toggleVisualHelper', + toggleVisualHelperMock.object, + ); const testSubject = new CardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -112,12 +129,22 @@ describe('CardSelectionActionCreator', () => { handler => handler.publishTelemetry(TelemetryEvents.VISUAL_HELPER_TOGGLED, payloadStub), Times.once(), ); + visualizationActionsMock.verify(actions => actions['enableVisualization'], Times.once()); + + payloadStub.enabled = true; + payloadStub.telemetry.enabled = true; + await interpreterMock.simulateMessage( + Messages.CardSelection.ToggleVisualHelper, + payloadStub, + tabId, + ); + visualizationActionsMock.verify(actions => actions['disableVisualization'], Times.once()); }); test('onCollapseAllRules', async () => { const payloadStub: BaseActionPayload = {}; const collapseAllRulesActionMock = createAsyncActionMock(null); - const actionsMock = createActionsMock( + const actionsMock = createCardSelectionActionsMock( 'collapseAllRules', collapseAllRulesActionMock.object, ); @@ -125,6 +152,7 @@ describe('CardSelectionActionCreator', () => { const testSubject = new CardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -146,11 +174,15 @@ describe('CardSelectionActionCreator', () => { test('onExpandAllRules', async () => { const payloadStub: BaseActionPayload = {}; const expandAllRulesActionMock = createAsyncActionMock(null); - const actionsMock = createActionsMock('expandAllRules', expandAllRulesActionMock.object); + const actionsMock = createCardSelectionActionsMock( + 'expandAllRules', + expandAllRulesActionMock.object, + ); const testSubject = new CardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -169,7 +201,7 @@ describe('CardSelectionActionCreator', () => { ); }); - function createActionsMock( + function createCardSelectionActionsMock( actionName: ActionName, action: CardSelectionActions[ActionName], ): IMock { @@ -177,4 +209,26 @@ describe('CardSelectionActionCreator', () => { actionsMock.setup(actions => actions[actionName]).returns(() => action); return actionsMock; } + + function createVisualizationActionsMock< + ActionName extends keyof VisualizationActions, + >(): IMock { + const actionsMock = Mock.ofType(); + const payload = { + test: VisualizationType.Issues, + enabled: true, + telemetry: { + enabled: true, + }, + }; + const enableVisualizationMock = createAsyncActionMock(payload); + const disableVisualizationMock = createAsyncActionMock(payload.test); + actionsMock + .setup(actions => actions['enableVisualization']) + .returns(() => enableVisualizationMock.object); + actionsMock + .setup(actions => actions['disableVisualization']) + .returns(() => disableVisualizationMock.object); + return actionsMock; + } }); diff --git a/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts b/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts index ca0fd70c958..9cb4b206606 100644 --- a/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts +++ b/src/tests/unit/tests/background/actions/needs-review-card-selection-action-creator.test.ts @@ -4,12 +4,15 @@ import { BaseActionPayload, CardSelectionPayload, RuleExpandCollapsePayload, + VisualizationTogglePayload, } from 'background/actions/action-payloads'; import { NeedsReviewCardSelectionActionCreator } from 'background/actions/needs-review-card-selection-action-creator'; import { NeedsReviewCardSelectionActions } from 'background/actions/needs-review-card-selection-actions'; +import { VisualizationActions } from 'background/actions/visualization-actions'; import { TelemetryEventHandler } from 'background/telemetry/telemetry-event-handler'; import * as TelemetryEvents from 'common/extension-telemetry-events'; import { Messages } from 'common/messages'; +import { VisualizationType } from 'common/types/visualization-type'; import { MockInterpreter } from 'tests/unit/tests/background/global-action-creators/mock-interpreter'; import { IMock, Mock, Times } from 'typemoq'; @@ -19,10 +22,12 @@ describe('NeedsReviewCardSelectionActionCreator', () => { const tabId = -2; let telemetryEventHandlerMock: IMock; let interpreterMock: MockInterpreter; + let visualizationActionsMock: IMock; beforeEach(() => { telemetryEventHandlerMock = Mock.ofType(); interpreterMock = new MockInterpreter(); + visualizationActionsMock = createVisualizationActionsMock(); }); it('handles card selection toggle', async () => { @@ -31,14 +36,15 @@ describe('NeedsReviewCardSelectionActionCreator', () => { ruleId: 'test-rule-id', }; const toggleNeedsReviewCardSelectionMock = createAsyncActionMock(payload); - const actionsMock = createActionsMock( + const needsReviewActionsMock = createNeedsReviewActionsMock( 'toggleCardSelection', toggleNeedsReviewCardSelectionMock.object, ); const testSubject = new NeedsReviewCardSelectionActionCreator( interpreterMock.object, - actionsMock.object, + needsReviewActionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -62,7 +68,7 @@ describe('NeedsReviewCardSelectionActionCreator', () => { ruleId: 'test-rule-id', }; const ruleExpansionToggleMock = createAsyncActionMock(payload); - const actionsMock = createActionsMock( + const actionsMock = createNeedsReviewActionsMock( 'toggleRuleExpandCollapse', ruleExpansionToggleMock.object, ); @@ -70,6 +76,7 @@ describe('NeedsReviewCardSelectionActionCreator', () => { const testSubject = new NeedsReviewCardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -89,13 +96,23 @@ describe('NeedsReviewCardSelectionActionCreator', () => { }); test('onToggleVisualHelper', async () => { - const payloadStub: BaseActionPayload = {}; + const payloadStub: VisualizationTogglePayload = { + test: VisualizationType.NeedsReview, + enabled: false, + telemetry: { + enabled: false, + } as TelemetryEvents.ToggleTelemetryData, + }; const toggleVisualHelperMock = createAsyncActionMock(null); - const actionsMock = createActionsMock('toggleVisualHelper', toggleVisualHelperMock.object); + const actionsMock = createNeedsReviewActionsMock( + 'toggleVisualHelper', + toggleVisualHelperMock.object, + ); const testSubject = new NeedsReviewCardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -112,12 +129,22 @@ describe('NeedsReviewCardSelectionActionCreator', () => { handler => handler.publishTelemetry(TelemetryEvents.VISUAL_HELPER_TOGGLED, payloadStub), Times.once(), ); + visualizationActionsMock.verify(actions => actions['enableVisualization'], Times.once()); + + payloadStub.enabled = true; + payloadStub.telemetry.enabled = true; + await interpreterMock.simulateMessage( + Messages.NeedsReviewCardSelection.ToggleVisualHelper, + payloadStub, + tabId, + ); + visualizationActionsMock.verify(actions => actions['disableVisualization'], Times.once()); }); test('onCollapseAllRules', async () => { const payloadStub: BaseActionPayload = {}; const collapseAllRulesActionMock = createAsyncActionMock(null); - const actionsMock = createActionsMock( + const actionsMock = createNeedsReviewActionsMock( 'collapseAllRules', collapseAllRulesActionMock.object, ); @@ -125,6 +152,7 @@ describe('NeedsReviewCardSelectionActionCreator', () => { const testSubject = new NeedsReviewCardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -146,11 +174,15 @@ describe('NeedsReviewCardSelectionActionCreator', () => { test('onExpandAllRules', async () => { const payloadStub: BaseActionPayload = {}; const expandAllRulesActionMock = createAsyncActionMock(null); - const actionsMock = createActionsMock('expandAllRules', expandAllRulesActionMock.object); + const actionsMock = createNeedsReviewActionsMock( + 'expandAllRules', + expandAllRulesActionMock.object, + ); const testSubject = new NeedsReviewCardSelectionActionCreator( interpreterMock.object, actionsMock.object, + visualizationActionsMock.object, telemetryEventHandlerMock.object, ); @@ -169,7 +201,7 @@ describe('NeedsReviewCardSelectionActionCreator', () => { ); }); - function createActionsMock( + function createNeedsReviewActionsMock( actionName: ActionName, action: NeedsReviewCardSelectionActions[ActionName], ): IMock { @@ -177,4 +209,26 @@ describe('NeedsReviewCardSelectionActionCreator', () => { actionsMock.setup(actions => actions[actionName]).returns(() => action); return actionsMock; } + + function createVisualizationActionsMock< + ActionName extends keyof VisualizationActions, + >(): IMock { + const actionsMock = Mock.ofType(); + const payload = { + test: VisualizationType.NeedsReview, + enabled: true, + telemetry: { + enabled: true, + }, + }; + const enableVisualizationMock = createAsyncActionMock(payload); + const disableVisualizationMock = createAsyncActionMock(payload.test); + actionsMock + .setup(actions => actions['enableVisualization']) + .returns(() => enableVisualizationMock.object); + actionsMock + .setup(actions => actions['disableVisualization']) + .returns(() => disableVisualizationMock.object); + return actionsMock; + } }); diff --git a/src/tests/unit/tests/common/components/cards/visual-helper-toggle.test.tsx b/src/tests/unit/tests/common/components/cards/visual-helper-toggle.test.tsx index 9e5a2a2d2fc..f5f9225ffc7 100644 --- a/src/tests/unit/tests/common/components/cards/visual-helper-toggle.test.tsx +++ b/src/tests/unit/tests/common/components/cards/visual-helper-toggle.test.tsx @@ -40,7 +40,7 @@ describe('VisualHelperToggle', () => { it('fires toggleVisualHelper when toggled', async () => { useOriginalReactElements('@fluentui/react', ['Toggle']); - mockCardSelectionMessageCreator.setup(m => m.toggleVisualHelper(It.isAny())); + mockCardSelectionMessageCreator.setup(m => m.toggleVisualHelper(It.isAny(), It.isAny())); const renderResult = render( { @@ -117,8 +123,12 @@ describe('Card Selection Message Creator', () => { }); test('toggleVisualHelper', () => { - const payload: BaseActionPayload = { - telemetry: telemetryStub, + const payload: VisualizationTogglePayload = { + telemetry: { + enabled: true, + } as ToggleTelemetryData, + test: VisualizationType.Issues, + enabled: true, }; const expectedMessage: Message = { @@ -130,7 +140,7 @@ describe('Card Selection Message Creator', () => { .setup(tdfm => tdfm.withTriggeredByAndSource(eventStub, sourceStub)) .returns(() => telemetryStub); - testSubject.toggleVisualHelper(eventStub); + testSubject.toggleVisualHelper(eventStub, true); dispatcherMock.verify(dm => dm.dispatchMessage(expectedMessage), Times.once()); }); diff --git a/src/tests/unit/tests/common/message-creators/needs-review-card-selection-message-creator.test.ts b/src/tests/unit/tests/common/message-creators/needs-review-card-selection-message-creator.test.ts index 681ab8eb460..8a35340efec 100644 --- a/src/tests/unit/tests/common/message-creators/needs-review-card-selection-message-creator.test.ts +++ b/src/tests/unit/tests/common/message-creators/needs-review-card-selection-message-creator.test.ts @@ -4,13 +4,19 @@ import { BaseActionPayload, CardSelectionPayload, RuleExpandCollapsePayload, + VisualizationTogglePayload, } from 'background/actions/action-payloads'; -import { BaseTelemetryData, TelemetryEventSource } from 'common/extension-telemetry-events'; +import { + BaseTelemetryData, + TelemetryEventSource, + ToggleTelemetryData, +} from 'common/extension-telemetry-events'; import { Message } from 'common/message'; import { NeedsReviewCardSelectionMessageCreator } from 'common/message-creators/needs-review-card-selection-message-creator'; import { ActionMessageDispatcher } from 'common/message-creators/types/dispatcher'; import { Messages } from 'common/messages'; import { TelemetryDataFactory } from 'common/telemetry-data-factory'; +import { VisualizationType } from 'common/types/visualization-type'; import { IMock, Mock, Times } from 'typemoq'; describe('Needs Review Card Selection Message Creator', () => { @@ -117,8 +123,12 @@ describe('Needs Review Card Selection Message Creator', () => { }); test('toggleVisualHelper', () => { - const payload: BaseActionPayload = { - telemetry: telemetryStub, + const payload: VisualizationTogglePayload = { + telemetry: { + enabled: true, + } as ToggleTelemetryData, + test: VisualizationType.NeedsReview, + enabled: true, }; const expectedMessage: Message = { @@ -130,7 +140,7 @@ describe('Needs Review Card Selection Message Creator', () => { .setup(tdfm => tdfm.withTriggeredByAndSource(eventStub, sourceStub)) .returns(() => telemetryStub); - testSubject.toggleVisualHelper(eventStub); + testSubject.toggleVisualHelper(eventStub, true); dispatcherMock.verify(dm => dm.dispatchMessage(expectedMessage), Times.once()); }); diff --git a/tools/get-change-log-for-release.js b/tools/get-change-log-for-release.js index bf941b9395e..5462299e20e 100644 --- a/tools/get-change-log-for-release.js +++ b/tools/get-change-log-for-release.js @@ -11,9 +11,10 @@ const main = async () => { validateCommandLineArguments(params); const gitLogs = await getGitLogs(params.from, params.to); - - const outputContent = generateOutputContent(gitLogs, params.to); - + const outputContent = + params.kind === 'csv' + ? generateCSVContent(gitLogs, params.to) + : generateTextContent(gitLogs); ensureOutputFileExist(params.output); fs.writeFileSync(params.output, outputContent); @@ -62,14 +63,45 @@ const makePrLink = pr => { return pr; } - return `=HYPERLINK("https://github.com/microsoft/accessibility-insights-web/pull/${pr}", "#${pr}")`; + return `=HYPERLINK("${makePrURL(pr)}", "#${pr}")`; +}; + +const makePrURL = pr => { + return `https://github.com/microsoft/accessibility-insights-web/pull/${pr}`; }; const makeCommitLink = commit => { - return `=HYPERLINK("https://github.com/microsoft/accessibility-insights-web/commit/${commit}", "${commit}")`; + return `=HYPERLINK("${makeCommitURL(commit)}", "${commit}")`; +}; + +const makeCommitURL = commit => { + return `https://github.com/microsoft/accessibility-insights-web/commit/${commit}`; }; -const generateOutputContent = (gitLogs, version) => { +const generateTextContent = gitLogs => { + let outputText = ''; + gitLogs.all + .map(log => { + return { + dev: log.author_name, + pr: makePrURL(extractPrNumber(log.message)), + change: log.message, + group: getCommitType(log.message), + }; + }) + .filter(log => { + return ( + !['chore(deps-dev)'].includes(log.group) && !['dependabot[bot]'].includes(log.dev) + ); + }) + .sort((a, b) => a.group - b.group) + .forEach(log => { + outputText += `[tester]\n\tdev: ${log.dev}\n\tpr: ${log.pr}\n\tgroup: ${log.group}\n\tchange: ${log.change}\n`; + }); + return outputText; +}; + +const generateCSVContent = (gitLogs, version) => { const csvLogs = gitLogs.all .map(log => { return { @@ -107,6 +139,11 @@ const parseCommandLineArguments = () => { '-o, --output ', 'Path to the output file. Default: change-log.-.csv', ) + .option( + '-k, --kind ', + 'Type of desired output, csv or txt. Default: csv', + 'csv', + ) .parse(process.argv); return program.opts(); @@ -114,7 +151,6 @@ const parseCommandLineArguments = () => { const validateCommandLineArguments = program => { const errors = []; - if (!program.from) { errors.push('Missing param: from'); } @@ -123,8 +159,12 @@ const validateCommandLineArguments = program => { errors.push('Missing param: to'); } + if (!program.kind) { + program.kind = 'csv'; + } + if (!program.output) { - program.output = `change-log.${program.from}-${program.to}.csv`; + program.output = `change-log.${program.from}-${program.to}.${program.kind}`; } if (errors.length !== 0) { diff --git a/yarn.lock b/yarn.lock index 25688ae1048..9973f412c96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,7 +28,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.2": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.2": version: 7.24.2 resolution: "@babel/code-frame@npm:7.24.2" dependencies: @@ -38,6 +38,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": ^7.24.7 + picocolors: ^1.0.0 + checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.23.5": version: 7.24.4 resolution: "@babel/compat-data@npm:7.24.4" @@ -45,7 +55,14 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.9": +"@babel/compat-data@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/compat-data@npm:7.24.7" + checksum: 1fc276825dd434fe044877367dfac84171328e75a8483a6976aa28bf833b32367e90ee6df25bdd97c287d1aa8019757adcccac9153de70b1932c0d243a978ae9 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": version: 7.24.5 resolution: "@babel/core@npm:7.24.5" dependencies: @@ -68,6 +85,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/core@npm:7.24.7" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.24.7 + "@babel/helper-compilation-targets": ^7.24.7 + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helpers": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/template": ^7.24.7 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 017497e2a1b4683a885219eef7d2aee83c1c0cf353506b2e180b73540ec28841d8ef1ea1837fa69f8c561574b24ddd72f04764b27b87afedfe0a07299ccef24d + languageName: node + linkType: hard + "@babel/generator@npm:^7.24.5, @babel/generator@npm:^7.7.2": version: 7.24.5 resolution: "@babel/generator@npm:7.24.5" @@ -80,12 +120,24 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" +"@babel/generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/generator@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: 53da330f1835c46f26b7bf4da31f7a496dee9fd8696cca12366b94ba19d97421ce519a74a837f687749318f94d1a37f8d1abcbf35e8ed22c32d16373b2f6198d + "@babel/types": ^7.24.7 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^2.5.1 + checksum: 0ff31a73b15429f1287e4d57b439bba4a266f8c673bb445fe313b82f6d110f586776997eb723a777cd7adad9d340edd162aea4973a90112c5d0cfcaf6686844b + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 6178566099a6a0657db7a7fa601a54fb4731ca0b8614fbdccfd8e523c210c13963649bc8fdfd53ce7dd14d05e3dda2fb22dea5b30113c488b9eb1a906d60212e languageName: node linkType: hard @@ -102,22 +154,35 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.24.1, @babel/helper-create-class-features-plugin@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/helper-create-class-features-plugin@npm:7.24.5" +"@babel/helper-compilation-targets@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-compilation-targets@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-function-name": ^7.23.0 - "@babel/helper-member-expression-to-functions": ^7.24.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.24.1 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.24.5 + "@babel/compat-data": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + browserslist: ^4.22.2 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: dfc88bc35e223ade796c7267901728217c665adc5bc2e158f7b0ae850de14f1b7941bec4fe5950ae46236023cfbdeddd9c747c276acf9b39ca31f8dd97dc6cc6 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-create-class-features-plugin@npm:7.24.7" + dependencies: + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.7 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/helper-replace-supers": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: ea761c1155442620ee02920ec7c3190f869ff4d4fcab48a021a11fd8a46c046ed1facb070e5c76539c2b7efc2c8338f50f08a5e49d0ebf12e48743570e92247b + checksum: 371a181a1717a9b0cebc97727c8ea9ca6afa34029476a684b6030f9d1ad94dcdafd7de175da10b63ae3ba79e4e82404db8ed968ebf264b768f097e5d64faab71 languageName: node linkType: hard @@ -128,6 +193,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-environment-visitor@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-environment-visitor@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 079d86e65701b29ebc10baf6ed548d17c19b808a07aa6885cc141b690a78581b180ee92b580d755361dc3b16adf975b2d2058b8ce6c86675fcaf43cf22f2f7c6 + languageName: node + linkType: hard + "@babel/helper-function-name@npm:^7.23.0": version: 7.23.0 resolution: "@babel/helper-function-name@npm:7.23.0" @@ -138,6 +212,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-function-name@npm:7.24.7" + dependencies: + "@babel/template": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 142ee08922074dfdc0ff358e09ef9f07adf3671ab6eef4fca74dcf7a551f1a43717e7efa358c9e28d7eea84c28d7f177b7a58c70452fc312ae3b1893c5dab2a4 + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-hoist-variables@npm:7.22.5" @@ -147,12 +231,22 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.23.0, @babel/helper-member-expression-to-functions@npm:^7.24.5": - version: 7.24.5 - resolution: "@babel/helper-member-expression-to-functions@npm:7.24.5" +"@babel/helper-hoist-variables@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-hoist-variables@npm:7.24.7" dependencies: - "@babel/types": ^7.24.5 - checksum: d3ad681655128463aa5c2a239345687345f044542563506ee53c9636d147e97f93a470be320950a8ba5f497ade6b27a8136a3a681794867ff94b90060a6e427c + "@babel/types": ^7.24.7 + checksum: 6cfdcf2289cd12185dcdbdf2435fa8d3447b797ac75851166de9fc8503e2fd0021db6baf8dfbecad3753e582c08e6a3f805c8d00cbed756060a877d705bd8d8d + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 9fecf412f85fa23b7cf55d19eb69de39f8240426a028b141c9df2aed8cfedf20b3ec3318d40312eb7a3dec9eea792828ce0d590e0ff62da3da532482f537192c languageName: node linkType: hard @@ -165,7 +259,17 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.23.3, @babel/helper-module-transforms@npm:^7.24.5": +"@babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helper-module-transforms@npm:7.24.5" dependencies: @@ -180,36 +284,58 @@ __metadata: languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" +"@babel/helper-module-transforms@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-transforms@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: c70ef6cc6b6ed32eeeec4482127e8be5451d0e5282d5495d5d569d39eb04d7f1d66ec99b327f45d1d5842a9ad8c22d48567e93fc502003a47de78d122e355f7c + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: ddff3b41c2667876b4e4e73d961168f48a5ec9560c95c8c2d109e6221f9ca36c6f90c6317eb7a47f2a3c99419c356e529a86b79174cad0d4f7a61960866b88ca + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: 280654eaf90e92bf383d7eed49019573fb35a98c9e992668f701ad099957246721044be2068cf6840cb2299e0ad393705a1981c88c23a1048096a8d59e5f79a3 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.5, @babel/helper-plugin-utils@npm:^7.8.0": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.24.5 resolution: "@babel/helper-plugin-utils@npm:7.24.5" checksum: fa1450c92541b32fe18a6ae85e5c989296a284838fa0a282a2138732cae6f173f36d39dc724890c1740ae72d6d6fbca0b009916b168d4bc874bacc7e5c2fdce0 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/helper-replace-supers@npm:7.24.1" +"@babel/helper-plugin-utils@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-plugin-utils@npm:7.24.7" + checksum: 81f2a15751d892e4a8fce25390f973363a5b27596167861d2d6eab0f61856eb2ba389b031a9f19f669c0bd4dd601185828d3cebafd25431be7a1696f2ce3ef68 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-replace-supers@npm:7.24.7" dependencies: - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-member-expression-to-functions": ^7.23.0 - "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.7 + "@babel/helper-optimise-call-expression": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: c04182c34a3195c6396de2f2945f86cb60daa94ca7392db09bd8b0d4e7a15b02fbe1947c70f6062c87eadaea6d7135207129efa35cf458ea0987bab8c0f02d5a + checksum: 2bf0d113355c60d86a04e930812d36f5691f26c82d4ec1739e5ec0a4c982c9113dad3167f7c74f888a96328bd5e696372232406d8200e5979e6e0dc2af5e7c76 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.22.5, @babel/helper-simple-access@npm:^7.24.5": +"@babel/helper-simple-access@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helper-simple-access@npm:7.24.5" dependencies: @@ -218,12 +344,23 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: 1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 11b28fe534ce2b1a67c4d8e51a7b5711a2a0a0cae802f74614eee54cca58c744d9a62f6f60103c41759e81c537d270bfd665bf368a6bea214c6052f2094f8407 languageName: node linkType: hard @@ -236,6 +373,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-split-export-declaration@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-split-export-declaration@npm:7.24.7" + dependencies: + "@babel/types": ^7.24.7 + checksum: e3ddc91273e5da67c6953f4aa34154d005a00791dc7afa6f41894e768748540f6ebcac5d16e72541aea0c89bee4b89b4da6a3d65972a0ea8bfd2352eda5b7e22 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.24.1": version: 7.24.1 resolution: "@babel/helper-string-parser@npm:7.24.1" @@ -243,6 +389,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-string-parser@npm:7.24.7" + checksum: 09568193044a578743dd44bf7397940c27ea693f9812d24acb700890636b376847a611cdd0393a928544e79d7ad5b8b916bd8e6e772bc8a10c48a647a96e7b1a + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helper-validator-identifier@npm:7.24.5" @@ -250,6 +403,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5" @@ -257,6 +417,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-option@npm:7.24.7" + checksum: 9689166bf3f777dd424c026841c8cd651e41b21242dbfd4569a53086179a3e744c8eddd56e9d10b54142270141c91581b53af0d7c00c82d552d2540e2a919f7e + languageName: node + linkType: hard + "@babel/helpers@npm:^7.24.5": version: 7.24.5 resolution: "@babel/helpers@npm:7.24.5" @@ -268,6 +435,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helpers@npm:7.24.7" + dependencies: + "@babel/template": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 934da58098a3670ca7f9f42425b9c44d0ca4f8fad815c0f51d89fc7b64c5e0b4c7d5fec038599de691229ada737edeaf72fad3eba8e16dd5842e8ea447f76b66 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.24.2": version: 7.24.5 resolution: "@babel/highlight@npm:7.24.5" @@ -280,7 +457,19 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.5": +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": ^7.24.7 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.5": version: 7.24.5 resolution: "@babel/parser@npm:7.24.5" bin: @@ -289,6 +478,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/parser@npm:7.24.7" + bin: + parser: ./bin/babel-parser.js + checksum: fc9d2c4c8712f89672edc55c0dc5cf640dcec715b56480f111f85c2bc1d507e251596e4110d65796690a96ac37a4b60432af90b3e97bb47e69d4ef83872dbbd6 + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -322,14 +520,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/plugin-syntax-flow@npm:7.24.1" +"@babel/plugin-syntax-flow@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-flow@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.24.0 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 87dfe32f3a3ea77941034fb2a39fdfc9ea18a994b8df40c3659a11c8787b2bc5adea029259c4eafc03cd35f11628f6533aa2a06381db7fcbe3b2cc3c2a2bb54f + checksum: 43b78b5fcdedb2a6d80c3d02a1a564fbfde86b73b442d616a8f318f673caa6ce0151513af5a00fcae42a512f144e70ef259d368b9537ee35d40336a6c895a7d4 languageName: node linkType: hard @@ -355,7 +553,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.24.1, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.24.1 resolution: "@babel/plugin-syntax-jsx@npm:7.24.1" dependencies: @@ -443,7 +652,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.24.1, @babel/plugin-syntax-typescript@npm:^7.7.2": +"@babel/plugin-syntax-typescript@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 56fe84f3044ecbf038977281648db6b63bd1301f2fff6595820dc10ee276c1d1586919d48d52a8d497ecae32c958be38f42c1c8d174dc58aad856c516dc5b35a + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.24.1 resolution: "@babel/plugin-syntax-typescript@npm:7.24.1" dependencies: @@ -454,125 +674,125 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.22.5": - version: 7.24.1 - resolution: "@babel/plugin-transform-class-properties@npm:7.24.1" +"@babel/plugin-transform-class-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.24.1 - "@babel/helper-plugin-utils": ^7.24.0 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95779e9eef0c0638b9631c297d48aee53ffdbb2b1b5221bf40d7eccd566a8e34f859ff3571f8f20b9159b67f1bff7d7dc81da191c15d69fbae5a645197eae7e0 + checksum: 1348d7ce74da38ba52ea85b3b4289a6a86913748569ef92ef0cff30702a9eb849e5eaf59f1c6f3517059aa68115fb3067e389735dccacca39add4e2b0c67e291 languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.24.1" +"@babel/plugin-transform-flow-strip-types@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.24.0 - "@babel/plugin-syntax-flow": ^7.24.1 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-flow": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 83faac90c934e15a8fe813d90cbfdf8aa2cb2cc9108f55e4a1ecda1c3097735af6a0b6623057f059153b572bc1dd088aeb2ff24217e9de82ad2390ab1210d01b + checksum: 260bd95b1a90ff4af11bf8e21e6dd35b1b7863daffb12a5b2018e2806fec033a7883114dc5f0b67d594ca93fe6f2c9894944c865dd2c51affb7da0f9a6473872 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.23.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.1": - version: 7.24.1 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.1" +"@babel/plugin-transform-modules-commonjs@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.7" dependencies: - "@babel/helper-module-transforms": ^7.23.3 - "@babel/helper-plugin-utils": ^7.24.0 - "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 11402b34c49f76aa921b43c2d76f3f129a32544a1dc4f0d1e48b310f9036ab75269a6d8684ed0198b7a0b07bd7898b12f0cacceb26fbb167999fd2a819aa0802 + checksum: bfda2a0297197ed342e2a02e5f9847a489a3ae40a4a7d7f00f4aeb8544a85e9006e0c5271c8f61f39bc97975ef2717b5594cf9486694377a53433162909d64c1 languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11": - version: 7.24.1 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.1" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.24.0 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 74025e191ceb7cefc619c15d33753aab81300a03d81b96ae249d9b599bc65878f962d608f452462d3aad5d6e334b7ab2b09a6bdcfe8d101fe77ac7aacca4261e + checksum: 4a9221356401d87762afbc37a9e8e764afc2daf09c421117537820f8cfbed6876888372ad3a7bcfae2d45c95f026651f050ab4020b777be31d3ffb00908dbdd3 languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.23.0": - version: 7.24.5 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.5" +"@babel/plugin-transform-optional-chaining@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.24.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 233934463ef1f9a02a9fda96c722e9c162477fd94816a58413f0d4165cc536c7af0482b46fe066e754748a20bbabec255b4bbde194a7fd20b32280e526e1bfec + checksum: 877e7ce9097d475132c7f4d1244de50bb2fd37993dc4580c735f18f8cbc49282f6e77752821bcad5ca9d3528412d2c8a7ee0aa7ca71bb680ff82648e7a5fed25 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.22.5": - version: 7.24.1 - resolution: "@babel/plugin-transform-private-methods@npm:7.24.1" +"@babel/plugin-transform-private-methods@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.24.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.24.1 - "@babel/helper-plugin-utils": ^7.24.0 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7208c30bb3f3fbc73fb3a88bdcb78cd5cddaf6d523eb9d67c0c04e78f6fc6319ece89f4a5abc41777ceab16df55b3a13a4120e0efc9275ca6d2d89beaba80aa0 + checksum: c151548e34909be2adcceb224d8fdd70bafa393bc1559a600906f3f647317575bf40db670470934a360e90ee8084ef36dffa34ec25d387d414afd841e74cf3fe languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.24.1": - version: 7.24.5 - resolution: "@babel/plugin-transform-typescript@npm:7.24.5" +"@babel/plugin-transform-typescript@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-typescript@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.24.5 - "@babel/helper-plugin-utils": ^7.24.5 - "@babel/plugin-syntax-typescript": ^7.24.1 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-typescript": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a18b16c73ac0bb2d57aee95dd1619735bae1cee5c289aa60bafe4f72ddce920b743224f5a618157173fbb4fda63d4a5649ba52485fe72f7515d7257d115df057 + checksum: 6b367d1e3d6bdbe438878a76436fc6903e2b4fd7c31fa036d43865570d282679ec3f7c0306399851f2866a9b36686a0ea8c343df3750f70d427f1fe20ca54310 languageName: node linkType: hard -"@babel/preset-flow@npm:^7.22.15": - version: 7.24.1 - resolution: "@babel/preset-flow@npm:7.24.1" +"@babel/preset-flow@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/preset-flow@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.24.0 - "@babel/helper-validator-option": ^7.23.5 - "@babel/plugin-transform-flow-strip-types": ^7.24.1 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-transform-flow-strip-types": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f1402746050a1c03af9509791bb88e90d1d56a3063374278a80b030c6d1f48a462a822a1a66826d0a631cb5424fc70bf91a25de5f7f31ff519553a3e190a0b7e + checksum: 4caca02a6e0a477eb22994d686a1fbf65b5ab0240ae77530696434dba7efff4c5dcbf9186a774168dd4c492423141a22af3f2874c356aa22429f3c83eaf34419 languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.23.0": - version: 7.24.1 - resolution: "@babel/preset-typescript@npm:7.24.1" +"@babel/preset-typescript@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/preset-typescript@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.24.0 - "@babel/helper-validator-option": ^7.23.5 - "@babel/plugin-syntax-jsx": ^7.24.1 - "@babel/plugin-transform-modules-commonjs": ^7.24.1 - "@babel/plugin-transform-typescript": ^7.24.1 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-syntax-jsx": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.7 + "@babel/plugin-transform-typescript": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f3e0ff8c20dd5abc82614df2d7953f1549a98282b60809478f7dfb41c29be63720f2d1d7a51ef1f0d939b65e8666cb7d36e32bc4f8ac2b74c20664efd41e8bdd + checksum: 12929b24757f3bd6548103475f86478eda4c872bc7cefd920b29591eee8f4a4f350561d888e133d632d0c9402b8615fdcec9138e5127a6567dcb22f804ff207f languageName: node linkType: hard -"@babel/register@npm:^7.22.15": - version: 7.23.7 - resolution: "@babel/register@npm:7.23.7" +"@babel/register@npm:^7.24.6": + version: 7.24.6 + resolution: "@babel/register@npm:7.24.6" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 @@ -581,7 +801,7 @@ __metadata: source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c72a6d4856ef04f13490370d805854d2d98a77786bfaec7d85e2c585e1217011c4f3df18197a890e14520906c9111bef95551ba1a9b59c88df4dfc2dfe2c8d1b + checksum: 446316c80969df89ad3515576937ddf746cd4927810f226101a8d7f476b399c14c26847e77637e09355399c645fbf413d6e53ac6987b8cf240de7932a9372cb5 languageName: node linkType: hard @@ -605,6 +825,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/template@npm:7.24.7" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ea90792fae708ddf1632e54c25fe1a86643d8c0132311f81265d2bdbdd42f9f4fac65457056c1b6ca87f7aa0d6a795b549566774bba064bdcea2034ab3960ee9 + languageName: node + linkType: hard + "@babel/traverse@npm:^7.24.5": version: 7.24.5 resolution: "@babel/traverse@npm:7.24.5" @@ -623,6 +854,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/traverse@npm:7.24.7" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-hoist-variables": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/types": ^7.24.7 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 7cd366afe9e7ee77e493779fdf24f67bf5595247289364f4689e29688572505eaeb886d7a8f20ebb9c29fc2de7d0895e4ff9e203e78e39ac67239724d45aa83b + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.5, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": version: 7.24.5 resolution: "@babel/types@npm:7.24.5" @@ -634,6 +883,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/types@npm:7.24.7" + dependencies: + "@babel/helper-string-parser": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: 3e4437fced97e02982972ce5bebd318c47d42c9be2152c0fd28c6f786cc74086cc0a8fb83b602b846e41df37f22c36254338eada1a47ef9d8a1ec92332ca3ea8 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -1853,9 +2113,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^10.0.0": - version: 10.1.0 - resolution: "@testing-library/dom@npm:10.1.0" +"@testing-library/dom@npm:^10.3.1": + version: 10.3.1 + resolution: "@testing-library/dom@npm:10.3.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 @@ -1865,7 +2125,7 @@ __metadata: dom-accessibility-api: ^0.5.9 lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 275f53e57914e13361aa01a9fe155a3919ec911b61abddc44a7cd077e49d24672cdd43c76d840f7cdacea2f42c4aae92321066e6ddaff039f413745797d1b390 + checksum: 1afc3dc2ab742e15cf9560ec04bc7e493ad7644374d2bc6001a15542ed05c34fa6152a919cb170fc11e9a74602d8c7f31901f99af61ce25e76f20157b2e0805d languageName: node linkType: hard @@ -1902,21 +2162,23 @@ __metadata: languageName: node linkType: hard -"@testing-library/react@npm:^15.0.5": - version: 15.0.7 - resolution: "@testing-library/react@npm:15.0.7" +"@testing-library/react@npm:^16.0.0": + version: 16.0.0 + resolution: "@testing-library/react@npm:16.0.0" dependencies: "@babel/runtime": ^7.12.5 - "@testing-library/dom": ^10.0.0 - "@types/react-dom": ^18.0.0 peerDependencies: + "@testing-library/dom": ^10.0.0 "@types/react": ^18.0.0 + "@types/react-dom": ^18.0.0 react: ^18.0.0 react-dom: ^18.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: eb33fd82eb811bb8612aa154e430a2c1c251d5ed45a477ef57fe20095db494ea7dcfa6b1e1e2bffb0c7ee10c86e408745d95a879be8ca8fbe301bb91e5f2e5db + "@types/react-dom": + optional: true + checksum: 45a35f0b5f34b5a7f4dcefdd3f1d202d5421692e5cc7a491c9bc71e6ed9dd5872a182b80b4dfefb4a56d9c1df35e50f6fa2917bcf657cc26b4bc0d2259df0027 languageName: node linkType: hard @@ -2204,7 +2466,7 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.3.0": +"@types/react-dom@npm:^18.3.0": version: 18.3.0 resolution: "@types/react-dom@npm:18.3.0" dependencies: @@ -2789,7 +3051,7 @@ __metadata: axe-core: 4.9.1 classnames: ^2.5.1 lodash: ^4.17.21 - luxon: ^3.4.4 + luxon: ^3.5.0 react: ^18.3.1 react-dom: ^18.3.1 react-helmet-async: ^2.0.5 @@ -2805,7 +3067,7 @@ __metadata: axe-core: 4.9.1 classnames: ^2.5.1 lodash: ^4.17.21 - luxon: ^3.4.4 + luxon: ^3.5.0 react: ^18.3.1 react-dom: ^18.3.1 react-helmet-async: ^2.0.5 @@ -2823,8 +3085,9 @@ __metadata: "@microsoft/applicationinsights-web": ^2.8.15 "@swc/core": ^1.3.107 "@swc/jest": ^0.2.36 + "@testing-library/dom": ^10.3.1 "@testing-library/jest-dom": ^6.4.2 - "@testing-library/react": ^15.0.5 + "@testing-library/react": ^16.0.0 "@testing-library/user-event": ^14.5.2 "@types/chrome": 0.0.260 "@types/jest": ^29.5.11 @@ -2854,7 +3117,7 @@ __metadata: esbuild: ^0.20.2 eslint: ^8.57.0 eslint-plugin-import: ^2.29.1 - eslint-plugin-react: ^7.33.2 + eslint-plugin-react: ^7.34.4 eslint-plugin-security: ^1.7.1 express: ^4.19.2 extract-zip: ^2.0.1 @@ -2875,14 +3138,14 @@ __metadata: jest-environment-jsdom: ^29.7.0 jest-junit: ^16.0.0 js-yaml: ^4.1.0 - jscodeshift: ^0.15.2 + jscodeshift: ^0.16.1 license-check-and-add: ^4.0.5 lodash: ^4.17.21 - luxon: ^3.4.4 + luxon: ^3.5.0 mini-css-extract-plugin: 2.9.0 npm-run-all: ^4.1.5 - playwright: ^1.45.1 - postcss: ^8.4.35 + playwright: ^1.45.3 + postcss: ^8.4.41 postcss-modules: ^6.0.0 prettier: ^3.2.5 react: ^18.3.1 @@ -2906,7 +3169,7 @@ __metadata: typescript: ^5.4.5 ua-parser-js: ^1.0.37 uuid: ^9.0.1 - webextension-polyfill: ^0.10.0 + webextension-polyfill: ^0.12.0 webpack: ^5.91.0 webpack-cli: ^5.1.4 webpack-node-externals: ^3.0.0 @@ -3164,7 +3427,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7, array-includes@npm:^3.1.8": version: 3.1.8 resolution: "array-includes@npm:3.1.8" dependencies: @@ -3192,7 +3455,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlast@npm:^1.2.4": +"array.prototype.findlast@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlast@npm:1.2.5" dependencies: @@ -3256,16 +3519,16 @@ __metadata: languageName: node linkType: hard -"array.prototype.tosorted@npm:^1.1.3": - version: 1.1.3 - resolution: "array.prototype.tosorted@npm:1.1.3" +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" dependencies: - call-bind: ^1.0.5 + call-bind: ^1.0.7 define-properties: ^1.2.1 - es-abstract: ^1.22.3 - es-errors: ^1.1.0 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 es-shim-unscopables: ^1.0.2 - checksum: 555e8808086bbde9e634c5dc5a8c0a2f1773075447b43b2fa76ab4f94f4e90f416d2a4f881024e1ce1a2931614caf76cd6b408af901c9d7cd13061d0d268f5af + checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a languageName: node linkType: hard @@ -3354,15 +3617,6 @@ __metadata: languageName: node linkType: hard -"babel-core@npm:^7.0.0-bridge.0": - version: 7.0.0-bridge.0 - resolution: "babel-core@npm:7.0.0-bridge.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb - languageName: node - linkType: hard - "babel-jest@npm:^29.7.0": version: 29.7.0 resolution: "babel-jest@npm:29.7.0" @@ -3518,7 +3772,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": +"braces@npm:^3.0.2, braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -4357,7 +4611,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -4630,7 +4884,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": version: 1.23.3 resolution: "es-abstract@npm:1.23.3" dependencies: @@ -4693,14 +4947,14 @@ __metadata: languageName: node linkType: hard -"es-errors@npm:^1.1.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": +"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.17": +"es-iterator-helpers@npm:^1.0.19": version: 1.0.19 resolution: "es-iterator-helpers@npm:1.0.19" dependencies: @@ -5166,31 +5420,32 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:^7.33.2": - version: 7.34.1 - resolution: "eslint-plugin-react@npm:7.34.1" +"eslint-plugin-react@npm:^7.34.4": + version: 7.34.4 + resolution: "eslint-plugin-react@npm:7.34.4" dependencies: - array-includes: ^3.1.7 - array.prototype.findlast: ^1.2.4 + array-includes: ^3.1.8 + array.prototype.findlast: ^1.2.5 array.prototype.flatmap: ^1.3.2 array.prototype.toreversed: ^1.1.2 - array.prototype.tosorted: ^1.1.3 + array.prototype.tosorted: ^1.1.4 doctrine: ^2.1.0 - es-iterator-helpers: ^1.0.17 + es-iterator-helpers: ^1.0.19 estraverse: ^5.3.0 + hasown: ^2.0.2 jsx-ast-utils: ^2.4.1 || ^3.0.0 minimatch: ^3.1.2 - object.entries: ^1.1.7 - object.fromentries: ^2.0.7 - object.hasown: ^1.1.3 - object.values: ^1.1.7 + object.entries: ^1.1.8 + object.fromentries: ^2.0.8 + object.values: ^1.2.0 prop-types: ^15.8.1 resolve: ^2.0.0-next.5 semver: ^6.3.1 - string.prototype.matchall: ^4.0.10 + string.prototype.matchall: ^4.0.11 + string.prototype.repeat: ^1.0.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 82f391c5a093235c3bc2f664c54e009c49460778ee7d1b86c1536df9ac4d2a80d1dedc9241ac797df4a9dced936e955d9c89042fb3ac8d017b5359d1320d3c0f + checksum: 7bb7bdbec4ec628e1f139edbfa25f11ef6db8c92e9970866838bcb6d4dea471519dc0e5a0b3bd763afd1a8715fd54fe7f5317387580ff1e92eeb87eeba13bacf languageName: node linkType: hard @@ -6235,7 +6490,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -7812,30 +8067,29 @@ __metadata: languageName: node linkType: hard -"jscodeshift@npm:^0.15.2": - version: 0.15.2 - resolution: "jscodeshift@npm:0.15.2" - dependencies: - "@babel/core": ^7.23.0 - "@babel/parser": ^7.23.0 - "@babel/plugin-transform-class-properties": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.23.0 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 - "@babel/plugin-transform-optional-chaining": ^7.23.0 - "@babel/plugin-transform-private-methods": ^7.22.5 - "@babel/preset-flow": ^7.22.15 - "@babel/preset-typescript": ^7.23.0 - "@babel/register": ^7.22.15 - babel-core: ^7.0.0-bridge.0 +"jscodeshift@npm:^0.16.1": + version: 0.16.1 + resolution: "jscodeshift@npm:0.16.1" + dependencies: + "@babel/core": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/plugin-transform-class-properties": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.7 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.7 + "@babel/plugin-transform-private-methods": ^7.24.7 + "@babel/preset-flow": ^7.24.7 + "@babel/preset-typescript": ^7.24.7 + "@babel/register": ^7.24.6 chalk: ^4.1.2 flow-parser: 0.* graceful-fs: ^4.2.4 - micromatch: ^4.0.4 + micromatch: ^4.0.7 neo-async: ^2.5.0 node-dir: ^0.1.17 - recast: ^0.23.3 - temp: ^0.8.4 - write-file-atomic: ^2.3.0 + recast: ^0.23.9 + temp: ^0.9.4 + write-file-atomic: ^5.0.1 peerDependencies: "@babel/preset-env": ^7.1.6 peerDependenciesMeta: @@ -7843,7 +8097,7 @@ __metadata: optional: true bin: jscodeshift: bin/jscodeshift.js - checksum: e3fa018bfd0ee5b65da1b98797a2536ae8ff0185f0c0d11f9be11e27e1f25ab33a4e17cecc8b73ef520e5d9d8dade98abc49bc0835c024a0f1ff14b48288528b + checksum: d9dbe7d8e434c41205a7f968a1c10907d4a16b0fd755838e0f991cf70fe4ee3fc13485a9a689390087010c12c9953542ecb518aea908e3faf15da200f3a9df63 languageName: node linkType: hard @@ -8227,10 +8481,10 @@ __metadata: languageName: node linkType: hard -"luxon@npm:^3.4.4": - version: 3.4.4 - resolution: "luxon@npm:3.4.4" - checksum: 36c1f99c4796ee4bfddf7dc94fa87815add43ebc44c8934c924946260a58512f0fd2743a629302885df7f35ccbd2d13f178c15df046d0e3b6eb71db178f1c60c +"luxon@npm:^3.5.0": + version: 3.5.0 + resolution: "luxon@npm:3.5.0" + checksum: f290fe5788c8e51e748744f05092160d4be12150dca70f9fadc0d233e53d60ce86acd82e7d909a114730a136a77e56f0d3ebac6141bbb82fd310969a4704825b languageName: node linkType: hard @@ -8416,6 +8670,16 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.7": + version: 4.0.7 + resolution: "micromatch@npm:4.0.7" + dependencies: + braces: ^3.0.3 + picomatch: ^2.3.1 + checksum: 3cde047d70ad80cf60c787b77198d680db3b8c25b23feb01de5e2652205d9c19f43bd81882f69a0fd1f0cde6a7a122d774998aad3271ddb1b8accf8a0f480cf7 + languageName: node + linkType: hard + "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -8605,6 +8869,17 @@ __metadata: languageName: node linkType: hard +"mkdirp@npm:^0.5.1": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: ^1.2.6 + bin: + mkdirp: bin/cmd.js + checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -8886,7 +9161,7 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.7": +"object.entries@npm:^1.1.8": version: 1.1.8 resolution: "object.entries@npm:1.1.8" dependencies: @@ -8897,7 +9172,7 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.7": +"object.fromentries@npm:^2.0.7, object.fromentries@npm:^2.0.8": version: 2.0.8 resolution: "object.fromentries@npm:2.0.8" dependencies: @@ -8920,17 +9195,6 @@ __metadata: languageName: node linkType: hard -"object.hasown@npm:^1.1.3": - version: 1.1.4 - resolution: "object.hasown@npm:1.1.4" - dependencies: - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-object-atoms: ^1.0.0 - checksum: bc46eb5ca22106fcd07aab1411508c2c68b7565fe8fb272f166fb9bf203972e8b5c86a5a4b2c86204beead0626a7a4119d32cefbaf7c5dd57b400bf9e6363cb6 - languageName: node - linkType: hard - "object.map@npm:^1.0.1": version: 1.0.1 resolution: "object.map@npm:1.0.1" @@ -8950,7 +9214,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6, object.values@npm:^1.1.7": +"object.values@npm:^1.1.6, object.values@npm:^1.1.7, object.values@npm:^1.2.0": version: 1.2.0 resolution: "object.values@npm:1.2.0" dependencies: @@ -9353,27 +9617,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.45.1": - version: 1.45.1 - resolution: "playwright-core@npm:1.45.1" +"playwright-core@npm:1.45.3": + version: 1.45.3 + resolution: "playwright-core@npm:1.45.3" bin: playwright-core: cli.js - checksum: 1279cbf33d70a16f0451b590723a4b56bf3a96a9196f1d7bd76444fdd8c976bb7671698199ab4e0acaeb800c7aac48a62036e30f27fd37a74925b53b80f2e85f + checksum: cecb58877b2c643403d7a72c24a7aa0fdd087a3c7f9a5ea5403851336ea831d8e304b1f159aacbbabd12e5c47eaac054333746c9e5431ec07b13d64dbf3b50ec languageName: node linkType: hard -"playwright@npm:^1.45.1": - version: 1.45.1 - resolution: "playwright@npm:1.45.1" +"playwright@npm:^1.45.3": + version: 1.45.3 + resolution: "playwright@npm:1.45.3" dependencies: fsevents: 2.3.2 - playwright-core: 1.45.1 + playwright-core: 1.45.3 dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 34c589b3e7ef4d54782336167f8f3d1b456178b04b98eb8c944eaf21fd66cf5480e5f0c0ec8b846a69659b6fc31764283598aac5bb9307f7413f8fca81d40751 + checksum: d9d23b155ccd001553214f710561b01e48eb409676102f8ab94c0b4aa5ac5f398becc1a96528b0554944e07e34189503d891913e0e0a4aa58ad36b9c08747983 languageName: node linkType: hard @@ -9495,7 +9759,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.27, postcss@npm:^8.4.28, postcss@npm:^8.4.33, postcss@npm:^8.4.35": +"postcss@npm:^8.4.27, postcss@npm:^8.4.28, postcss@npm:^8.4.33": version: 8.4.38 resolution: "postcss@npm:8.4.38" dependencies: @@ -9506,6 +9770,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.41": + version: 8.4.41 + resolution: "postcss@npm:8.4.41" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.0.1 + source-map-js: ^1.2.0 + checksum: f865894929eb0f7fc2263811cc853c13b1c75103028b3f4f26df777e27b201f1abe21cb4aa4c2e901c80a04f6fb325ee22979688fe55a70e2ea82b0a517d3b6f + languageName: node + linkType: hard + "postinstall-build@npm:^5.0.1": version: 5.0.3 resolution: "postinstall-build@npm:5.0.3" @@ -9923,16 +10198,16 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.23.3": - version: 0.23.7 - resolution: "recast@npm:0.23.7" +"recast@npm:^0.23.9": + version: 0.23.9 + resolution: "recast@npm:0.23.9" dependencies: ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 tiny-invariant: ^1.3.3 tslib: ^2.0.1 - checksum: 297c2b59f66c2227eda815c2bff4dcb178010a6b6eb5c18e5e325d062c42ffc11d30641e9a2e90eb06d86320aa148cf4e96175c4a1532336d478a6edab0ea85a + checksum: be8e896a46b24e30fbeafcd111ff3beaf2b5532d241c199f833fe1c18e89f695b2704cf83f3006fa96a785851019031de0de50bd3e0fd7bb114be18bf2cad900 languageName: node linkType: hard @@ -10525,7 +10800,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -10789,7 +11064,7 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.10": +"string.prototype.matchall@npm:^4.0.11": version: 4.0.11 resolution: "string.prototype.matchall@npm:4.0.11" dependencies: @@ -10821,6 +11096,16 @@ __metadata: languageName: node linkType: hard +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: ^1.1.3 + es-abstract: ^1.17.5 + checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004 + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9" @@ -11196,12 +11481,13 @@ __metadata: languageName: node linkType: hard -"temp@npm:^0.8.4": - version: 0.8.4 - resolution: "temp@npm:0.8.4" +"temp@npm:^0.9.4": + version: 0.9.4 + resolution: "temp@npm:0.9.4" dependencies: + mkdirp: ^0.5.1 rimraf: ~2.6.2 - checksum: f35bed78565355dfdf95f730b7b489728bd6b7e35071bcc6497af7c827fb6c111fbe9063afc7b8cbc19522a072c278679f9a0ee81e684aa2c8617cc0f2e9c191 + checksum: 8709d4d63278bd309ca0e49e80a268308dea543a949e71acd427b3314cd9417da9a2cc73425dd9c21c6780334dbffd67e05e7be5aaa73e9affe8479afc6f20e3 languageName: node linkType: hard @@ -11836,10 +12122,10 @@ __metadata: languageName: node linkType: hard -"webextension-polyfill@npm:^0.10.0": - version: 0.10.0 - resolution: "webextension-polyfill@npm:0.10.0" - checksum: 4a59036bda571360c2c0b2fb03fe1dc244f233946bcf9a6766f677956c40fd14d270aaa69cdba95e4ac521014afbe4008bfa5959d0ac39f91c990eb206587f91 +"webextension-polyfill@npm:^0.12.0": + version: 0.12.0 + resolution: "webextension-polyfill@npm:0.12.0" + checksum: fc2166c8c9d3f32d7742727394092ff1a1eb19cbc4e5a73066d57f9bff1684e38342b90fabd23981e7295e904c536e8509552a64e989d217dae5de6ddca73532 languageName: node linkType: hard @@ -12165,17 +12451,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^2.3.0": - version: 2.4.3 - resolution: "write-file-atomic@npm:2.4.3" - dependencies: - graceful-fs: ^4.1.11 - imurmurhash: ^0.1.4 - signal-exit: ^3.0.2 - checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae - languageName: node - linkType: hard - "write-file-atomic@npm:^4.0.2": version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" @@ -12197,8 +12472,8 @@ __metadata: linkType: hard "ws@npm:^8.11.0": - version: 8.17.0 - resolution: "ws@npm:8.17.0" + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -12207,7 +12482,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 147ef9eab0251364e1d2c55338ad0efb15e6913923ccbfdf20f7a8a6cb8f88432bcd7f4d8f66977135bfad35575644f9983201c1a361019594a4e53977bf6d4e + checksum: 442badcce1f1178ec87a0b5372ae2e9771e07c4929a3180321901f226127f252441e8689d765aa5cfba5f50ac60dd830954afc5aeae81609aefa11d3ddf5cecf languageName: node linkType: hard