Merge pull request #28387 from element-hq/t3chguy/knip2
						commit
						6bc8080ec5
					
				| 
						 | 
				
			
			@ -1,60 +0,0 @@
 | 
			
		|||
module.exports = {
 | 
			
		||||
    plugins: ["matrix-org"],
 | 
			
		||||
    extends: ["./.eslintrc.js"],
 | 
			
		||||
    parserOptions: {
 | 
			
		||||
        project: ["./tsconfig.module_system.json"],
 | 
			
		||||
    },
 | 
			
		||||
    overrides: [
 | 
			
		||||
        {
 | 
			
		||||
            files: ["module_system/**/*.{ts,tsx}"],
 | 
			
		||||
            extends: ["plugin:matrix-org/typescript", "plugin:matrix-org/react"],
 | 
			
		||||
            // NOTE: These rules are frozen and new rules should not be added here.
 | 
			
		||||
            // New changes belong in https://github.com/matrix-org/eslint-plugin-matrix-org/
 | 
			
		||||
            rules: {
 | 
			
		||||
                // Things we do that break the ideal style
 | 
			
		||||
                "prefer-promise-reject-errors": "off",
 | 
			
		||||
                "quotes": "off",
 | 
			
		||||
 | 
			
		||||
                // We disable this while we're transitioning
 | 
			
		||||
                "@typescript-eslint/no-explicit-any": "off",
 | 
			
		||||
                // We're okay with assertion errors when we ask for them
 | 
			
		||||
                "@typescript-eslint/no-non-null-assertion": "off",
 | 
			
		||||
 | 
			
		||||
                // Ban matrix-js-sdk/src imports in favour of matrix-js-sdk/src/matrix imports to prevent unleashing hell.
 | 
			
		||||
                "no-restricted-imports": [
 | 
			
		||||
                    "error",
 | 
			
		||||
                    {
 | 
			
		||||
                        paths: [
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/src",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/src/",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/src/index",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                        ],
 | 
			
		||||
                        patterns: [
 | 
			
		||||
                            {
 | 
			
		||||
                                group: ["matrix-js-sdk/lib", "matrix-js-sdk/lib/", "matrix-js-sdk/lib/**"],
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/* instead",
 | 
			
		||||
                            },
 | 
			
		||||
                        ],
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										54
									
								
								.eslintrc.js
								
								
								
								
							
							
						
						
									
										54
									
								
								.eslintrc.js
								
								
								
								
							| 
						 | 
				
			
			@ -270,6 +270,60 @@ module.exports = {
 | 
			
		|||
                "react-hooks/rules-of-hooks": ["off"],
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            files: ["module_system/**/*.{ts,tsx}"],
 | 
			
		||||
            parserOptions: {
 | 
			
		||||
                project: ["./tsconfig.module_system.json"],
 | 
			
		||||
            },
 | 
			
		||||
            extends: ["plugin:matrix-org/typescript", "plugin:matrix-org/react"],
 | 
			
		||||
            // NOTE: These rules are frozen and new rules should not be added here.
 | 
			
		||||
            // New changes belong in https://github.com/matrix-org/eslint-plugin-matrix-org/
 | 
			
		||||
            rules: {
 | 
			
		||||
                // Things we do that break the ideal style
 | 
			
		||||
                "prefer-promise-reject-errors": "off",
 | 
			
		||||
                "quotes": "off",
 | 
			
		||||
 | 
			
		||||
                // We disable this while we're transitioning
 | 
			
		||||
                "@typescript-eslint/no-explicit-any": "off",
 | 
			
		||||
                // We're okay with assertion errors when we ask for them
 | 
			
		||||
                "@typescript-eslint/no-non-null-assertion": "off",
 | 
			
		||||
 | 
			
		||||
                // Ban matrix-js-sdk/src imports in favour of matrix-js-sdk/src/matrix imports to prevent unleashing hell.
 | 
			
		||||
                "no-restricted-imports": [
 | 
			
		||||
                    "error",
 | 
			
		||||
                    {
 | 
			
		||||
                        paths: [
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/src",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/src/",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                            {
 | 
			
		||||
                                name: "matrix-js-sdk/src/index",
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/matrix instead",
 | 
			
		||||
                            },
 | 
			
		||||
                        ],
 | 
			
		||||
                        patterns: [
 | 
			
		||||
                            {
 | 
			
		||||
                                group: ["matrix-js-sdk/lib", "matrix-js-sdk/lib/", "matrix-js-sdk/lib/**"],
 | 
			
		||||
                                message: "Please use matrix-js-sdk/src/* instead",
 | 
			
		||||
                            },
 | 
			
		||||
                        ],
 | 
			
		||||
                    },
 | 
			
		||||
                ],
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
    ],
 | 
			
		||||
    settings: {
 | 
			
		||||
        react: {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -123,6 +123,12 @@ jobs:
 | 
			
		|||
                  cache: "yarn"
 | 
			
		||||
                  node-version: "lts/*"
 | 
			
		||||
 | 
			
		||||
            - name: Install Deps
 | 
			
		||||
              run: "yarn install --frozen-lockfile"
 | 
			
		||||
 | 
			
		||||
            - name: Run linter
 | 
			
		||||
              run: "yarn run lint:knip"
 | 
			
		||||
 | 
			
		||||
            - name: Install Deps
 | 
			
		||||
              run: "scripts/layered.sh"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,6 @@
 | 
			
		|||
    "*": "prettier --write",
 | 
			
		||||
    "src/**/*.(ts|tsx)": ["eslint --fix"],
 | 
			
		||||
    "scripts/**/*.(ts|tsx)": ["eslint --fix"],
 | 
			
		||||
    "module_system/**/*.(ts|tsx)": ["eslint --fix --config .eslintrc-module_system.js module_system"],
 | 
			
		||||
    "module_system/**/*.(ts|tsx)": ["eslint --fix"],
 | 
			
		||||
    "*.pcss": ["stylelint --fix"]
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
module.exports = {
 | 
			
		||||
    extends: ["stylelint-config-standard"],
 | 
			
		||||
    customSyntax: require("postcss-scss"),
 | 
			
		||||
    customSyntax: "postcss-scss",
 | 
			
		||||
    plugins: ["stylelint-scss"],
 | 
			
		||||
    rules: {
 | 
			
		||||
        "comment-empty-line-before": null,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
import { KnipConfig } from "knip";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    entry: [
 | 
			
		||||
        "src/vector/index.ts",
 | 
			
		||||
        "src/serviceworker/index.ts",
 | 
			
		||||
        "src/workers/*.worker.ts",
 | 
			
		||||
        "src/utils/exportUtils/exportJS.js",
 | 
			
		||||
        "scripts/**",
 | 
			
		||||
        "playwright/**",
 | 
			
		||||
        "test/**",
 | 
			
		||||
        "res/decoder-ring/**",
 | 
			
		||||
    ],
 | 
			
		||||
    project: ["**/*.{js,ts,jsx,tsx}"],
 | 
			
		||||
    ignore: [
 | 
			
		||||
        "docs/**",
 | 
			
		||||
        "res/jitsi_external_api.min.js",
 | 
			
		||||
        // Used by jest
 | 
			
		||||
        "__mocks__/maplibre-gl.js",
 | 
			
		||||
        // Keep for now
 | 
			
		||||
        "src/hooks/useLocalStorageState.ts",
 | 
			
		||||
        "src/components/views/elements/InfoTooltip.tsx",
 | 
			
		||||
        "src/components/views/elements/StyledCheckbox.tsx",
 | 
			
		||||
    ],
 | 
			
		||||
    ignoreDependencies: [
 | 
			
		||||
        // Required for `action-validator`
 | 
			
		||||
        "@action-validator/*",
 | 
			
		||||
        // Used for git pre-commit hooks
 | 
			
		||||
        "husky",
 | 
			
		||||
        // Used by jest
 | 
			
		||||
        "babel-jest",
 | 
			
		||||
        // Used by babel
 | 
			
		||||
        "@babel/runtime",
 | 
			
		||||
        "@babel/plugin-transform-class-properties",
 | 
			
		||||
        // Referenced in PCSS
 | 
			
		||||
        "github-markdown-css",
 | 
			
		||||
        // False positive
 | 
			
		||||
        "sw.js",
 | 
			
		||||
        // Used by webpack
 | 
			
		||||
        "buffer",
 | 
			
		||||
        "process",
 | 
			
		||||
        "util",
 | 
			
		||||
        // Used by workflows
 | 
			
		||||
        "ts-prune",
 | 
			
		||||
        // Required due to bug in bloom-filters https://github.com/Callidon/bloom-filters/issues/75
 | 
			
		||||
        "@types/seedrandom",
 | 
			
		||||
    ],
 | 
			
		||||
    ignoreBinaries: [
 | 
			
		||||
        // Used in scripts & workflows
 | 
			
		||||
        "jq",
 | 
			
		||||
    ],
 | 
			
		||||
    ignoreExportsUsedInFile: true,
 | 
			
		||||
} satisfies KnipConfig;
 | 
			
		||||
							
								
								
									
										26
									
								
								package.json
								
								
								
								
							
							
						
						
									
										26
									
								
								package.json
								
								
								
								
							| 
						 | 
				
			
			@ -35,7 +35,7 @@
 | 
			
		|||
        "i18n:lint": "matrix-i18n-lint && prettier --log-level=silent --write src/i18n/strings/ --ignore-path /dev/null",
 | 
			
		||||
        "i18n:diff": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && yarn i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json",
 | 
			
		||||
        "make-component": "node scripts/make-react-component.js",
 | 
			
		||||
        "rethemendex": "res/css/rethemendex.sh",
 | 
			
		||||
        "rethemendex": "./res/css/rethemendex.sh",
 | 
			
		||||
        "clean": "rimraf lib webapp",
 | 
			
		||||
        "build": "yarn clean && yarn build:genfiles && yarn build:bundle",
 | 
			
		||||
        "build-stats": "yarn clean && yarn build:genfiles && yarn build:bundle-stats",
 | 
			
		||||
| 
						 | 
				
			
			@ -45,23 +45,20 @@
 | 
			
		|||
        "build:bundle": "webpack --progress --mode production",
 | 
			
		||||
        "build:bundle-stats": "webpack --progress --mode production --json > webpack-stats.json",
 | 
			
		||||
        "build:module_system": "ts-node --project ./tsconfig.module_system.json module_system/scripts/install.ts",
 | 
			
		||||
        "dist": "scripts/package.sh",
 | 
			
		||||
        "dist": "./scripts/package.sh",
 | 
			
		||||
        "start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n modules,res \"yarn build:module_system\" \"yarn build:res\" && concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"",
 | 
			
		||||
        "start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js --server-type https\"",
 | 
			
		||||
        "start:res": "ts-node scripts/copy-res.ts -w",
 | 
			
		||||
        "start:js": "webpack serve --output-path webapp --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js --mode development",
 | 
			
		||||
        "lint": "yarn lint:types && yarn lint:js && yarn lint:style && yarn lint:workflows",
 | 
			
		||||
        "lint:js": "yarn lint:js:src && yarn lint:js:module_system",
 | 
			
		||||
        "lint:js:src": "eslint --max-warnings 0 src test playwright && prettier --check .",
 | 
			
		||||
        "lint:js:module_system": "eslint --max-warnings 0 --config .eslintrc-module_system.js module_system",
 | 
			
		||||
        "lint:js-fix": "yarn lint:js-fix:src && yarn lint:js-fix:module_system",
 | 
			
		||||
        "lint:js-fix:src": "prettier --log-level=warn --write . && eslint --fix src test playwright",
 | 
			
		||||
        "lint:js-fix:module_system": "eslint --fix --config .eslintrc-module_system.js module_system",
 | 
			
		||||
        "lint:js": "eslint --max-warnings 0 src test playwright module_system && prettier --check .",
 | 
			
		||||
        "lint:js-fix": "prettier --log-level=warn --write . && eslint --fix src test playwright module_system",
 | 
			
		||||
        "lint:types": "yarn lint:types:src && yarn lint:types:module_system",
 | 
			
		||||
        "lint:types:src": "tsc --noEmit --jsx react && tsc --noEmit --jsx react -p playwright",
 | 
			
		||||
        "lint:types:module_system": "tsc --noEmit --project ./tsconfig.module_system.json",
 | 
			
		||||
        "lint:style": "stylelint \"res/css/**/*.pcss\"",
 | 
			
		||||
        "lint:workflows": "find .github/workflows -type f \\( -iname '*.yaml' -o -iname '*.yml' \\) | xargs -I {} sh -c 'echo \"Linting {}\"; action-validator \"{}\"'",
 | 
			
		||||
        "lint:knip": "knip",
 | 
			
		||||
        "test": "jest",
 | 
			
		||||
        "test:playwright": "playwright test",
 | 
			
		||||
        "test:playwright:open": "yarn test:playwright --ui",
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +71,6 @@
 | 
			
		|||
        "update:jitsi": "curl -s https://meet.element.io/libs/external_api.min.js > ./res/jitsi_external_api.min.js"
 | 
			
		||||
    },
 | 
			
		||||
    "resolutions": {
 | 
			
		||||
        "@types/seedrandom": "3.0.8",
 | 
			
		||||
        "oidc-client-ts": "3.1.0",
 | 
			
		||||
        "jwt-decode": "4.0.0",
 | 
			
		||||
        "caniuse-lite": "1.0.30001668",
 | 
			
		||||
| 
						 | 
				
			
			@ -96,7 +92,7 @@
 | 
			
		|||
        "@zxcvbn-ts/language-common": "^3.0.4",
 | 
			
		||||
        "@zxcvbn-ts/language-en": "^3.0.2",
 | 
			
		||||
        "await-lock": "^2.1.0",
 | 
			
		||||
        "bloom-filters": "^3.0.1",
 | 
			
		||||
        "bloom-filters": "^3.0.2",
 | 
			
		||||
        "blurhash": "^2.0.3",
 | 
			
		||||
        "browserslist": "^4.23.2",
 | 
			
		||||
        "classnames": "^2.2.6",
 | 
			
		||||
| 
						 | 
				
			
			@ -155,11 +151,9 @@
 | 
			
		|||
        "@action-validator/cli": "^0.6.0",
 | 
			
		||||
        "@action-validator/core": "^0.6.0",
 | 
			
		||||
        "@axe-core/playwright": "^4.8.1",
 | 
			
		||||
        "@babel/cli": "^7.12.10",
 | 
			
		||||
        "@babel/core": "^7.12.10",
 | 
			
		||||
        "@babel/eslint-parser": "^7.12.10",
 | 
			
		||||
        "@babel/eslint-plugin": "^7.12.10",
 | 
			
		||||
        "@babel/parser": "^7.12.11",
 | 
			
		||||
        "@babel/plugin-proposal-export-default-from": "^7.12.1",
 | 
			
		||||
        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
 | 
			
		||||
        "@babel/plugin-transform-class-properties": "^7.12.1",
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +166,6 @@
 | 
			
		|||
        "@babel/preset-env": "^7.12.11",
 | 
			
		||||
        "@babel/preset-react": "^7.12.10",
 | 
			
		||||
        "@babel/preset-typescript": "^7.12.7",
 | 
			
		||||
        "@babel/register": "^7.12.10",
 | 
			
		||||
        "@babel/runtime": "^7.12.5",
 | 
			
		||||
        "@casualbot/jest-sonar-reporter": "2.2.7",
 | 
			
		||||
        "@peculiar/webcrypto": "^1.4.3",
 | 
			
		||||
| 
						 | 
				
			
			@ -186,7 +179,6 @@
 | 
			
		|||
        "@testing-library/react": "^16.0.0",
 | 
			
		||||
        "@testing-library/user-event": "^14.5.2",
 | 
			
		||||
        "@types/commonmark": "^0.27.4",
 | 
			
		||||
        "@types/content-type": "^1.1.5",
 | 
			
		||||
        "@types/counterpart": "^0.18.1",
 | 
			
		||||
        "@types/css-tree": "^2.3.8",
 | 
			
		||||
        "@types/diff-match-patch": "^1.0.32",
 | 
			
		||||
| 
						 | 
				
			
			@ -211,7 +203,6 @@
 | 
			
		|||
        "@types/react-dom": "18.3.1",
 | 
			
		||||
        "@types/react-transition-group": "^4.4.0",
 | 
			
		||||
        "@types/sanitize-html": "2.13.0",
 | 
			
		||||
        "@types/sdp-transform": "^2.4.6",
 | 
			
		||||
        "@types/seedrandom": "3.0.8",
 | 
			
		||||
        "@types/semver": "^7.5.8",
 | 
			
		||||
        "@types/tar-js": "^0.3.5",
 | 
			
		||||
| 
						 | 
				
			
			@ -219,7 +210,6 @@
 | 
			
		|||
        "@types/uuid": "^10.0.0",
 | 
			
		||||
        "@typescript-eslint/eslint-plugin": "^8.0.0",
 | 
			
		||||
        "@typescript-eslint/parser": "^8.0.0",
 | 
			
		||||
        "axe-core": "4.10.2",
 | 
			
		||||
        "babel-jest": "^29.0.0",
 | 
			
		||||
        "babel-loader": "^9.0.0",
 | 
			
		||||
        "babel-plugin-jsx-remove-data-test-id": "^3.0.0",
 | 
			
		||||
| 
						 | 
				
			
			@ -259,14 +249,12 @@
 | 
			
		|||
        "jest-mock": "^29.6.2",
 | 
			
		||||
        "jest-raw-loader": "^1.0.1",
 | 
			
		||||
        "jsqr": "^1.4.0",
 | 
			
		||||
        "knip": "^5.36.2",
 | 
			
		||||
        "lint-staged": "^15.0.2",
 | 
			
		||||
        "mailhog": "^4.16.0",
 | 
			
		||||
        "matrix-mock-request": "^2.5.0",
 | 
			
		||||
        "matrix-web-i18n": "^3.2.1",
 | 
			
		||||
        "mini-css-extract-plugin": "2.9.0",
 | 
			
		||||
        "minimist": "^1.2.6",
 | 
			
		||||
        "mkdirp": "^3.0.0",
 | 
			
		||||
        "mocha-junit-reporter": "^2.2.0",
 | 
			
		||||
        "modernizr": "^3.12.0",
 | 
			
		||||
        "node-fetch": "^2.6.7",
 | 
			
		||||
        "playwright-core": "^1.45.1",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,14 +14,6 @@ export type ComponentClass = keyof JSX.IntrinsicElements | JSXElementConstructor
 | 
			
		|||
 | 
			
		||||
export type { Leaves } from "matrix-web-i18n";
 | 
			
		||||
 | 
			
		||||
export type RecursivePartial<T> = {
 | 
			
		||||
    [P in keyof T]?: T[P] extends (infer U)[]
 | 
			
		||||
        ? RecursivePartial<U>[]
 | 
			
		||||
        : T[P] extends object
 | 
			
		||||
          ? RecursivePartial<T[P]>
 | 
			
		||||
          : T[P];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export type KeysStartingWith<Input extends object, Str extends string> = {
 | 
			
		||||
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
			
		||||
    [P in keyof Input]: P extends `${Str}${infer _X}` ? P : never; // we don't use _X
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,6 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
 | 
			
		|||
Please see LICENSE files in the repository root for full details.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// @ts-ignore - `.ts` is needed here to make TS happy
 | 
			
		||||
import { Request, Response } from "./workers/blurhash.worker.ts";
 | 
			
		||||
import { WorkerManager } from "./WorkerManager";
 | 
			
		||||
import blurhashWorkerFactory from "./workers/blurhashWorkerFactory";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ import { IDeferred, defer } from "matrix-js-sdk/src/utils";
 | 
			
		|||
import { TypedEventEmitter } from "matrix-js-sdk/src/matrix";
 | 
			
		||||
import { Glass, TooltipProvider } from "@vector-im/compound-web";
 | 
			
		||||
 | 
			
		||||
import dis, { defaultDispatcher } from "./dispatcher/dispatcher";
 | 
			
		||||
import defaultDispatcher from "./dispatcher/dispatcher";
 | 
			
		||||
import AsyncWrapper from "./AsyncWrapper";
 | 
			
		||||
import { Defaultize } from "./@types/common";
 | 
			
		||||
import { ActionPayload } from "./dispatcher/payloads";
 | 
			
		||||
| 
						 | 
				
			
			@ -396,7 +396,7 @@ export class ModalManager extends TypedEventEmitter<ModalManagerEvent, HandlerMa
 | 
			
		|||
        if (this.modals.length === 0 && !this.priorityModal && !this.staticModal) {
 | 
			
		||||
            // If there is no modal to render, make all of Element available
 | 
			
		||||
            // to screen reader users again
 | 
			
		||||
            dis.dispatch({
 | 
			
		||||
            defaultDispatcher.dispatch({
 | 
			
		||||
                action: "aria_unhide_main_app",
 | 
			
		||||
            });
 | 
			
		||||
            ModalManager.getOrCreateRoot().render(<></>);
 | 
			
		||||
| 
						 | 
				
			
			@ -407,7 +407,7 @@ export class ModalManager extends TypedEventEmitter<ModalManagerEvent, HandlerMa
 | 
			
		|||
        // Hide the content outside the modal to screen reader users
 | 
			
		||||
        // so they won't be able to navigate into it and act on it using
 | 
			
		||||
        // screen reader specific features
 | 
			
		||||
        dis.dispatch({
 | 
			
		||||
        defaultDispatcher.dispatch({
 | 
			
		||||
            action: "aria_hide_main_app",
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,6 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
 | 
			
		|||
Please see LICENSE files in the repository root for full details.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// @ts-ignore - `.ts` is needed here to make TS happy
 | 
			
		||||
import { Request, Response } from "./workers/playback.worker";
 | 
			
		||||
import { WorkerManager } from "./WorkerManager";
 | 
			
		||||
import playbackWorkerFactory from "./workers/playbackWorkerFactory";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,4 +31,3 @@ export const BackdropPanel: React.FC<IProps> = ({ backgroundImage, blurMultiplie
 | 
			
		|||
        </div>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
export default BackdropPanel;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,11 +49,10 @@ import LegacyCallHandler, { LegacyCallHandlerEvent } from "../../LegacyCallHandl
 | 
			
		|||
import AudioFeedArrayForLegacyCall from "../views/voip/AudioFeedArrayForLegacyCall";
 | 
			
		||||
import { OwnProfileStore } from "../../stores/OwnProfileStore";
 | 
			
		||||
import { UPDATE_EVENT } from "../../stores/AsyncStore";
 | 
			
		||||
import RoomView from "./RoomView";
 | 
			
		||||
import type { RoomView as RoomViewType } from "./RoomView";
 | 
			
		||||
import { RoomView } from "./RoomView";
 | 
			
		||||
import ToastContainer from "./ToastContainer";
 | 
			
		||||
import UserView from "./UserView";
 | 
			
		||||
import BackdropPanel from "./BackdropPanel";
 | 
			
		||||
import { BackdropPanel } from "./BackdropPanel";
 | 
			
		||||
import { mediaFromMxc } from "../../customisations/Media";
 | 
			
		||||
import { UserTab } from "../views/dialogs/UserTab";
 | 
			
		||||
import { OpenToTabPayload } from "../../dispatcher/payloads/OpenToTabPayload";
 | 
			
		||||
| 
						 | 
				
			
			@ -125,7 +124,7 @@ class LoggedInView extends React.Component<IProps, IState> {
 | 
			
		|||
    public static displayName = "LoggedInView";
 | 
			
		||||
 | 
			
		||||
    protected readonly _matrixClient: MatrixClient;
 | 
			
		||||
    protected readonly _roomView: React.RefObject<RoomViewType>;
 | 
			
		||||
    protected readonly _roomView: React.RefObject<RoomView>;
 | 
			
		||||
    protected readonly _resizeContainer: React.RefObject<HTMLDivElement>;
 | 
			
		||||
    protected readonly resizeHandler: React.RefObject<HTMLDivElement>;
 | 
			
		||||
    protected layoutWatcherRef?: string;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ import ResizeNotifier from "../../utils/ResizeNotifier";
 | 
			
		|||
import ContentMessages from "../../ContentMessages";
 | 
			
		||||
import Modal from "../../Modal";
 | 
			
		||||
import { LegacyCallHandlerEvent } from "../../LegacyCallHandler";
 | 
			
		||||
import dis, { defaultDispatcher } from "../../dispatcher/dispatcher";
 | 
			
		||||
import defaultDispatcher from "../../dispatcher/dispatcher";
 | 
			
		||||
import * as Rooms from "../../Rooms";
 | 
			
		||||
import MainSplit from "./MainSplit";
 | 
			
		||||
import RightPanel from "./RightPanel";
 | 
			
		||||
| 
						 | 
				
			
			@ -437,7 +437,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
 | 
			
		||||
    private onWidgetLayoutChange = (): void => {
 | 
			
		||||
        if (!this.state.room) return;
 | 
			
		||||
        dis.dispatch({
 | 
			
		||||
        defaultDispatcher.dispatch({
 | 
			
		||||
            action: "appsDrawer",
 | 
			
		||||
            show: true,
 | 
			
		||||
        });
 | 
			
		||||
| 
						 | 
				
			
			@ -598,7 +598,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
            // Handle the use case of a link to a thread message
 | 
			
		||||
            // ie: #/room/roomId/eventId (eventId of a thread message)
 | 
			
		||||
            if (thread?.rootEvent && !initialEvent?.isThreadRoot) {
 | 
			
		||||
                dis.dispatch<ShowThreadPayload>({
 | 
			
		||||
                defaultDispatcher.dispatch<ShowThreadPayload>({
 | 
			
		||||
                    action: Action.ShowThread,
 | 
			
		||||
                    rootEvent: thread.rootEvent,
 | 
			
		||||
                    initialEvent,
 | 
			
		||||
| 
						 | 
				
			
			@ -704,7 +704,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        const activeCall = CallStore.instance.getActiveCall(this.state.roomId);
 | 
			
		||||
        if (activeCall === null) {
 | 
			
		||||
            // We disconnected from the call, so stop viewing it
 | 
			
		||||
            dis.dispatch<ViewRoomPayload>(
 | 
			
		||||
            defaultDispatcher.dispatch<ViewRoomPayload>(
 | 
			
		||||
                {
 | 
			
		||||
                    action: Action.ViewRoom,
 | 
			
		||||
                    room_id: this.state.roomId,
 | 
			
		||||
| 
						 | 
				
			
			@ -850,7 +850,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
    public componentDidMount(): void {
 | 
			
		||||
        this.unmounted = false;
 | 
			
		||||
 | 
			
		||||
        this.dispatcherRef = dis.register(this.onAction);
 | 
			
		||||
        this.dispatcherRef = defaultDispatcher.register(this.onAction);
 | 
			
		||||
        if (this.context.client) {
 | 
			
		||||
            this.context.client.on(ClientEvent.Room, this.onRoom);
 | 
			
		||||
            this.context.client.on(RoomEvent.Timeline, this.onRoomTimeline);
 | 
			
		||||
| 
						 | 
				
			
			@ -967,7 +967,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        // stop tracking room changes to format permalinks
 | 
			
		||||
        this.stopAllPermalinkCreators();
 | 
			
		||||
 | 
			
		||||
        dis.unregister(this.dispatcherRef);
 | 
			
		||||
        defaultDispatcher.unregister(this.dispatcherRef);
 | 
			
		||||
        if (this.context.client) {
 | 
			
		||||
            this.context.client.removeListener(ClientEvent.Room, this.onRoom);
 | 
			
		||||
            this.context.client.removeListener(RoomEvent.Timeline, this.onRoomTimeline);
 | 
			
		||||
| 
						 | 
				
			
			@ -1045,7 +1045,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
                handled = true;
 | 
			
		||||
                break;
 | 
			
		||||
            case KeyBindingAction.UploadFile: {
 | 
			
		||||
                dis.dispatch(
 | 
			
		||||
                defaultDispatcher.dispatch(
 | 
			
		||||
                    {
 | 
			
		||||
                        action: "upload_file",
 | 
			
		||||
                        context: TimelineRenderingType.Room,
 | 
			
		||||
| 
						 | 
				
			
			@ -1145,7 +1145,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
                if (payload.event && payload.event.getRoomId() !== this.state.roomId) {
 | 
			
		||||
                    // If the event is in a different room (e.g. because the event to be edited is being displayed
 | 
			
		||||
                    // in the results of an all-rooms search), we need to view that room first.
 | 
			
		||||
                    dis.dispatch<ViewRoomPayload>({
 | 
			
		||||
                    defaultDispatcher.dispatch<ViewRoomPayload>({
 | 
			
		||||
                        action: Action.ViewRoom,
 | 
			
		||||
                        room_id: payload.event.getRoomId(),
 | 
			
		||||
                        metricsTrigger: undefined,
 | 
			
		||||
| 
						 | 
				
			
			@ -1188,7 +1188,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
                }
 | 
			
		||||
 | 
			
		||||
                // re-dispatch to the correct composer
 | 
			
		||||
                dis.dispatch<ComposerInsertPayload>({
 | 
			
		||||
                defaultDispatcher.dispatch<ComposerInsertPayload>({
 | 
			
		||||
                    ...(payload as ComposerInsertPayload),
 | 
			
		||||
                    timelineRenderingType,
 | 
			
		||||
                    composerType: this.state.editState ? ComposerType.Edit : ComposerType.Send,
 | 
			
		||||
| 
						 | 
				
			
			@ -1197,7 +1197,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
            }
 | 
			
		||||
 | 
			
		||||
            case Action.FocusAComposer: {
 | 
			
		||||
                dis.dispatch<FocusComposerPayload>({
 | 
			
		||||
                defaultDispatcher.dispatch<FocusComposerPayload>({
 | 
			
		||||
                    ...(payload as FocusComposerPayload),
 | 
			
		||||
                    // re-dispatch to the correct composer (the send message will still be on screen even when editing a message)
 | 
			
		||||
                    action: this.state.editState ? Action.FocusEditMessageComposer : Action.FocusSendMessageComposer,
 | 
			
		||||
| 
						 | 
				
			
			@ -1303,7 +1303,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
            if (containsEmoji(ev.getContent(), effect.emojis) || ev.getContent().msgtype === effect.msgType) {
 | 
			
		||||
                // For initial threads launch, chat effects are disabled see #19731
 | 
			
		||||
                if (!ev.isRelation(THREAD_RELATION_TYPE.name)) {
 | 
			
		||||
                    dis.dispatch({ action: `effects.${effect.command}`, event: ev });
 | 
			
		||||
                    defaultDispatcher.dispatch({ action: `effects.${effect.command}`, event: ev });
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
| 
						 | 
				
			
			@ -1363,7 +1363,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
            liveTimeline: room.getLiveTimeline(),
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        dis.dispatch<ActionPayload>({ action: Action.RoomLoaded });
 | 
			
		||||
        defaultDispatcher.dispatch<ActionPayload>({ action: Action.RoomLoaded });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    private onRoomTimelineReset = (room?: Room): void => {
 | 
			
		||||
| 
						 | 
				
			
			@ -1561,7 +1561,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
 | 
			
		||||
    private onInviteClick = (): void => {
 | 
			
		||||
        // open the room inviter
 | 
			
		||||
        dis.dispatch({
 | 
			
		||||
        defaultDispatcher.dispatch({
 | 
			
		||||
            action: "view_invite",
 | 
			
		||||
            roomId: this.getRoomId(),
 | 
			
		||||
        });
 | 
			
		||||
| 
						 | 
				
			
			@ -1572,7 +1572,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        if (this.context.client?.isGuest()) {
 | 
			
		||||
            // Join this room once the user has registered and logged in
 | 
			
		||||
            // (If we failed to peek, we may not have a valid room object.)
 | 
			
		||||
            dis.dispatch<DoAfterSyncPreparedPayload<ViewRoomPayload>>({
 | 
			
		||||
            defaultDispatcher.dispatch<DoAfterSyncPreparedPayload<ViewRoomPayload>>({
 | 
			
		||||
                action: Action.DoAfterSyncPrepared,
 | 
			
		||||
                deferred_action: {
 | 
			
		||||
                    action: Action.ViewRoom,
 | 
			
		||||
| 
						 | 
				
			
			@ -1580,13 +1580,13 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
                    metricsTrigger: undefined,
 | 
			
		||||
                },
 | 
			
		||||
            });
 | 
			
		||||
            dis.dispatch({ action: "require_registration" });
 | 
			
		||||
            defaultDispatcher.dispatch({ action: "require_registration" });
 | 
			
		||||
        } else {
 | 
			
		||||
            Promise.resolve().then(() => {
 | 
			
		||||
                const signUrl = this.props.threepidInvite?.signUrl;
 | 
			
		||||
                const roomId = this.getRoomId();
 | 
			
		||||
                if (isNotUndefined(roomId)) {
 | 
			
		||||
                    dis.dispatch<JoinRoomPayload>({
 | 
			
		||||
                    defaultDispatcher.dispatch<JoinRoomPayload>({
 | 
			
		||||
                        action: Action.JoinRoom,
 | 
			
		||||
                        roomId,
 | 
			
		||||
                        opts: { inviteSignUrl: signUrl },
 | 
			
		||||
| 
						 | 
				
			
			@ -1622,7 +1622,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
            this.state.initialEventId === eventId
 | 
			
		||||
        ) {
 | 
			
		||||
            debuglog("Removing scroll_into_view flag from initial event");
 | 
			
		||||
            dis.dispatch<ViewRoomPayload>({
 | 
			
		||||
            defaultDispatcher.dispatch<ViewRoomPayload>({
 | 
			
		||||
                action: Action.ViewRoom,
 | 
			
		||||
                room_id: this.getRoomId(),
 | 
			
		||||
                event_id: this.state.initialEventId,
 | 
			
		||||
| 
						 | 
				
			
			@ -1638,7 +1638,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        const roomId = this.getRoomId();
 | 
			
		||||
        if (!this.context.client || !roomId) return;
 | 
			
		||||
        if (this.context.client.isGuest()) {
 | 
			
		||||
            dis.dispatch({ action: "require_registration" });
 | 
			
		||||
            defaultDispatcher.dispatch({ action: "require_registration" });
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1688,7 +1688,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
    };
 | 
			
		||||
 | 
			
		||||
    private onForgetClick = (): void => {
 | 
			
		||||
        dis.dispatch({
 | 
			
		||||
        defaultDispatcher.dispatch({
 | 
			
		||||
            action: "forget_room",
 | 
			
		||||
            room_id: this.getRoomId(),
 | 
			
		||||
        });
 | 
			
		||||
| 
						 | 
				
			
			@ -1702,7 +1702,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        });
 | 
			
		||||
        this.context.client?.leave(roomId).then(
 | 
			
		||||
            () => {
 | 
			
		||||
                dis.dispatch({ action: Action.ViewHomePage });
 | 
			
		||||
                defaultDispatcher.dispatch({ action: Action.ViewHomePage });
 | 
			
		||||
                this.setState({
 | 
			
		||||
                    rejecting: false,
 | 
			
		||||
                });
 | 
			
		||||
| 
						 | 
				
			
			@ -1736,7 +1736,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
            await this.context.client!.setIgnoredUsers(ignoredUsers);
 | 
			
		||||
 | 
			
		||||
            await this.context.client!.leave(this.state.roomId!);
 | 
			
		||||
            dis.dispatch({ action: Action.ViewHomePage });
 | 
			
		||||
            defaultDispatcher.dispatch({ action: Action.ViewHomePage });
 | 
			
		||||
            this.setState({
 | 
			
		||||
                rejecting: false,
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			@ -1760,7 +1760,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        // using /leave rather than /join. In the short term though, we
 | 
			
		||||
        // just ignore them.
 | 
			
		||||
        // https://github.com/vector-im/vector-web/issues/1134
 | 
			
		||||
        dis.fire(Action.ViewRoomDirectory);
 | 
			
		||||
        defaultDispatcher.fire(Action.ViewRoomDirectory);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    private onSearchChange = debounce((e: ChangeEvent): void => {
 | 
			
		||||
| 
						 | 
				
			
			@ -1786,7 +1786,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
            // If we were viewing a highlighted event, firing view_room without
 | 
			
		||||
            // an event will take care of both clearing the URL fragment and
 | 
			
		||||
            // jumping to the bottom
 | 
			
		||||
            dis.dispatch<ViewRoomPayload>({
 | 
			
		||||
            defaultDispatcher.dispatch<ViewRoomPayload>({
 | 
			
		||||
                action: Action.ViewRoom,
 | 
			
		||||
                room_id: this.getRoomId(),
 | 
			
		||||
                metricsTrigger: undefined, // room doesn't change
 | 
			
		||||
| 
						 | 
				
			
			@ -1794,7 +1794,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        } else {
 | 
			
		||||
            // Otherwise we have to jump manually
 | 
			
		||||
            this.messagePanel?.jumpToLiveTimeline();
 | 
			
		||||
            dis.fire(Action.FocusSendMessageComposer);
 | 
			
		||||
            defaultDispatcher.fire(Action.FocusSendMessageComposer);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1918,7 +1918,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
    public onHiddenHighlightsClick = (): void => {
 | 
			
		||||
        const oldRoom = this.getOldRoom();
 | 
			
		||||
        if (!oldRoom) return;
 | 
			
		||||
        dis.dispatch<ViewRoomPayload>({
 | 
			
		||||
        defaultDispatcher.dispatch<ViewRoomPayload>({
 | 
			
		||||
            action: Action.ViewRoom,
 | 
			
		||||
            room_id: oldRoom.roomId,
 | 
			
		||||
            metricsTrigger: "Predecessor",
 | 
			
		||||
| 
						 | 
				
			
			@ -2001,7 +2001,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        const roomId = this.getRoomId();
 | 
			
		||||
 | 
			
		||||
        if (isNotUndefined(roomId)) {
 | 
			
		||||
            dis.dispatch<SubmitAskToJoinPayload>({
 | 
			
		||||
            defaultDispatcher.dispatch<SubmitAskToJoinPayload>({
 | 
			
		||||
                action: Action.SubmitAskToJoin,
 | 
			
		||||
                roomId,
 | 
			
		||||
                opts: { reason },
 | 
			
		||||
| 
						 | 
				
			
			@ -2018,7 +2018,7 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        const roomId = this.getRoomId();
 | 
			
		||||
 | 
			
		||||
        if (isNotUndefined(roomId)) {
 | 
			
		||||
            dis.dispatch<CancelAskToJoinPayload>({
 | 
			
		||||
            defaultDispatcher.dispatch<CancelAskToJoinPayload>({
 | 
			
		||||
                action: Action.CancelAskToJoin,
 | 
			
		||||
                roomId,
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			@ -2547,5 +2547,3 @@ export class RoomView extends React.Component<IRoomProps, IRoomState> {
 | 
			
		|||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default RoomView;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { logger } from "matrix-js-sdk/src/logger";
 | 
			
		|||
 | 
			
		||||
import { _t } from "../../../languageHandler";
 | 
			
		||||
import AccessibleButton, { ButtonEvent } from "../elements/AccessibleButton";
 | 
			
		||||
import dispatcher, { defaultDispatcher } from "../../../dispatcher/dispatcher";
 | 
			
		||||
import defaultDispatcher from "../../../dispatcher/dispatcher";
 | 
			
		||||
import { ViewRoomPayload } from "../../../dispatcher/payloads/ViewRoomPayload";
 | 
			
		||||
import { Action } from "../../../dispatcher/actions";
 | 
			
		||||
import { ConnectionState, ElementCall } from "../../../models/Call";
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +53,7 @@ const RoomCallBannerInner: React.FC<RoomCallBannerProps> = ({ roomId, call }) =>
 | 
			
		|||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        dispatcher.dispatch<ViewRoomPayload>({
 | 
			
		||||
        defaultDispatcher.dispatch<ViewRoomPayload>({
 | 
			
		||||
            action: Action.ViewRoom,
 | 
			
		||||
            room_id: roomId,
 | 
			
		||||
            metricsTrigger: undefined,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ import { SpacePreferenceTab } from "../../../dispatcher/payloads/OpenSpacePrefer
 | 
			
		|||
import { NonEmptyArray } from "../../../@types/common";
 | 
			
		||||
import SettingsTab from "../settings/tabs/SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../settings/shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../settings/shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../settings/shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
interface IProps {
 | 
			
		||||
    space: Room;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ export interface IProps {
 | 
			
		|||
    relation?: IEventRelation;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const LocationButton: React.FC<IProps> = ({ roomId, sender, menuPosition, relation }) => {
 | 
			
		||||
const LocationButton: React.FC<IProps> = ({ roomId, sender, menuPosition, relation }) => {
 | 
			
		||||
    const overflowMenuCloser = useContext(OverflowMenuContext);
 | 
			
		||||
    const [menuDisplayed, button, openMenu, closeMenu] = useContextMenu();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,16 +22,6 @@ export function Map(props: ComponentProps<typeof MapComponent>): JSX.Element {
 | 
			
		|||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const LocationPickerComponent = lazy(() => import("./LocationPicker"));
 | 
			
		||||
 | 
			
		||||
export function LocationPicker(props: ComponentProps<typeof LocationPickerComponent>): JSX.Element {
 | 
			
		||||
    return (
 | 
			
		||||
        <Suspense fallback={<Spinner />}>
 | 
			
		||||
            <LocationPickerComponent {...props} />
 | 
			
		||||
        </Suspense>
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const SmartMarkerComponent = lazy(() => import("./SmartMarker"));
 | 
			
		||||
 | 
			
		||||
export function SmartMarker(props: ComponentProps<typeof SmartMarkerComponent>): JSX.Element {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ import { Icon as ExpandMessageIcon } from "../../../../res/img/element-icons/exp
 | 
			
		|||
import { Icon as CollapseMessageIcon } from "../../../../res/img/element-icons/collapse-message.svg";
 | 
			
		||||
import type { Relations } from "matrix-js-sdk/src/matrix";
 | 
			
		||||
import { _t } from "../../../languageHandler";
 | 
			
		||||
import dis, { defaultDispatcher } from "../../../dispatcher/dispatcher";
 | 
			
		||||
import defaultDispatcher from "../../../dispatcher/dispatcher";
 | 
			
		||||
import ContextMenu, { aboveLeftOf, ContextMenuTooltipButton, useContextMenu } from "../../structures/ContextMenu";
 | 
			
		||||
import { isContentActionable, canEditContent, editEvent, canCancel } from "../../../utils/EventUtils";
 | 
			
		||||
import RoomContext, { TimelineRenderingType } from "../../../contexts/RoomContext";
 | 
			
		||||
| 
						 | 
				
			
			@ -323,7 +323,7 @@ export default class MessageActionBar extends React.PureComponent<IMessageAction
 | 
			
		|||
        e.preventDefault();
 | 
			
		||||
        e.stopPropagation();
 | 
			
		||||
 | 
			
		||||
        dis.dispatch({
 | 
			
		||||
        defaultDispatcher.dispatch({
 | 
			
		||||
            action: "reply_to_event",
 | 
			
		||||
            event: this.props.mxEvent,
 | 
			
		||||
            context: this.context.timelineRenderingType,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,9 +19,7 @@ import { XOR } from "../../../@types/common";
 | 
			
		|||
export enum E2EState {
 | 
			
		||||
    Verified = "verified",
 | 
			
		||||
    Warning = "warning",
 | 
			
		||||
    Unknown = "unknown",
 | 
			
		||||
    Normal = "normal",
 | 
			
		||||
    Unauthenticated = "unauthenticated",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const crossSigningUserTitles: { [key in E2EState]?: TranslationKey } = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ import * as FormattingUtils from "../../../utils/FormattingUtils";
 | 
			
		|||
import SettingsStore from "../../../settings/SettingsStore";
 | 
			
		||||
import SettingsFlag from "../elements/SettingsFlag";
 | 
			
		||||
import { SettingLevel } from "../../../settings/SettingLevel";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "./shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "./shared/SettingsSubsection";
 | 
			
		||||
import MatrixClientContext from "../../../contexts/MatrixClientContext";
 | 
			
		||||
 | 
			
		||||
interface IProps {}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ import { Layout } from "../../../settings/enums/Layout";
 | 
			
		|||
import { MatrixClientPeg } from "../../../MatrixClientPeg";
 | 
			
		||||
import { SettingLevel } from "../../../settings/SettingLevel";
 | 
			
		||||
import { _t } from "../../../languageHandler";
 | 
			
		||||
import SettingsSubsection from "./shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "./shared/SettingsSubsection";
 | 
			
		||||
import Field from "../elements/Field";
 | 
			
		||||
import { FontWatcher } from "../../../settings/watchers/FontWatcher";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ import StyledRadioButton from "../elements/StyledRadioButton";
 | 
			
		|||
import { _t } from "../../../languageHandler";
 | 
			
		||||
import { SettingLevel } from "../../../settings/SettingLevel";
 | 
			
		||||
import { ImageSize } from "../../../settings/enums/ImageSize";
 | 
			
		||||
import SettingsSubsection from "./shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "./shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
interface IProps {
 | 
			
		||||
    // none
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@
 | 
			
		|||
import React, { JSX, useEffect, useState } from "react";
 | 
			
		||||
import { Field, HelpMessage, InlineField, Label, RadioControl, Root, ToggleControl } from "@vector-im/compound-web";
 | 
			
		||||
 | 
			
		||||
import SettingsSubsection from "./shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "./shared/SettingsSubsection";
 | 
			
		||||
import { _t } from "../../../languageHandler";
 | 
			
		||||
import SettingsStore from "../../../settings/SettingsStore";
 | 
			
		||||
import { SettingLevel } from "../../../settings/SettingLevel";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -48,7 +48,7 @@ import {
 | 
			
		|||
} from "../../../utils/pushRules/updatePushRuleActions";
 | 
			
		||||
import { Caption } from "../typography/Caption";
 | 
			
		||||
import { SettingsSubsectionHeading } from "./shared/SettingsSubsectionHeading";
 | 
			
		||||
import SettingsSubsection from "./shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "./shared/SettingsSubsection";
 | 
			
		||||
import { doesRoomHaveUnreadMessages } from "../../../Unread";
 | 
			
		||||
import SettingsFlag from "../elements/SettingsFlag";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ import classNames from "classnames";
 | 
			
		|||
import { logger } from "matrix-js-sdk/src/logger";
 | 
			
		||||
 | 
			
		||||
import { _t } from "../../../languageHandler";
 | 
			
		||||
import SettingsSubsection from "./shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "./shared/SettingsSubsection";
 | 
			
		||||
import ThemeWatcher from "../../../settings/watchers/ThemeWatcher";
 | 
			
		||||
import SettingsStore from "../../../settings/SettingsStore";
 | 
			
		||||
import { SettingLevel } from "../../../settings/SettingLevel";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { Alert } from "@vector-im/compound-web";
 | 
			
		|||
 | 
			
		||||
import { _t } from "../../../languageHandler";
 | 
			
		||||
import InlineSpinner from "../elements/InlineSpinner";
 | 
			
		||||
import SettingsSubsection from "./shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "./shared/SettingsSubsection";
 | 
			
		||||
import { useMatrixClientContext } from "../../../contexts/MatrixClientContext";
 | 
			
		||||
import { ThirdPartyIdentifier } from "../../../AddThreepid";
 | 
			
		||||
import SettingsStore from "../../../settings/SettingsStore";
 | 
			
		||||
| 
						 | 
				
			
			@ -125,5 +125,3 @@ export const UserPersonalInfoSettings: React.FC<UserPersonalInfoSettingsProps> =
 | 
			
		|||
        </div>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default UserPersonalInfoSettings;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ import { LocalNotificationSettings } from "matrix-js-sdk/src/matrix";
 | 
			
		|||
 | 
			
		||||
import { _t } from "../../../../languageHandler";
 | 
			
		||||
import Spinner from "../../elements/Spinner";
 | 
			
		||||
import SettingsSubsection from "../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsectionHeading } from "../shared/SettingsSubsectionHeading";
 | 
			
		||||
import DeviceDetails from "./DeviceDetails";
 | 
			
		||||
import { DeviceExpandDetailsButton } from "./DeviceExpandDetailsButton";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ import { Text } from "@vector-im/compound-web";
 | 
			
		|||
 | 
			
		||||
import { _t } from "../../../../languageHandler";
 | 
			
		||||
import AccessibleButton from "../../elements/AccessibleButton";
 | 
			
		||||
import SettingsSubsection from "../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../shared/SettingsSubsection";
 | 
			
		||||
import { useMatrixClientContext } from "../../../../contexts/MatrixClientContext";
 | 
			
		||||
 | 
			
		||||
interface IProps {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,7 @@ import React from "react";
 | 
			
		|||
 | 
			
		||||
import { _t } from "../../../../languageHandler";
 | 
			
		||||
import AccessibleButton from "../../elements/AccessibleButton";
 | 
			
		||||
import SettingsSubsection from "../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../shared/SettingsSubsection";
 | 
			
		||||
import DeviceSecurityCard from "./DeviceSecurityCard";
 | 
			
		||||
import { DeviceSecurityLearnMore } from "./DeviceSecurityLearnMore";
 | 
			
		||||
import { filterDevicesBySecurityRecommendation, FilterVariation, INACTIVE_DEVICE_AGE_DAYS } from "./filter";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ import SettingsStore from "../../../../settings/SettingsStore";
 | 
			
		|||
import { UIFeature } from "../../../../settings/UIFeature";
 | 
			
		||||
import { _t } from "../../../../languageHandler";
 | 
			
		||||
import SetIdServer from "../SetIdServer";
 | 
			
		||||
import SettingsSubsection from "../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../shared/SettingsSubsection";
 | 
			
		||||
import InlineTermsAgreement from "../../terms/InlineTermsAgreement";
 | 
			
		||||
import { Service, ServicePolicyPair, startTermsFlow } from "../../../../Terms";
 | 
			
		||||
import IdentityAuthClient from "../../../../IdentityAuthClient";
 | 
			
		||||
| 
						 | 
				
			
			@ -190,5 +190,3 @@ export const DiscoverySettings: React.FC = () => {
 | 
			
		|||
        </SettingsSubsection>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default DiscoverySettings;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ import { UserTab } from "../../dialogs/UserTab";
 | 
			
		|||
import AccessibleButton from "../../elements/AccessibleButton";
 | 
			
		||||
import LabelledCheckbox from "../../elements/LabelledCheckbox";
 | 
			
		||||
import { SettingsIndent } from "../shared/SettingsIndent";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
function generalTabButton(content: string): JSX.Element {
 | 
			
		||||
    return (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ import TagComposer from "../../elements/TagComposer";
 | 
			
		|||
import { StatelessNotificationBadge } from "../../rooms/NotificationBadge/StatelessNotificationBadge";
 | 
			
		||||
import { SettingsBanner } from "../shared/SettingsBanner";
 | 
			
		||||
import { SettingsSection } from "../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection from "../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../shared/SettingsSubsection";
 | 
			
		||||
import { NotificationPusherSettings } from "./NotificationPusherSettings";
 | 
			
		||||
import SettingsFlag from "../../elements/SettingsFlag";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -65,5 +65,3 @@ export const SettingsSubsection: React.FC<SettingsSubsectionProps> = ({
 | 
			
		|||
        {!legacy && <Separator />}
 | 
			
		||||
    </div>
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
export default SettingsSubsection;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ import { ViewRoomPayload } from "../../../../../dispatcher/payloads/ViewRoomPayl
 | 
			
		|||
import SettingsStore from "../../../../../settings/SettingsStore";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
interface IProps {
 | 
			
		||||
    room: Room;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ import { UIFeature } from "../../../../../settings/UIFeature";
 | 
			
		|||
import UrlPreviewSettings from "../../../room_settings/UrlPreviewSettings";
 | 
			
		||||
import AliasSettings from "../../../room_settings/AliasSettings";
 | 
			
		||||
import PosthogTrackers from "../../../../../PosthogTrackers";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,7 @@ import { UserTab } from "../../../dialogs/UserTab";
 | 
			
		|||
import { chromeFileInputFix } from "../../../../../utils/BrowserWorkarounds";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
interface IProps {
 | 
			
		||||
    roomId: string;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ import { JoinRule, EventType, RoomState, Room } from "matrix-js-sdk/src/matrix";
 | 
			
		|||
 | 
			
		||||
import { _t } from "../../../../../languageHandler";
 | 
			
		||||
import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { ElementCall } from "../../../../../models/Call";
 | 
			
		||||
import { useRoomState } from "../../../../../hooks/useRoomState";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,9 +22,9 @@ import ErrorDialog, { extractErrorMessageFromError } from "../../../dialogs/Erro
 | 
			
		|||
import ChangePassword from "../../ChangePassword";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SDKContext } from "../../../../../contexts/SDKContext";
 | 
			
		||||
import UserPersonalInfoSettings from "../../UserPersonalInfoSettings";
 | 
			
		||||
import { UserPersonalInfoSettings } from "../../UserPersonalInfoSettings";
 | 
			
		||||
import { useMatrixClientContext } from "../../../../../contexts/MatrixClientContext";
 | 
			
		||||
 | 
			
		||||
interface IProps {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,7 @@ import { ThemeChoicePanel } from "../../ThemeChoicePanel";
 | 
			
		|||
import ImageSizePanel from "../../ImageSizePanel";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
interface IProps {}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ import BugReportDialog from "../../../dialogs/BugReportDialog";
 | 
			
		|||
import CopyableText from "../../../elements/CopyableText";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import ExternalLink from "../../../elements/ExternalLink";
 | 
			
		||||
import MatrixClientContext from "../../../../../contexts/MatrixClientContext";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ import {
 | 
			
		|||
import { KeyboardShortcut } from "../../KeyboardShortcut";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { showLabsFlags } from "./LabsUserSettingsTab";
 | 
			
		||||
 | 
			
		||||
interface IKeyboardShortcutRowProps {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,7 @@ import SettingsFlag from "../../../elements/SettingsFlag";
 | 
			
		|||
import { LabGroup, labGroupNames } from "../../../../../settings/Settings";
 | 
			
		||||
import { EnhancedMap } from "../../../../../utils/maps";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
 | 
			
		||||
export const showLabsFlags = (): boolean => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ import AccessibleButton from "../../../elements/AccessibleButton";
 | 
			
		|||
import Field from "../../../elements/Field";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
interface IState {
 | 
			
		||||
    busy: boolean;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ import { OpenToTabPayload } from "../../../../../dispatcher/payloads/OpenToTabPa
 | 
			
		|||
import { Action } from "../../../../../dispatcher/actions";
 | 
			
		||||
import SdkConfig from "../../../../../SdkConfig";
 | 
			
		||||
import { showUserOnboardingPage } from "../../../user-onboarding/UserOnboardingPage";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import LanguageDropdown from "../../../elements/LanguageDropdown";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,9 +32,9 @@ import { privateShouldBeEncrypted } from "../../../../../utils/rooms";
 | 
			
		|||
import type { IServerVersions } from "matrix-js-sdk/src/matrix";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { useOwnDevices } from "../../devices/useOwnDevices";
 | 
			
		||||
import DiscoverySettings from "../../discovery/DiscoverySettings";
 | 
			
		||||
import { DiscoverySettings } from "../../discovery/DiscoverySettings";
 | 
			
		||||
import SetIntegrationManager from "../../SetIntegrationManager";
 | 
			
		||||
 | 
			
		||||
interface IIgnoredUserProps {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { logger } from "matrix-js-sdk/src/logger";
 | 
			
		|||
 | 
			
		||||
import { _t } from "../../../../../languageHandler";
 | 
			
		||||
import Modal from "../../../../../Modal";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
import SetupEncryptionDialog from "../../../dialogs/security/SetupEncryptionDialog";
 | 
			
		||||
import VerificationRequestDialog from "../../../dialogs/VerificationRequestDialog";
 | 
			
		||||
import LogoutDialog from "../../../dialogs/LogoutDialog";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ import { MetaSpace } from "../../../../../stores/spaces";
 | 
			
		|||
import PosthogTrackers from "../../../../../PosthogTrackers";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection, { SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection, SettingsSubsectionText } from "../../shared/SettingsSubsection";
 | 
			
		||||
import SdkConfig from "../../../../../SdkConfig";
 | 
			
		||||
 | 
			
		||||
type InteractionName = "WebSettingsSidebarTabSpacesCheckbox" | "WebQuickSettingsPinToSidebarCheckbox";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch";
 | 
			
		|||
import { requestMediaPermissions } from "../../../../../utils/media/requestMediaPermissions";
 | 
			
		||||
import SettingsTab from "../SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../../shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection from "../../shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../shared/SettingsSubsection";
 | 
			
		||||
import MatrixClientContext from "../../../../../contexts/MatrixClientContext";
 | 
			
		||||
 | 
			
		||||
interface IState {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,7 @@ import { KeyBindingAction } from "../../../accessibility/KeyboardShortcuts";
 | 
			
		|||
import defaultDispatcher from "../../../dispatcher/dispatcher";
 | 
			
		||||
import { Action } from "../../../dispatcher/actions";
 | 
			
		||||
import { Filter } from "../dialogs/spotlight/Filter";
 | 
			
		||||
import { OpenSpotlightPayload } from "../../../dispatcher/payloads/OpenSpotlightPayload.ts";
 | 
			
		||||
 | 
			
		||||
export const createSpace = async (
 | 
			
		||||
    client: MatrixClient,
 | 
			
		||||
| 
						 | 
				
			
			@ -265,7 +266,7 @@ const SpaceCreateMenu: React.FC<{
 | 
			
		|||
    };
 | 
			
		||||
 | 
			
		||||
    const onSearchClick = (): void => {
 | 
			
		||||
        defaultDispatcher.dispatch({
 | 
			
		||||
        defaultDispatcher.dispatch<OpenSpotlightPayload>({
 | 
			
		||||
            action: Action.OpenSpotlight,
 | 
			
		||||
            initialFilter: Filter.PublicSpaces,
 | 
			
		||||
        });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ import { leaveSpace } from "../../../utils/leave-behaviour";
 | 
			
		|||
import { getTopic } from "../../../hooks/room/useTopic";
 | 
			
		||||
import SettingsTab from "../settings/tabs/SettingsTab";
 | 
			
		||||
import { SettingsSection } from "../settings/shared/SettingsSection";
 | 
			
		||||
import SettingsSubsection from "../settings/shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../settings/shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
interface IProps {
 | 
			
		||||
    matrixClient: MatrixClient;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -135,12 +135,6 @@ export enum Action {
 | 
			
		|||
     */
 | 
			
		||||
    OpenDialPad = "open_dial_pad",
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Dial the phone number in the payload
 | 
			
		||||
     * payload: DialNumberPayload
 | 
			
		||||
     */
 | 
			
		||||
    DialNumber = "dial_number",
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Fired when CallHandler has checked for PSTN protocol support
 | 
			
		||||
     * payload: none
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -178,7 +178,7 @@ export class MatrixDispatcher {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const defaultDispatcher = new MatrixDispatcher();
 | 
			
		||||
const defaultDispatcher = new MatrixDispatcher();
 | 
			
		||||
 | 
			
		||||
if (!window.mxDispatcher) {
 | 
			
		||||
    window.mxDispatcher = defaultDispatcher;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,38 +11,12 @@ export enum PerformanceEntryNames {
 | 
			
		|||
     * Application wide
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    APP_STARTUP = "mx_AppStartup",
 | 
			
		||||
    PAGE_CHANGE = "mx_PageChange",
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Events
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    RESEND_EVENT = "mx_ResendEvent",
 | 
			
		||||
    SEND_E2EE_EVENT = "mx_SendE2EEEvent",
 | 
			
		||||
    SEND_ATTACHMENT = "mx_SendAttachment",
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Rooms
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    SWITCH_ROOM = "mx_SwithRoom",
 | 
			
		||||
    JUMP_TO_ROOM = "mx_JumpToRoom",
 | 
			
		||||
    JOIN_ROOM = "mx_JoinRoom", // ✅
 | 
			
		||||
    CREATE_DM = "mx_CreateDM", // ✅
 | 
			
		||||
    PEEK_ROOM = "mx_PeekRoom",
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * User
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    VERIFY_E2EE_USER = "mx_VerifyE2EEUser", // ✅
 | 
			
		||||
    LOGIN = "mx_Login", // ✅
 | 
			
		||||
    REGISTER = "mx_Register", // ✅
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * VoIP
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    SETUP_VOIP_CALL = "mx_SetupVoIPCall",
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@ Please see LICENSE files in the repository root for full details.
 | 
			
		|||
 | 
			
		||||
import * as Sentry from "@sentry/browser";
 | 
			
		||||
import { MatrixClient } from "matrix-js-sdk/src/matrix";
 | 
			
		||||
import { type Integration } from "@sentry/types/build/types/integration";
 | 
			
		||||
 | 
			
		||||
import SdkConfig from "./SdkConfig";
 | 
			
		||||
import { MatrixClientPeg } from "./MatrixClientPeg";
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +195,7 @@ export function setSentryUser(mxid: string): void {
 | 
			
		|||
export async function initSentry(sentryConfig: IConfigOptions["sentry"]): Promise<void> {
 | 
			
		||||
    if (!sentryConfig) return;
 | 
			
		||||
    // Only enable Integrations.GlobalHandlers, which hooks uncaught exceptions, if automaticErrorReporting is true
 | 
			
		||||
    const integrations: Integration[] = [
 | 
			
		||||
    const integrations = [
 | 
			
		||||
        Sentry.inboundFiltersIntegration(),
 | 
			
		||||
        Sentry.functionToStringIntegration(),
 | 
			
		||||
        Sentry.breadcrumbsIntegration(),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2024 New Vector Ltd.
 | 
			
		||||
Copyright 2017 Vector Creations Ltd
 | 
			
		||||
 | 
			
		||||
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
 | 
			
		||||
Please see LICENSE files in the repository root for full details.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
import { IndexedDBStoreWorker } from "matrix-js-sdk/src/indexeddb-worker";
 | 
			
		||||
 | 
			
		||||
const remoteWorker = new IndexedDBStoreWorker(postMessage as InstanceType<typeof Worker>["postMessage"]);
 | 
			
		||||
 | 
			
		||||
global.onmessage = remoteWorker.onMessage;
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ import {
 | 
			
		|||
    M_POLL_RESPONSE,
 | 
			
		||||
    M_TEXT,
 | 
			
		||||
} from "matrix-js-sdk/src/matrix";
 | 
			
		||||
import { uuid4 } from "@sentry/utils";
 | 
			
		||||
import { randomString } from "matrix-js-sdk/src/randomstring";
 | 
			
		||||
 | 
			
		||||
import { flushPromises } from "./utilities";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -67,7 +67,7 @@ export const makePollEndEvent = (
 | 
			
		|||
    id?: string,
 | 
			
		||||
): MatrixEvent => {
 | 
			
		||||
    return new MatrixEvent({
 | 
			
		||||
        event_id: id || uuid4(),
 | 
			
		||||
        event_id: id || randomString(16),
 | 
			
		||||
        room_id: roomId,
 | 
			
		||||
        origin_server_ts: ts,
 | 
			
		||||
        type: M_POLL_END.name,
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +91,7 @@ export const makePollResponseEvent = (
 | 
			
		|||
    ts = 0,
 | 
			
		||||
): MatrixEvent =>
 | 
			
		||||
    new MatrixEvent({
 | 
			
		||||
        event_id: uuid4(),
 | 
			
		||||
        event_id: randomString(16),
 | 
			
		||||
        room_id: roomId,
 | 
			
		||||
        origin_server_ts: ts,
 | 
			
		||||
        type: M_POLL_RESPONSE.name,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@ Please see LICENSE files in the repository root for full details.
 | 
			
		|||
 | 
			
		||||
import React from "react";
 | 
			
		||||
import { render, screen, waitFor } from "jest-matrix-react";
 | 
			
		||||
import { jest } from "@jest/globals";
 | 
			
		||||
import { mocked, MockedObject } from "jest-mock";
 | 
			
		||||
import { MatrixClient } from "matrix-js-sdk/src/matrix";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,7 +42,7 @@ import {
 | 
			
		|||
} from "../../../test-utils";
 | 
			
		||||
import { MatrixClientPeg } from "../../../../src/MatrixClientPeg";
 | 
			
		||||
import { Action } from "../../../../src/dispatcher/actions";
 | 
			
		||||
import dis, { defaultDispatcher } from "../../../../src/dispatcher/dispatcher";
 | 
			
		||||
import defaultDispatcher from "../../../../src/dispatcher/dispatcher";
 | 
			
		||||
import { ViewRoomPayload } from "../../../../src/dispatcher/payloads/ViewRoomPayload";
 | 
			
		||||
import { RoomView as _RoomView } from "../../../../src/components/structures/RoomView";
 | 
			
		||||
import ResizeNotifier from "../../../../src/utils/ResizeNotifier";
 | 
			
		||||
| 
						 | 
				
			
			@ -527,7 +527,7 @@ describe("RoomView", () => {
 | 
			
		|||
        beforeEach(() => {
 | 
			
		||||
            jest.spyOn(SettingsStore, "getValue").mockImplementation((setting) => setting === "feature_ask_to_join");
 | 
			
		||||
            jest.spyOn(room, "getJoinRule").mockReturnValue(JoinRule.Knock);
 | 
			
		||||
            jest.spyOn(dis, "dispatch");
 | 
			
		||||
            jest.spyOn(defaultDispatcher, "dispatch");
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        it("allows to request to join", async () => {
 | 
			
		||||
| 
						 | 
				
			
			@ -536,9 +536,9 @@ describe("RoomView", () => {
 | 
			
		|||
 | 
			
		||||
            await mountRoomView();
 | 
			
		||||
            fireEvent.click(screen.getByRole("button", { name: "Request access" }));
 | 
			
		||||
            await untilDispatch(Action.SubmitAskToJoin, dis);
 | 
			
		||||
            await untilDispatch(Action.SubmitAskToJoin, defaultDispatcher);
 | 
			
		||||
 | 
			
		||||
            expect(dis.dispatch).toHaveBeenCalledWith({
 | 
			
		||||
            expect(defaultDispatcher.dispatch).toHaveBeenCalledWith({
 | 
			
		||||
                action: "submit_ask_to_join",
 | 
			
		||||
                roomId: room.roomId,
 | 
			
		||||
                opts: { reason: undefined },
 | 
			
		||||
| 
						 | 
				
			
			@ -552,9 +552,12 @@ describe("RoomView", () => {
 | 
			
		|||
 | 
			
		||||
            await mountRoomView();
 | 
			
		||||
            fireEvent.click(screen.getByRole("button", { name: "Cancel request" }));
 | 
			
		||||
            await untilDispatch(Action.CancelAskToJoin, dis);
 | 
			
		||||
            await untilDispatch(Action.CancelAskToJoin, defaultDispatcher);
 | 
			
		||||
 | 
			
		||||
            expect(dis.dispatch).toHaveBeenCalledWith({ action: "cancel_ask_to_join", roomId: room.roomId });
 | 
			
		||||
            expect(defaultDispatcher.dispatch).toHaveBeenCalledWith({
 | 
			
		||||
                action: "cancel_ask_to_join",
 | 
			
		||||
                roomId: room.roomId,
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -669,7 +672,7 @@ describe("RoomView", () => {
 | 
			
		|||
        await waitFor(() => {
 | 
			
		||||
            expect(container.querySelector(".mx_RoomView_searchResultsPanel")).toBeVisible();
 | 
			
		||||
        });
 | 
			
		||||
        const prom = untilDispatch(Action.ViewRoom, dis);
 | 
			
		||||
        const prom = untilDispatch(Action.ViewRoom, defaultDispatcher);
 | 
			
		||||
 | 
			
		||||
        await userEvent.hover(getByText("search term"));
 | 
			
		||||
        await userEvent.click(await findByLabelText("Edit"));
 | 
			
		||||
| 
						 | 
				
			
			@ -678,8 +681,8 @@ describe("RoomView", () => {
 | 
			
		|||
    });
 | 
			
		||||
 | 
			
		||||
    it("fires Action.RoomLoaded", async () => {
 | 
			
		||||
        jest.spyOn(dis, "dispatch");
 | 
			
		||||
        jest.spyOn(defaultDispatcher, "dispatch");
 | 
			
		||||
        await mountRoomView();
 | 
			
		||||
        expect(dis.dispatch).toHaveBeenCalledWith({ action: Action.RoomLoaded });
 | 
			
		||||
        expect(defaultDispatcher.dispatch).toHaveBeenCalledWith({ action: Action.RoomLoaded });
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@ Please see LICENSE files in the repository root for full details.
 | 
			
		|||
 | 
			
		||||
import React from "react";
 | 
			
		||||
import { render } from "jest-matrix-react";
 | 
			
		||||
import { jest } from "@jest/globals";
 | 
			
		||||
import { Room } from "matrix-js-sdk/src/matrix";
 | 
			
		||||
 | 
			
		||||
import { stubClient } from "../../../test-utils";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,13 +7,11 @@ Please see LICENSE files in the repository root for full details.
 | 
			
		|||
*/
 | 
			
		||||
 | 
			
		||||
import React from "react";
 | 
			
		||||
import { jest } from "@jest/globals";
 | 
			
		||||
import { Room, MatrixClient } from "matrix-js-sdk/src/matrix";
 | 
			
		||||
import { ClientWidgetApi, IWidget, MatrixWidgetType } from "matrix-widget-api";
 | 
			
		||||
import { Optional } from "matrix-events-sdk";
 | 
			
		||||
import { act, render, RenderResult } from "jest-matrix-react";
 | 
			
		||||
import userEvent from "@testing-library/user-event";
 | 
			
		||||
import { SpiedFunction } from "jest-mock";
 | 
			
		||||
import {
 | 
			
		||||
    ApprovalOpts,
 | 
			
		||||
    WidgetInfo,
 | 
			
		||||
| 
						 | 
				
			
			@ -345,7 +343,7 @@ describe("AppTile", () => {
 | 
			
		|||
 | 
			
		||||
    describe("for a pinned widget", () => {
 | 
			
		||||
        let renderResult: RenderResult;
 | 
			
		||||
        let moveToContainerSpy: SpiedFunction<typeof WidgetLayoutStore.instance.moveToContainer>;
 | 
			
		||||
        let moveToContainerSpy: jest.SpyInstance<void, [room: Room, widget: IWidget, toContainer: Container]>;
 | 
			
		||||
 | 
			
		||||
        beforeEach(() => {
 | 
			
		||||
            renderResult = render(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,7 @@ import { MatrixClient } from "matrix-js-sdk/src/matrix";
 | 
			
		|||
import { mocked } from "jest-mock";
 | 
			
		||||
import userEvent from "@testing-library/user-event";
 | 
			
		||||
 | 
			
		||||
import DiscoverySettings from "../../../../../../src/components/views/settings/discovery/DiscoverySettings";
 | 
			
		||||
import { DiscoverySettings } from "../../../../../../src/components/views/settings/discovery/DiscoverySettings";
 | 
			
		||||
import { stubClient } from "../../../../../test-utils";
 | 
			
		||||
import MatrixClientContext from "../../../../../../src/contexts/MatrixClientContext";
 | 
			
		||||
import { UIFeature } from "../../../../../../src/settings/UIFeature";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details.
 | 
			
		|||
import React from "react";
 | 
			
		||||
import { render } from "jest-matrix-react";
 | 
			
		||||
 | 
			
		||||
import SettingsSubsection from "../../../../../../src/components/views/settings/shared/SettingsSubsection";
 | 
			
		||||
import { SettingsSubsection } from "../../../../../../src/components/views/settings/shared/SettingsSubsection";
 | 
			
		||||
 | 
			
		||||
describe("<SettingsSubsection />", () => {
 | 
			
		||||
    const defaultProps = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,7 @@ import { createTestClient, flushPromises, setupAsyncStoreWithClient } from "../.
 | 
			
		|||
import SettingsStore from "../../../src/settings/SettingsStore";
 | 
			
		||||
import { BreadcrumbsStore } from "../../../src/stores/BreadcrumbsStore";
 | 
			
		||||
import { Action } from "../../../src/dispatcher/actions";
 | 
			
		||||
import { defaultDispatcher } from "../../../src/dispatcher/dispatcher";
 | 
			
		||||
import defaultDispatcher from "../../../src/dispatcher/dispatcher";
 | 
			
		||||
 | 
			
		||||
describe("BreadcrumbsStore", () => {
 | 
			
		||||
    let store: BreadcrumbsStore;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										424
									
								
								yarn.lock
								
								
								
								
							
							
						
						
									
										424
									
								
								yarn.lock
								
								
								
								
							| 
						 | 
				
			
			@ -34,22 +34,6 @@
 | 
			
		|||
  dependencies:
 | 
			
		||||
    axe-core "~4.10.0"
 | 
			
		||||
 | 
			
		||||
"@babel/cli@^7.12.10":
 | 
			
		||||
  version "7.25.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.25.7.tgz#f76693c7cfb93c99844d3ed87ed4f291383ef1bf"
 | 
			
		||||
  integrity sha512-vQw4QjrqjLSuL0Tt3gfVXbxEHOfsCcHN8tKyTclpSMYLq3Bp0BTzWYZfMKBs3PQ+to8q3BnumBIAsMdOqDJ6nw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@jridgewell/trace-mapping" "^0.3.25"
 | 
			
		||||
    commander "^6.2.0"
 | 
			
		||||
    convert-source-map "^2.0.0"
 | 
			
		||||
    fs-readdir-recursive "^1.1.0"
 | 
			
		||||
    glob "^7.2.0"
 | 
			
		||||
    make-dir "^2.1.0"
 | 
			
		||||
    slash "^2.0.0"
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3"
 | 
			
		||||
    chokidar "^3.6.0"
 | 
			
		||||
 | 
			
		||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.7":
 | 
			
		||||
  version "7.25.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7"
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +267,7 @@
 | 
			
		|||
    js-tokens "^4.0.0"
 | 
			
		||||
    picocolors "^1.0.0"
 | 
			
		||||
 | 
			
		||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.7", "@babel/parser@^7.25.8":
 | 
			
		||||
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.7", "@babel/parser@^7.25.8":
 | 
			
		||||
  version "7.25.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2"
 | 
			
		||||
  integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==
 | 
			
		||||
| 
						 | 
				
			
			@ -1032,17 +1016,6 @@
 | 
			
		|||
    "@babel/plugin-transform-modules-commonjs" "^7.25.7"
 | 
			
		||||
    "@babel/plugin-transform-typescript" "^7.25.7"
 | 
			
		||||
 | 
			
		||||
"@babel/register@^7.12.10":
 | 
			
		||||
  version "7.25.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.25.7.tgz#75ec0d3a8f843d344c51bf2f18fcc03f3a4c9117"
 | 
			
		||||
  integrity sha512-qHTd2Rhn/rKhSUwdY6+n98FmwXN+N+zxSVx3zWqRe9INyvTpv+aQ5gDV2+43ACd3VtMBzPPljbb0gZb8u5ma6Q==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    clone-deep "^4.0.1"
 | 
			
		||||
    find-cache-dir "^2.0.0"
 | 
			
		||||
    make-dir "^2.1.0"
 | 
			
		||||
    pirates "^4.0.6"
 | 
			
		||||
    source-map-support "^0.5.16"
 | 
			
		||||
 | 
			
		||||
"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
 | 
			
		||||
  version "7.25.7"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6"
 | 
			
		||||
| 
						 | 
				
			
			@ -1651,13 +1624,6 @@
 | 
			
		|||
    "@types/node" "*"
 | 
			
		||||
    jest-mock "^29.7.0"
 | 
			
		||||
 | 
			
		||||
"@jest/expect-utils@^28.1.3":
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525"
 | 
			
		||||
  integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    jest-get-type "^28.0.2"
 | 
			
		||||
 | 
			
		||||
"@jest/expect-utils@^29.7.0":
 | 
			
		||||
  version "29.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
 | 
			
		||||
| 
						 | 
				
			
			@ -1725,13 +1691,6 @@
 | 
			
		|||
    strip-ansi "^6.0.0"
 | 
			
		||||
    v8-to-istanbul "^9.0.1"
 | 
			
		||||
 | 
			
		||||
"@jest/schemas@^28.1.3":
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905"
 | 
			
		||||
  integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@sinclair/typebox" "^0.24.1"
 | 
			
		||||
 | 
			
		||||
"@jest/schemas@^29.6.3":
 | 
			
		||||
  version "29.6.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
 | 
			
		||||
| 
						 | 
				
			
			@ -1789,18 +1748,6 @@
 | 
			
		|||
    slash "^3.0.0"
 | 
			
		||||
    write-file-atomic "^4.0.2"
 | 
			
		||||
 | 
			
		||||
"@jest/types@^28.1.3":
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b"
 | 
			
		||||
  integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@jest/schemas" "^28.1.3"
 | 
			
		||||
    "@types/istanbul-lib-coverage" "^2.0.0"
 | 
			
		||||
    "@types/istanbul-reports" "^3.0.0"
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
    "@types/yargs" "^17.0.8"
 | 
			
		||||
    chalk "^4.0.0"
 | 
			
		||||
 | 
			
		||||
"@jest/types@^29.6.3":
 | 
			
		||||
  version "29.6.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
 | 
			
		||||
| 
						 | 
				
			
			@ -1966,11 +1913,6 @@
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/@matrix-org/spec/-/spec-1.12.0.tgz#9e8d37f65dc8029ceeac1da47556e6ba59d44733"
 | 
			
		||||
  integrity sha512-QHUQ79dMtd0eKQgebRye8li1y/S1172T6fXhu10dsFKtirSWblneoeFnCUR8hsUSBGWLtqBFcryVGa9uoBhqxg==
 | 
			
		||||
 | 
			
		||||
"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3":
 | 
			
		||||
  version "2.1.8-no-fsevents.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b"
 | 
			
		||||
  integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==
 | 
			
		||||
 | 
			
		||||
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
 | 
			
		||||
  version "5.1.1-v1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
 | 
			
		||||
| 
						 | 
				
			
			@ -1991,7 +1933,7 @@
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
 | 
			
		||||
  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
 | 
			
		||||
 | 
			
		||||
"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
 | 
			
		||||
"@nodelib/fs.walk@1.2.8", "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
 | 
			
		||||
  version "1.2.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
 | 
			
		||||
  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
 | 
			
		||||
| 
						 | 
				
			
			@ -2482,11 +2424,6 @@
 | 
			
		|||
    unplugin "1.0.1"
 | 
			
		||||
    uuid "^9.0.0"
 | 
			
		||||
 | 
			
		||||
"@sinclair/typebox@^0.24.1":
 | 
			
		||||
  version "0.24.51"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f"
 | 
			
		||||
  integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==
 | 
			
		||||
 | 
			
		||||
"@sinclair/typebox@^0.27.8":
 | 
			
		||||
  version "0.27.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
 | 
			
		||||
| 
						 | 
				
			
			@ -2511,6 +2448,15 @@
 | 
			
		|||
  dependencies:
 | 
			
		||||
    "@sinonjs/commons" "^3.0.0"
 | 
			
		||||
 | 
			
		||||
"@snyk/github-codeowners@1.1.0":
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@snyk/github-codeowners/-/github-codeowners-1.1.0.tgz#45b99732c3c38b5f5b47e43d2b0c9db67a6d2bcc"
 | 
			
		||||
  integrity sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    commander "^4.1.1"
 | 
			
		||||
    ignore "^5.1.8"
 | 
			
		||||
    p-map "^4.0.0"
 | 
			
		||||
 | 
			
		||||
"@stylistic/eslint-plugin@^2.9.0":
 | 
			
		||||
  version "2.9.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@stylistic/eslint-plugin/-/eslint-plugin-2.9.0.tgz#5ab3326303915e020ddaf39154290e2800a84bcd"
 | 
			
		||||
| 
						 | 
				
			
			@ -2780,11 +2726,6 @@
 | 
			
		|||
  dependencies:
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
 | 
			
		||||
"@types/content-type@^1.1.5":
 | 
			
		||||
  version "1.1.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/content-type/-/content-type-1.1.8.tgz#319644d07ee6b4bfc734483008393b89b99f0219"
 | 
			
		||||
  integrity sha512-1tBhmVUeso3+ahfyaKluXe38p+94lovUZdoVfQ3OnJo9uJC42JT7CBoN3k9HYhAae+GwiBYmHu+N9FZhOG+2Pg==
 | 
			
		||||
 | 
			
		||||
"@types/counterpart@^0.18.1":
 | 
			
		||||
  version "0.18.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/counterpart/-/counterpart-0.18.4.tgz#e3e331b7e0d5496873d417839f3b2bbcf555bb73"
 | 
			
		||||
| 
						 | 
				
			
			@ -3139,11 +3080,6 @@
 | 
			
		|||
  dependencies:
 | 
			
		||||
    htmlparser2 "^8.0.0"
 | 
			
		||||
 | 
			
		||||
"@types/sdp-transform@^2.4.6":
 | 
			
		||||
  version "2.4.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/sdp-transform/-/sdp-transform-2.4.9.tgz#26ef39f487a6909b0512f580b80920a366b27f52"
 | 
			
		||||
  integrity sha512-bVr+/OoZZy7wrHlNcEAAa6PAgKA4BoXPYVN2EijMC5WnGgQ4ZEuixmKnVs2roiAvr7RhIFVH17QD27cojgIZCg==
 | 
			
		||||
 | 
			
		||||
"@types/seedrandom@3.0.8":
 | 
			
		||||
  version "3.0.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.8.tgz#61cc8ed88f93a3c31289c295e6df8ca40be42bdf"
 | 
			
		||||
| 
						 | 
				
			
			@ -3646,6 +3582,14 @@ agent-base@6:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    debug "4"
 | 
			
		||||
 | 
			
		||||
aggregate-error@^3.0.0:
 | 
			
		||||
  version "3.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
 | 
			
		||||
  integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    clean-stack "^2.0.0"
 | 
			
		||||
    indent-string "^4.0.0"
 | 
			
		||||
 | 
			
		||||
ajv-formats@^2.1.1:
 | 
			
		||||
  version "2.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
 | 
			
		||||
| 
						 | 
				
			
			@ -3941,11 +3885,6 @@ await-lock@^2.1.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/await-lock/-/await-lock-2.2.2.tgz#a95a9b269bfd2f69d22b17a321686f551152bcef"
 | 
			
		||||
  integrity sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==
 | 
			
		||||
 | 
			
		||||
axe-core@4.10.2:
 | 
			
		||||
  version "4.10.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.2.tgz#85228e3e1d8b8532a27659b332e39b7fa0e022df"
 | 
			
		||||
  integrity sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==
 | 
			
		||||
 | 
			
		||||
axe-core@^4.10.0, axe-core@~4.10.0:
 | 
			
		||||
  version "4.10.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.1.tgz#7d2589b0183f05b0f23e55c2f4cdf97b5bdc66d9"
 | 
			
		||||
| 
						 | 
				
			
			@ -4101,7 +4040,7 @@ blob-polyfill@^9.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/blob-polyfill/-/blob-polyfill-9.0.20240710.tgz#2ef075a207311ea327704f04dc4a98cbefe4143b"
 | 
			
		||||
  integrity sha512-DPUO/EjNANCgSVg0geTy1vmUpu5hhp9tV2F7xUSTUd1jwe4XpwupGB+lt5PhVUqpqAk+zK1etqp6Pl/HVf71Ug==
 | 
			
		||||
 | 
			
		||||
bloom-filters@^3.0.1:
 | 
			
		||||
bloom-filters@^3.0.2:
 | 
			
		||||
  version "3.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/bloom-filters/-/bloom-filters-3.0.2.tgz#9c386fca1913da554ededf7a7163bbb93a82d1dd"
 | 
			
		||||
  integrity sha512-QPKiokjBy16SrBh8T/FAWo74VuNwACnJ9t+q15a+9w5CDaOqHTPPBrDUy70U7YE4+DmENRodtlEdeeq1pB4DZQ==
 | 
			
		||||
| 
						 | 
				
			
			@ -4327,11 +4266,6 @@ char-regex@^1.0.2:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
 | 
			
		||||
  integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
 | 
			
		||||
 | 
			
		||||
charenc@0.0.2:
 | 
			
		||||
  version "0.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
 | 
			
		||||
  integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
 | 
			
		||||
 | 
			
		||||
chokidar@^3.5.3, chokidar@^3.6.0:
 | 
			
		||||
  version "3.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
 | 
			
		||||
| 
						 | 
				
			
			@ -4393,6 +4327,11 @@ clean-regexp@^1.0.0:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    escape-string-regexp "^1.0.5"
 | 
			
		||||
 | 
			
		||||
clean-stack@^2.0.0:
 | 
			
		||||
  version "2.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
 | 
			
		||||
  integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
 | 
			
		||||
 | 
			
		||||
cli-cursor@^5.0.0:
 | 
			
		||||
  version "5.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38"
 | 
			
		||||
| 
						 | 
				
			
			@ -4435,6 +4374,11 @@ clone-deep@^4.0.1:
 | 
			
		|||
    kind-of "^6.0.2"
 | 
			
		||||
    shallow-clone "^3.0.0"
 | 
			
		||||
 | 
			
		||||
clone@^1.0.2:
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
 | 
			
		||||
  integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
 | 
			
		||||
 | 
			
		||||
co@^4.6.0:
 | 
			
		||||
  version "4.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
 | 
			
		||||
| 
						 | 
				
			
			@ -4501,7 +4445,12 @@ commander@^2.20.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
 | 
			
		||||
  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
 | 
			
		||||
 | 
			
		||||
commander@^6.2.0, commander@^6.2.1:
 | 
			
		||||
commander@^4.1.1:
 | 
			
		||||
  version "4.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
 | 
			
		||||
  integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
 | 
			
		||||
 | 
			
		||||
commander@^6.2.1:
 | 
			
		||||
  version "6.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
 | 
			
		||||
  integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
 | 
			
		||||
| 
						 | 
				
			
			@ -4526,11 +4475,6 @@ common-path-prefix@^3.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0"
 | 
			
		||||
  integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==
 | 
			
		||||
 | 
			
		||||
commondir@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
 | 
			
		||||
  integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
 | 
			
		||||
 | 
			
		||||
commonmark@^0.31.0:
 | 
			
		||||
  version "0.31.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.31.2.tgz#9d8d5439c82c9a235154d858a53e1a7965d573a5"
 | 
			
		||||
| 
						 | 
				
			
			@ -4718,11 +4662,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
 | 
			
		|||
    shebang-command "^2.0.0"
 | 
			
		||||
    which "^2.0.1"
 | 
			
		||||
 | 
			
		||||
crypt@0.0.2:
 | 
			
		||||
  version "0.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
 | 
			
		||||
  integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
 | 
			
		||||
 | 
			
		||||
css-blank-pseudo@^7.0.0:
 | 
			
		||||
  version "7.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-7.0.0.tgz#6069ac242aab6a4d52aabbd0287846080ac8e2d9"
 | 
			
		||||
| 
						 | 
				
			
			@ -5080,6 +5019,13 @@ default-browser@^5.2.1:
 | 
			
		|||
    bundle-name "^4.1.0"
 | 
			
		||||
    default-browser-id "^5.0.0"
 | 
			
		||||
 | 
			
		||||
defaults@^1.0.3:
 | 
			
		||||
  version "1.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
 | 
			
		||||
  integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    clone "^1.0.2"
 | 
			
		||||
 | 
			
		||||
define-data-property@^1.0.1, define-data-property@^1.1.4:
 | 
			
		||||
  version "1.1.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
 | 
			
		||||
| 
						 | 
				
			
			@ -5153,11 +5099,6 @@ diff-match-patch@^1.0.5:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37"
 | 
			
		||||
  integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==
 | 
			
		||||
 | 
			
		||||
diff-sequences@^28.1.1:
 | 
			
		||||
  version "28.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6"
 | 
			
		||||
  integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==
 | 
			
		||||
 | 
			
		||||
diff-sequences@^29.6.3:
 | 
			
		||||
  version "29.6.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
 | 
			
		||||
| 
						 | 
				
			
			@ -5316,6 +5257,15 @@ eastasianwidth@^0.2.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
 | 
			
		||||
  integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
 | 
			
		||||
 | 
			
		||||
easy-table@1.2.0:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.2.0.tgz#ba9225d7138fee307bfd4f0b5bc3c04bdc7c54eb"
 | 
			
		||||
  integrity sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    ansi-regex "^5.0.1"
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    wcwidth "^1.0.1"
 | 
			
		||||
 | 
			
		||||
ee-first@1.1.1:
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
 | 
			
		||||
| 
						 | 
				
			
			@ -5950,17 +5900,6 @@ exit@^0.1.2:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
 | 
			
		||||
  integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
 | 
			
		||||
 | 
			
		||||
expect@^28.1.0:
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec"
 | 
			
		||||
  integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@jest/expect-utils" "^28.1.3"
 | 
			
		||||
    jest-get-type "^28.0.2"
 | 
			
		||||
    jest-matcher-utils "^28.1.3"
 | 
			
		||||
    jest-message-util "^28.1.3"
 | 
			
		||||
    jest-util "^28.1.3"
 | 
			
		||||
 | 
			
		||||
expect@^29.0.0, expect@^29.7.0:
 | 
			
		||||
  version "29.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
 | 
			
		||||
| 
						 | 
				
			
			@ -6166,15 +6105,6 @@ finalhandler@1.3.1:
 | 
			
		|||
    statuses "2.0.1"
 | 
			
		||||
    unpipe "~1.0.0"
 | 
			
		||||
 | 
			
		||||
find-cache-dir@^2.0.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
 | 
			
		||||
  integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    commondir "^1.0.1"
 | 
			
		||||
    make-dir "^2.0.0"
 | 
			
		||||
    pkg-dir "^3.0.0"
 | 
			
		||||
 | 
			
		||||
find-cache-dir@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2"
 | 
			
		||||
| 
						 | 
				
			
			@ -6183,13 +6113,6 @@ find-cache-dir@^4.0.0:
 | 
			
		|||
    common-path-prefix "^3.0.0"
 | 
			
		||||
    pkg-dir "^7.0.0"
 | 
			
		||||
 | 
			
		||||
find-up@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
 | 
			
		||||
  integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    locate-path "^3.0.0"
 | 
			
		||||
 | 
			
		||||
find-up@^4.0.0, find-up@^4.1.0:
 | 
			
		||||
  version "4.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
 | 
			
		||||
| 
						 | 
				
			
			@ -6306,11 +6229,6 @@ fs-extra@^11.0.0:
 | 
			
		|||
    jsonfile "^6.0.1"
 | 
			
		||||
    universalify "^2.0.0"
 | 
			
		||||
 | 
			
		||||
fs-readdir-recursive@^1.1.0:
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
 | 
			
		||||
  integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==
 | 
			
		||||
 | 
			
		||||
fs.realpath@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 | 
			
		||||
| 
						 | 
				
			
			@ -6447,7 +6365,7 @@ glob@^11.0.0:
 | 
			
		|||
    package-json-from-dist "^1.0.0"
 | 
			
		||||
    path-scurry "^2.0.0"
 | 
			
		||||
 | 
			
		||||
glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
 | 
			
		||||
glob@^7.1.3, glob@^7.1.4:
 | 
			
		||||
  version "7.2.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
 | 
			
		||||
  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
 | 
			
		||||
| 
						 | 
				
			
			@ -6829,7 +6747,7 @@ ieee754@^1.1.12, ieee754@^1.2.1:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
 | 
			
		||||
  integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
 | 
			
		||||
 | 
			
		||||
ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1:
 | 
			
		||||
ignore@^5.1.8, ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1:
 | 
			
		||||
  version "5.3.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
 | 
			
		||||
  integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
 | 
			
		||||
| 
						 | 
				
			
			@ -6989,11 +6907,6 @@ is-buffer@^2.0.5:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191"
 | 
			
		||||
  integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
 | 
			
		||||
 | 
			
		||||
is-buffer@~1.1.6:
 | 
			
		||||
  version "1.1.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
 | 
			
		||||
  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 | 
			
		||||
 | 
			
		||||
is-builtin-module@^3.2.1:
 | 
			
		||||
  version "3.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169"
 | 
			
		||||
| 
						 | 
				
			
			@ -7410,16 +7323,6 @@ jest-config@^29.7.0:
 | 
			
		|||
    slash "^3.0.0"
 | 
			
		||||
    strip-json-comments "^3.1.1"
 | 
			
		||||
 | 
			
		||||
jest-diff@^28.1.3:
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f"
 | 
			
		||||
  integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    chalk "^4.0.0"
 | 
			
		||||
    diff-sequences "^28.1.1"
 | 
			
		||||
    jest-get-type "^28.0.2"
 | 
			
		||||
    pretty-format "^28.1.3"
 | 
			
		||||
 | 
			
		||||
jest-diff@^29.7.0:
 | 
			
		||||
  version "29.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
 | 
			
		||||
| 
						 | 
				
			
			@ -7474,11 +7377,6 @@ jest-environment-node@^29.7.0:
 | 
			
		|||
    jest-mock "^29.7.0"
 | 
			
		||||
    jest-util "^29.7.0"
 | 
			
		||||
 | 
			
		||||
jest-get-type@^28.0.2:
 | 
			
		||||
  version "28.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203"
 | 
			
		||||
  integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==
 | 
			
		||||
 | 
			
		||||
jest-get-type@^29.6.3:
 | 
			
		||||
  version "29.6.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
 | 
			
		||||
| 
						 | 
				
			
			@ -7511,16 +7409,6 @@ jest-leak-detector@^29.7.0:
 | 
			
		|||
    jest-get-type "^29.6.3"
 | 
			
		||||
    pretty-format "^29.7.0"
 | 
			
		||||
 | 
			
		||||
jest-matcher-utils@^28.1.3:
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e"
 | 
			
		||||
  integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    chalk "^4.0.0"
 | 
			
		||||
    jest-diff "^28.1.3"
 | 
			
		||||
    jest-get-type "^28.0.2"
 | 
			
		||||
    pretty-format "^28.1.3"
 | 
			
		||||
 | 
			
		||||
jest-matcher-utils@^29.7.0:
 | 
			
		||||
  version "29.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
 | 
			
		||||
| 
						 | 
				
			
			@ -7531,21 +7419,6 @@ jest-matcher-utils@^29.7.0:
 | 
			
		|||
    jest-get-type "^29.6.3"
 | 
			
		||||
    pretty-format "^29.7.0"
 | 
			
		||||
 | 
			
		||||
jest-message-util@^28.1.3:
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d"
 | 
			
		||||
  integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@babel/code-frame" "^7.12.13"
 | 
			
		||||
    "@jest/types" "^28.1.3"
 | 
			
		||||
    "@types/stack-utils" "^2.0.0"
 | 
			
		||||
    chalk "^4.0.0"
 | 
			
		||||
    graceful-fs "^4.2.9"
 | 
			
		||||
    micromatch "^4.0.4"
 | 
			
		||||
    pretty-format "^28.1.3"
 | 
			
		||||
    slash "^3.0.0"
 | 
			
		||||
    stack-utils "^2.0.3"
 | 
			
		||||
 | 
			
		||||
jest-message-util@^29.7.0:
 | 
			
		||||
  version "29.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3"
 | 
			
		||||
| 
						 | 
				
			
			@ -7689,18 +7562,6 @@ jest-snapshot@^29.7.0:
 | 
			
		|||
    pretty-format "^29.7.0"
 | 
			
		||||
    semver "^7.5.3"
 | 
			
		||||
 | 
			
		||||
jest-util@^28.1.3:
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0"
 | 
			
		||||
  integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@jest/types" "^28.1.3"
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
    chalk "^4.0.0"
 | 
			
		||||
    ci-info "^3.2.0"
 | 
			
		||||
    graceful-fs "^4.2.9"
 | 
			
		||||
    picomatch "^2.2.3"
 | 
			
		||||
 | 
			
		||||
jest-util@^29.7.0:
 | 
			
		||||
  version "29.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc"
 | 
			
		||||
| 
						 | 
				
			
			@ -7773,6 +7634,11 @@ jiti@^1.20.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268"
 | 
			
		||||
  integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==
 | 
			
		||||
 | 
			
		||||
jiti@^2.4.0:
 | 
			
		||||
  version "2.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.0.tgz#393d595fb6031a11d11171b5e4fc0b989ba3e053"
 | 
			
		||||
  integrity sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==
 | 
			
		||||
 | 
			
		||||
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
 | 
			
		||||
| 
						 | 
				
			
			@ -7950,6 +7816,28 @@ kleur@^3.0.3:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
 | 
			
		||||
  integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
 | 
			
		||||
 | 
			
		||||
knip@^5.36.2:
 | 
			
		||||
  version "5.36.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/knip/-/knip-5.36.2.tgz#346ce5eb464bdf34329cdcf3a6d41d0a41dce647"
 | 
			
		||||
  integrity sha512-MudNTKBSqThAFAV29GuRPSKSebByZeQCFeNgXVRVSd+sXcubehTgQHTGqqiwlXGCt4WBP7vuVekp0ZehfZtHuw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@nodelib/fs.walk" "1.2.8"
 | 
			
		||||
    "@snyk/github-codeowners" "1.1.0"
 | 
			
		||||
    easy-table "1.2.0"
 | 
			
		||||
    enhanced-resolve "^5.17.1"
 | 
			
		||||
    fast-glob "^3.3.2"
 | 
			
		||||
    jiti "^2.4.0"
 | 
			
		||||
    js-yaml "^4.1.0"
 | 
			
		||||
    minimist "^1.2.8"
 | 
			
		||||
    picocolors "^1.1.0"
 | 
			
		||||
    picomatch "^4.0.1"
 | 
			
		||||
    pretty-ms "^9.0.0"
 | 
			
		||||
    smol-toml "^1.3.0"
 | 
			
		||||
    strip-json-comments "5.0.1"
 | 
			
		||||
    summary "2.1.0"
 | 
			
		||||
    zod "^3.22.4"
 | 
			
		||||
    zod-validation-error "^3.0.3"
 | 
			
		||||
 | 
			
		||||
known-css-properties@^0.34.0:
 | 
			
		||||
  version "0.34.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.34.0.tgz#ccd7e9f4388302231b3f174a8b1d5b1f7b576cea"
 | 
			
		||||
| 
						 | 
				
			
			@ -8074,14 +7962,6 @@ loader-utils@^2.0.0:
 | 
			
		|||
    emojis-list "^3.0.0"
 | 
			
		||||
    json5 "^2.1.2"
 | 
			
		||||
 | 
			
		||||
locate-path@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
 | 
			
		||||
  integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    p-locate "^3.0.0"
 | 
			
		||||
    path-exists "^3.0.0"
 | 
			
		||||
 | 
			
		||||
locate-path@^5.0.0:
 | 
			
		||||
  version "5.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
 | 
			
		||||
| 
						 | 
				
			
			@ -8224,14 +8104,6 @@ mailhog@^4.16.0:
 | 
			
		|||
  optionalDependencies:
 | 
			
		||||
    iconv-lite "^0.6"
 | 
			
		||||
 | 
			
		||||
make-dir@^2.0.0, make-dir@^2.1.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
 | 
			
		||||
  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    pify "^4.0.1"
 | 
			
		||||
    semver "^5.6.0"
 | 
			
		||||
 | 
			
		||||
make-dir@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
 | 
			
		||||
| 
						 | 
				
			
			@ -8327,13 +8199,6 @@ matrix-events-sdk@0.0.1:
 | 
			
		|||
    unhomoglyph "^1.0.6"
 | 
			
		||||
    uuid "11"
 | 
			
		||||
 | 
			
		||||
matrix-mock-request@^2.5.0:
 | 
			
		||||
  version "2.6.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/matrix-mock-request/-/matrix-mock-request-2.6.0.tgz#0855c10b250668ce542b697251087be2bcc23f92"
 | 
			
		||||
  integrity sha512-D0n+FsoMvHBrBoo60IeGhyrNoCBdT8n+Wl+LMW+k5aR+k9QAxqGopPzJNk1tqeaJLFUhmvYLuNc8/VBKRpPy+Q==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    expect "^28.1.0"
 | 
			
		||||
 | 
			
		||||
matrix-web-i18n@^3.2.1:
 | 
			
		||||
  version "3.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/matrix-web-i18n/-/matrix-web-i18n-3.3.0.tgz#a9f9d87d18ef96f75171883abbf201952cbfbe22"
 | 
			
		||||
| 
						 | 
				
			
			@ -8353,15 +8218,6 @@ matrix-widget-api@^1.10.0:
 | 
			
		|||
    "@types/events" "^3.0.0"
 | 
			
		||||
    events "^3.2.0"
 | 
			
		||||
 | 
			
		||||
md5@^2.3.0:
 | 
			
		||||
  version "2.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
 | 
			
		||||
  integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    charenc "0.0.2"
 | 
			
		||||
    crypt "0.0.2"
 | 
			
		||||
    is-buffer "~1.1.6"
 | 
			
		||||
 | 
			
		||||
mdn-data@2.0.28:
 | 
			
		||||
  version "2.0.28"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba"
 | 
			
		||||
| 
						 | 
				
			
			@ -8555,22 +8411,6 @@ mkdirp@1.0.4, mkdirp@^1.0.4:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
 | 
			
		||||
  integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
 | 
			
		||||
 | 
			
		||||
mkdirp@^3.0.0:
 | 
			
		||||
  version "3.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
 | 
			
		||||
  integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
 | 
			
		||||
 | 
			
		||||
mocha-junit-reporter@^2.2.0:
 | 
			
		||||
  version "2.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-2.2.1.tgz#739f5595d0f051d07af9d74e32c416e13a41cde5"
 | 
			
		||||
  integrity sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    debug "^4.3.4"
 | 
			
		||||
    md5 "^2.3.0"
 | 
			
		||||
    mkdirp "^3.0.0"
 | 
			
		||||
    strip-ansi "^6.0.1"
 | 
			
		||||
    xml "^1.0.1"
 | 
			
		||||
 | 
			
		||||
modernizr@^3.12.0:
 | 
			
		||||
  version "3.13.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/modernizr/-/modernizr-3.13.1.tgz#0102882d91e7546b833a6b833677a9f1a4fd1eb5"
 | 
			
		||||
| 
						 | 
				
			
			@ -8869,7 +8709,7 @@ opus-recorder@^8.0.3:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/opus-recorder/-/opus-recorder-8.0.5.tgz#06d3e32e15da57ebc3f57e41b93033475fcb4e3e"
 | 
			
		||||
  integrity sha512-tBRXc9Btds7i3bVfA7d5rekAlyOcfsivt5vSIXHxRV1Oa+s6iXFW8omZ0Lm3ABWotVcEyKt96iIIUcgbV07YOw==
 | 
			
		||||
 | 
			
		||||
p-limit@^2.0.0, p-limit@^2.2.0:
 | 
			
		||||
p-limit@^2.2.0:
 | 
			
		||||
  version "2.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
 | 
			
		||||
  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
 | 
			
		||||
| 
						 | 
				
			
			@ -8890,13 +8730,6 @@ p-limit@^4.0.0:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    yocto-queue "^1.0.0"
 | 
			
		||||
 | 
			
		||||
p-locate@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
 | 
			
		||||
  integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    p-limit "^2.0.0"
 | 
			
		||||
 | 
			
		||||
p-locate@^4.1.0:
 | 
			
		||||
  version "4.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
 | 
			
		||||
| 
						 | 
				
			
			@ -8918,6 +8751,13 @@ p-locate@^6.0.0:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    p-limit "^4.0.0"
 | 
			
		||||
 | 
			
		||||
p-map@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
 | 
			
		||||
  integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    aggregate-error "^3.0.0"
 | 
			
		||||
 | 
			
		||||
p-retry@4:
 | 
			
		||||
  version "4.6.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
 | 
			
		||||
| 
						 | 
				
			
			@ -8980,6 +8820,11 @@ parse-json@^5.0.0, parse-json@^5.2.0:
 | 
			
		|||
    json-parse-even-better-errors "^2.3.0"
 | 
			
		||||
    lines-and-columns "^1.1.6"
 | 
			
		||||
 | 
			
		||||
parse-ms@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-4.0.0.tgz#c0c058edd47c2a590151a718990533fd62803df4"
 | 
			
		||||
  integrity sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==
 | 
			
		||||
 | 
			
		||||
parse-srcset@^1.0.2:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1"
 | 
			
		||||
| 
						 | 
				
			
			@ -9010,11 +8855,6 @@ path-browserify@^1.0.1:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
 | 
			
		||||
  integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
 | 
			
		||||
 | 
			
		||||
path-exists@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
 | 
			
		||||
  integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
 | 
			
		||||
 | 
			
		||||
path-exists@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
 | 
			
		||||
| 
						 | 
				
			
			@ -9099,7 +8939,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
 | 
			
		||||
  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 | 
			
		||||
 | 
			
		||||
picomatch@^4.0.2:
 | 
			
		||||
picomatch@^4.0.1, picomatch@^4.0.2:
 | 
			
		||||
  version "4.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
 | 
			
		||||
  integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
 | 
			
		||||
| 
						 | 
				
			
			@ -9114,23 +8954,11 @@ pify@^2.3.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
 | 
			
		||||
  integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
 | 
			
		||||
 | 
			
		||||
pify@^4.0.1:
 | 
			
		||||
  version "4.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
 | 
			
		||||
  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
 | 
			
		||||
 | 
			
		||||
pirates@^4.0.4, pirates@^4.0.6:
 | 
			
		||||
pirates@^4.0.4:
 | 
			
		||||
  version "4.0.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
 | 
			
		||||
  integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
 | 
			
		||||
 | 
			
		||||
pkg-dir@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
 | 
			
		||||
  integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    find-up "^3.0.0"
 | 
			
		||||
 | 
			
		||||
pkg-dir@^4.2.0:
 | 
			
		||||
  version "4.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
 | 
			
		||||
| 
						 | 
				
			
			@ -9828,16 +9656,6 @@ pretty-format@^27.0.2:
 | 
			
		|||
    ansi-styles "^5.0.0"
 | 
			
		||||
    react-is "^17.0.1"
 | 
			
		||||
 | 
			
		||||
pretty-format@^28.1.3:
 | 
			
		||||
  version "28.1.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5"
 | 
			
		||||
  integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@jest/schemas" "^28.1.3"
 | 
			
		||||
    ansi-regex "^5.0.1"
 | 
			
		||||
    ansi-styles "^5.0.0"
 | 
			
		||||
    react-is "^18.0.0"
 | 
			
		||||
 | 
			
		||||
pretty-format@^29.0.0, pretty-format@^29.7.0:
 | 
			
		||||
  version "29.7.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
 | 
			
		||||
| 
						 | 
				
			
			@ -9847,6 +9665,13 @@ pretty-format@^29.0.0, pretty-format@^29.7.0:
 | 
			
		|||
    ansi-styles "^5.0.0"
 | 
			
		||||
    react-is "^18.0.0"
 | 
			
		||||
 | 
			
		||||
pretty-ms@^9.0.0:
 | 
			
		||||
  version "9.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-9.1.0.tgz#0ad44de6086454f48a168e5abb3c26f8db1b3253"
 | 
			
		||||
  integrity sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    parse-ms "^4.0.0"
 | 
			
		||||
 | 
			
		||||
process-nextick-args@~2.0.0:
 | 
			
		||||
  version "2.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
 | 
			
		||||
| 
						 | 
				
			
			@ -10546,7 +10371,7 @@ selfsigned@^2.4.1:
 | 
			
		|||
    "@types/node-forge" "^1.3.0"
 | 
			
		||||
    node-forge "^1"
 | 
			
		||||
 | 
			
		||||
"semver@2 || 3 || 4 || 5", semver@^5.6.0:
 | 
			
		||||
"semver@2 || 3 || 4 || 5":
 | 
			
		||||
  version "5.7.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
 | 
			
		||||
  integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
 | 
			
		||||
| 
						 | 
				
			
			@ -10710,11 +10535,6 @@ sisteransi@^1.0.5:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
 | 
			
		||||
  integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
 | 
			
		||||
 | 
			
		||||
slash@^2.0.0:
 | 
			
		||||
  version "2.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
 | 
			
		||||
  integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
 | 
			
		||||
 | 
			
		||||
slash@^3.0.0:
 | 
			
		||||
  version "3.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
 | 
			
		||||
| 
						 | 
				
			
			@ -10750,6 +10570,11 @@ slice-ansi@^7.1.0:
 | 
			
		|||
    ansi-styles "^6.2.1"
 | 
			
		||||
    is-fullwidth-code-point "^5.0.0"
 | 
			
		||||
 | 
			
		||||
smol-toml@^1.3.0:
 | 
			
		||||
  version "1.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/smol-toml/-/smol-toml-1.3.0.tgz#5200e251fffadbb72570c84e9776d2a3eca48143"
 | 
			
		||||
  integrity sha512-tWpi2TsODPScmi48b/OQZGi2lgUmBCHy6SZrhi/FdnnHiU1GwebbCfuQuxsC3nHaLwtYeJGPrDZDIeodDOc4pA==
 | 
			
		||||
 | 
			
		||||
snake-case@^3.0.4:
 | 
			
		||||
  version "3.0.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
 | 
			
		||||
| 
						 | 
				
			
			@ -10780,7 +10605,7 @@ source-map-support@0.5.13:
 | 
			
		|||
    buffer-from "^1.0.0"
 | 
			
		||||
    source-map "^0.6.0"
 | 
			
		||||
 | 
			
		||||
source-map-support@^0.5.16, source-map-support@~0.5.20:
 | 
			
		||||
source-map-support@~0.5.20:
 | 
			
		||||
  version "0.5.21"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
 | 
			
		||||
  integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
 | 
			
		||||
| 
						 | 
				
			
			@ -11050,6 +10875,11 @@ strip-indent@^3.0.0:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    min-indent "^1.0.0"
 | 
			
		||||
 | 
			
		||||
strip-json-comments@5.0.1:
 | 
			
		||||
  version "5.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.1.tgz#0d8b7d01b23848ed7dbdf4baaaa31a8250d8cfa0"
 | 
			
		||||
  integrity sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==
 | 
			
		||||
 | 
			
		||||
strip-json-comments@^3.1.1:
 | 
			
		||||
  version "3.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
 | 
			
		||||
| 
						 | 
				
			
			@ -11138,6 +10968,11 @@ sugarss@^4.0.1:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-4.0.1.tgz#128a783ed71ee0fc3b489ce1f7d5a89bc1e24383"
 | 
			
		||||
  integrity sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==
 | 
			
		||||
 | 
			
		||||
summary@2.1.0:
 | 
			
		||||
  version "2.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/summary/-/summary-2.1.0.tgz#be8a49a0aa34eb6ceea56042cae88f8add4b0885"
 | 
			
		||||
  integrity sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==
 | 
			
		||||
 | 
			
		||||
supercluster@^7.1.5:
 | 
			
		||||
  version "7.1.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3"
 | 
			
		||||
| 
						 | 
				
			
			@ -11795,6 +11630,13 @@ wbuf@^1.1.0, wbuf@^1.7.3:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    minimalistic-assert "^1.0.0"
 | 
			
		||||
 | 
			
		||||
wcwidth@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
 | 
			
		||||
  integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    defaults "^1.0.3"
 | 
			
		||||
 | 
			
		||||
web-streams-polyfill@^4.0.0:
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0.tgz#74cedf168339ee6e709532f76c49313a8c7acdac"
 | 
			
		||||
| 
						 | 
				
			
			@ -12151,7 +11993,7 @@ xml-name-validator@^4.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
 | 
			
		||||
  integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
 | 
			
		||||
 | 
			
		||||
xml@1.0.1, xml@^1.0.1:
 | 
			
		||||
xml@1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
 | 
			
		||||
  integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==
 | 
			
		||||
| 
						 | 
				
			
			@ -12255,3 +12097,13 @@ yocto-queue@^1.0.0:
 | 
			
		|||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110"
 | 
			
		||||
  integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==
 | 
			
		||||
 | 
			
		||||
zod-validation-error@^3.0.3:
 | 
			
		||||
  version "3.4.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-3.4.0.tgz#3a8a1f55c65579822d7faa190b51336c61bee2a6"
 | 
			
		||||
  integrity sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==
 | 
			
		||||
 | 
			
		||||
zod@^3.22.4:
 | 
			
		||||
  version "3.23.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
 | 
			
		||||
  integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue