diff --git a/.eslintrc.yml b/.eslintrc.yml index 855f18883..e5a44beea 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -3,19 +3,20 @@ extends: - eslint:recommended - plugin:prettier/recommended - plugin:jest/recommended + - plugin:prettier-doc/recommended +parserOptions: + ecmaVersion: 2023 + sourceType: "module" plugins: - import root: true env: - es6: true + es2024: true node: true jest: true rules: eqeqeq: error curly: error - import/no-extraneous-dependencies: - - error - - devDependencies: ["tests*/**", "scripts/**", "build/**"] no-else-return: error no-inner-declarations: error no-useless-return: error @@ -35,12 +36,20 @@ rules: - error - never - exceptRange: true + + import/extensions: + - error + - ignorePackages + import/no-extraneous-dependencies: + - error + - devDependencies: ["tests*/**", "scripts/**", "build/**"] overrides: - - files: "tests/**/*.js" - rules: - strict: off + - files: "**/*.cjs" + parserOptions: + sourceType: "script" + - files: "tests/**/*.mjs" globals: run_spec: true - - files: "build/*.js" + - files: "build/*.mjs" parserOptions: sourceType: module diff --git a/.gitattributes b/.gitattributes index 2d640ef0b..ced03355d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ +* text=auto eol=lf tests/newline/CRLF.php text eol=crlf tests/newline/html-CRLF.php text eol=crlf tests/newline/mixed-CRLF.php text eol=crlf diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..1bf21e662 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: + - package-ecosystem: npm + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 6971faaaf..7a644cbad 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -1,28 +1,54 @@ name: Node CI -on: [push, pull_request] +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: - build: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + cache: "yarn" + - run: yarn install --frozen-lockfile + - run: yarn lint + test: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest] - node-version: [10.x, 12.x, 13.x] + os: [ubuntu-latest, macos-latest, windows-latest] + node-version: [18.x, 20.x, 22.x, 24.x] + + env: + ENABLE_COVERAGE: true + AST_COMPARE: true steps: - - uses: actions/checkout@v1 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: yarn install, build, and test - run: | - yarn - yarn test - yarn codecov - env: - CI: true - AST_COMPARE: 1 + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: "yarn" + - run: yarn install --frozen-lockfile + - run: yarn c8 yarn test:node + - uses: codecov/codecov-action@v5 + with: + fail_ci_if_error: true + disable_search: true + files: coverage/lcov.info + token: ${{ secrets.CODECOV_TOKEN }} + - run: yarn test:standalone diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..7ded15658 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +tests/**/* +!tests/**/jsfmt.spec.js diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 000000000..f7083e1a8 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1 @@ +trailingComma: "es5" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e8eff90da..9122ac01b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,9 +15,9 @@ yarn test tests/{folder of your choice} Here's what you need to know about the tests: -* The tests use [Jest](https://facebook.github.io/jest/) snapshots. -* You can make changes and run `jest -u` (or `yarn test -u`) to update the snapshots. Then run `git diff` to take a look at what changed. Always update the snapshots when opening a PR. -* You can run `AST_COMPARE=1 yarn test` for a more robust test run. That formats each file, re-parses it, and compares the new AST with the original one and makes sure they are semantically equivalent. +- The tests use [Jest](https://facebook.github.io/jest/) snapshots. +- You can make changes and run `jest -u` (or `yarn test -u`) to update the snapshots. Then run `git diff` to take a look at what changed. Always update the snapshots when opening a PR. +- You can run `AST_COMPARE=1 yarn test` for a more robust test run. That formats each file, re-parses it, and compares the new AST with the original one and makes sure they are semantically equivalent. Run `yarn lint --fix` to automatically format files. @@ -31,16 +31,14 @@ Add the following configuration to `.vscode/launch.json`: ```json { - "type": "node", - "request": "launch", - "name": "Prettify test.php", - "skipFiles": [ - "/**" - ], - "program": "${workspaceRoot}/node_modules/.bin/prettier", - "args": ["--plugin=.", "--parser=php", "test.php"], - "cwd": "${workspaceRoot}", - "outputCapture": "std" + "type": "node", + "request": "launch", + "name": "Prettify test.php", + "skipFiles": ["/**"], + "program": "${workspaceRoot}/node_modules/.bin/prettier", + "args": ["--plugin=.", "--parser=php", "test.php"], + "cwd": "${workspaceRoot}", + "outputCapture": "std" } ``` diff --git a/README.md b/README.md index 42ac7f0e2..aacfb96c0 100644 --- a/README.md +++ b/README.md @@ -8,26 +8,23 @@

Prettier PHP Plugin

- - GitHub Workflow Status + + CI Status npm version - Codecov Coverage Status + Coverage Status - + code style: prettier - - Gitter - - - Follow+Prettier+on+Twitter + + Follow Prettier on X

@@ -37,6 +34,10 @@ Prettier is an opinionated code formatter. It enforces a consistent style by par This plugin adds support for the PHP language to Prettier. +> [!NOTE] +> +> This plugin uses PSR / PER as guidance when making formatting decisions, but does not aim to be fully PSR / PER compliant. The idea is to stay reasonably close to how Prettier for JS works. + ### Can this be used in production? We're considering the plugin to be stable when pure PHP files are formatted. Formatting of files that contain mixed PHP and HTML is still considered unstable - please see [open issues with the tag "inline"](https://github.com/prettier/plugin-php/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Ainline) for details. @@ -85,7 +86,7 @@ yarn: ```bash yarn add --dev prettier @prettier/plugin-php -# or globally +# or globally (pending https://github.com/prettier/prettier/issues/15141) yarn global add prettier @prettier/plugin-php ``` @@ -93,10 +94,20 @@ npm: ```bash npm install --save-dev prettier @prettier/plugin-php -# or globally +# or globally (pending https://github.com/prettier/prettier/issues/15141) npm install --global prettier @prettier/plugin-php ``` +### Activate the plugin + +Create or modify your [prettier configuration file](https://prettier.io/docs/en/configuration) to activate the plugin: + +```json +{ + "plugins": ["@prettier/plugin-php"] +} +``` + ## Use ### With Node.js @@ -139,9 +150,9 @@ First, grab both standalone scripts from an npm CDN like [unpkg](https://unpkg.c Then use Prettier with PHP, just like this: ```js -prettier.format(YOUR_CODE, { +await prettier.format(YOUR_CODE, { plugins: prettierPlugins, - parser: "php" + parser: "php", }); ``` @@ -153,11 +164,11 @@ Bundlers like webpack, Rollup or browserify automatically recognize how to handl ```js import prettier from "prettier/standalone"; -import phpPlugin from "@prettier/plugin-php/standalone"; +import * as prettierPluginPhp from "@prettier/plugin-php/standalone"; -prettier.format(YOUR_CODE, { - plugins: [phpPlugin], - parser: "php" +await prettier.format(YOUR_CODE, { + plugins: [prettierPluginPhp], + parser: "php", }); ``` @@ -165,17 +176,33 @@ prettier.format(YOUR_CODE, { Prettier for PHP supports the following options. We recommend that all users set the `phpVersion` option. -| Name | Default | Description | -| ------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `phpVersion` | `"5.4"` | Allows specifying the PHP version you're using. If you're using PHP 7.1 or later, setting this option will make use of modern language features in the printed output. If you're using PHP 5.3 or lower, you'll have to set this option or Prettier will generate incompatible code. | -| `printWidth` | `80` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#print-width)) | -| `tabWidth` | `4` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tab-width)) | -| `useTabs` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tabs)) | -| `singleQuote` | `false` | If set to `"true"`, strings that use double quotes but do not rely on the features they add, will be reformatted. Example: `"foo" -> 'foo'`, `"foo $bar" -> "foo $bar"`. | -| `trailingCommaPHP` | `true` | If set to `true`, trailing commas will be added wherever possible.
If set to `false`, no trailing commas are printed. | -| `braceStyle` | `"psr-2"` | If set to `"psr-2"`, prettier will move open brace for code blocks (classes, functions and methods) onto new line.
If set to `"1tbs"`, prettier will move open brace for code blocks (classes, functions and methods) onto same line. | -| `requirePragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#require-pragma)) | -| `insertPragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#insert-pragma)) | +| Name | Default | Description | +| ------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `phpVersion` | `"auto"` \* | Allows specifying the PHP version you're using. (See Notes Below) | +| `printWidth` | `80` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#print-width)) | +| `tabWidth` | `4` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tab-width)), The default is `4` based on the `PSR-2` coding standard. | +| `useTabs` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tabs)) | +| `singleQuote` | `false` | If set to `"true"`, strings that use double quotes but do not rely on the features they add, will be reformatted. Example: `"foo" -> 'foo'`, `"foo $bar" -> "foo $bar"`. | +| `trailingCommaPHP` | `true` | If set to `true`, trailing commas will be added wherever possible.
If set to `false`, no trailing commas are printed. | +| `braceStyle` | `"per-cs"` | If set to `"per-cs"`, prettier will move open brace for code blocks (classes, functions and methods) onto new line.
If set to `"1tbs"`, prettier will move open brace for code blocks (classes, functions and methods) onto same line. | +| `requirePragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#require-pragma)) | +| `insertPragma` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#insert-pragma)) | + +### \* `phpVersion` Configuration Notes : + +The default setting `auto`, attempts to auto-detect your supported php versions from a `composer.json` with in the +current directory or any parent directory, the plugin will use a minimum supported php version from +`{"require":{"php":"..."}}` to set the phpVersion. If not found or not able to be parsed, it will default to latest +supported PHP version. + +You set the `phpVersion` to `composer` and this will only use the `composer.json` file to determine the php +version, prettier will crash if the PHP cannot be determined. + +You can also set the `phpVersion` to a specific version, such as `7.4`, `8.0`, `8.1`, `8.2`, `8.3` or `8.4`. + +**Please Note:** If the phpVersion is not set correctly for your environment, this plugin will produce code that could +be incompatible with your PHP runtime. For example, if you are using PHP 7.4, but the plugin is set to PHP 8.3, it will +produce code that uses features not available in PHP 7.4. ## Ignoring code @@ -213,13 +240,42 @@ matrix( ## Editor integration -### Atom +### Visual Studio Code -The official [prettier plugin for atom](https://github.com/prettier/prettier-atom) supports plugins. +The official [prettier plugin for vscode](https://github.com/prettier/prettier-vscode) supports plugins since Version 1.10.0. To enable it, install the extension and make sure the plugin is installed _locally_ (in your project folder). -### VScode +Visual Studio Code may not recognise the document selectors provided by this plugin, and so you can add php to your document selectors by adding the following line to `.vscode/settings.json`: -The official [prettier plugin for vscode](https://github.com/prettier/prettier-vscode) supports plugins since Version 1.10.0. To enable it, install the extension and make sure the plugin is installed _locally_ (in your project folder). After restarting VScode the plugin should work as expected. +```json + "prettier.documentSelectors": [ + "**/*.{js,jsx,ts,tsx,vue,html,css,scss,less,json,md,mdx,graphql,yaml,yml,php}" + ] +``` + +You may also need to declare php as the parser in your prettier config file: + +```json +{ + "parser": "php", + "plugins": ["@prettier/plugin-php"] +} +``` + +See (this issue)[https://github.com/prettier/plugin-php/issues/1730] for more discussion around potential VS Code solutions. + +### PhpStorm / IntelliJ / Jetbrains IDE + +- Install prettier and plugin locally `yarn add -D prettier @prettier/plugin-php` +- Open Settings (File, Settings) +- Go to Plugins Section, Select Marketplace, Search for Prettier, Install Plugin, Restart IDE +- Open Settings, Search for Prettier, select Prettier in left settings navigation +- Check prettier package has auto-detected, should be something like `myproject/node_modules/prettier` +- Update Run for Files to include .php, eg: `{**/*,*}.{js,ts,jsx,tsx,php,json,scss,vue,md}` +- Tick the On Save button, if you want your files formatting updated on file save +- Clock OK to save settings + +_Note: Just pressing save does not reformat your current file unless the file has been modified in some way, +alternatively you can use the Prettier shortcut Ctrl+Alt+Shift+P_ ### Sublime Text @@ -227,7 +283,11 @@ Sublime Text support is available through Package Control and the [JsPrettier](h ### Vim -Regarding plugin support in the official plugin vim-prettier see [this issue](https://github.com/prettier/vim-prettier/issues/119). +The official [prettier plugin for vim](https://github.com/prettier/vim-prettier) has built-in support for plugin-php since 1.0. + +### Nova + +The [Prettier⁺ Extension](https://extensions.panic.com/extensions/stonerl/stonerl.prettier/) has built-in support for plugin-php. #### ALE diff --git a/build/rollup.config.js b/build/rollup.config.mjs similarity index 50% rename from build/rollup.config.js rename to build/rollup.config.mjs index c6c483f6e..8fa108523 100644 --- a/build/rollup.config.js +++ b/build/rollup.config.mjs @@ -1,19 +1,18 @@ -import { resolve } from "path"; +import url from "url"; -import nodeResolve from "rollup-plugin-node-resolve"; -import commonjs from "rollup-plugin-commonjs"; -import alias from "rollup-plugin-alias"; -import inject from "rollup-plugin-inject"; -import replace from "rollup-plugin-replace"; -import babel from "rollup-plugin-babel"; -import json from "rollup-plugin-json"; -import { terser } from "rollup-plugin-terser"; +import nodeResolve from "@rollup/plugin-node-resolve"; +import commonjs from "@rollup/plugin-commonjs"; +import alias from "@rollup/plugin-alias"; +import inject from "@rollup/plugin-inject"; +import replace from "@rollup/plugin-replace"; +import babel from "@rollup/plugin-babel"; +import json from "@rollup/plugin-json"; +import terser from "@rollup/plugin-terser"; -const SRC_DIR = resolve(__dirname, "..", "src"); -const BUILD_DIR = resolve(__dirname, "..", "build"); +const getPath = (file) => url.fileURLToPath(new URL(file, import.meta.url)); export default { - input: resolve(SRC_DIR, "index.js"), + input: getPath("../src/index.mjs"), output: { file: "standalone.js", format: "umd", @@ -33,24 +32,25 @@ export default { }), commonjs(), alias({ - entries: [ - { find: "assert", replacement: resolve(BUILD_DIR, "shims/assert.js") }, - ], + entries: [{ find: "assert", replacement: getPath("./shims/assert.mjs") }], }), inject({ - Buffer: resolve(BUILD_DIR, "shims/buffer.js"), + Buffer: getPath("./shims/buffer.mjs"), }), replace({ + preventAssignment: true, "process.arch": JSON.stringify("x32"), }), json(), babel({ + babelHelpers: "bundled", + configFile: false, babelrc: false, plugins: [], compact: false, presets: [ [ - require.resolve("@babel/preset-env"), + "@babel/preset-env", { targets: { browsers: [">0.25%", "not ie 11", "not op_mini all"] }, modules: false, diff --git a/build/shims/assert.js b/build/shims/assert.js deleted file mode 100644 index f774c3f91..000000000 --- a/build/shims/assert.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -function assert() {} -assert.strictEqual = function () {}; -module.exports = assert; diff --git a/build/shims/assert.mjs b/build/shims/assert.mjs new file mode 100644 index 000000000..97ea2db2d --- /dev/null +++ b/build/shims/assert.mjs @@ -0,0 +1,3 @@ +const assert = new Proxy(() => {}, { get: () => assert }); + +export default assert; diff --git a/build/shims/buffer.js b/build/shims/buffer.js deleted file mode 100644 index 933f9ee31..000000000 --- a/build/shims/buffer.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -const Buffer = {}; -Buffer.isBuffer = function () { - return false; -}; -module.exports = Buffer; diff --git a/build/shims/buffer.mjs b/build/shims/buffer.mjs new file mode 100644 index 000000000..789f28c87 --- /dev/null +++ b/build/shims/buffer.mjs @@ -0,0 +1,5 @@ +const Buffer = { + isBuffer: () => false, +}; + +export default Buffer; diff --git a/docs/recipes/php-cs-fixer/README.md b/docs/recipes/php-cs-fixer/README.md index 16bf4d117..e03c2b531 100644 --- a/docs/recipes/php-cs-fixer/README.md +++ b/docs/recipes/php-cs-fixer/README.md @@ -1,31 +1,34 @@ # Prettier integration to php-cs-fixer - This recipe uses `prettier/plugin-php` as a Fixer for `php-cs-fixer`. +This recipe uses `prettier/plugin-php` as a Fixer for `php-cs-fixer`. - `prettier` will be executed at the very beginning before the other fixers are - applied, such that the `php-cs-fixer` user's configurations is respected. +`prettier` will be executed at the very beginning before the other fixers are +applied, such that the `php-cs-fixer` user's configurations is respected. ## Useful Configurations ### Priority - If you would like `prettier` to execute last, which means you prefer to use - `php-cs-fixer` to complement the current missing features of `prettier`, you - can decrease the priority value of this fixer by decreasing the value returned - by `getPriority` function to something like `-999` +If you would like `prettier` to execute last, which means you prefer to use +`php-cs-fixer` to complement the current missing features of `prettier`, you +can decrease the priority value of this fixer by decreasing the value returned +by `getPriority` function to something like `-999` ### Configure Prettier's setting - If you would like to add configuration settings for `prettier` to this Fixer, - you can modify the `exec` line in `applyFix` function. +If you would like to add configuration settings for `prettier` to this Fixer, +you can modify the `exec` line in `applyFix` function. - For example, - ```diff - - exec("yarn exec -- prettier $file"); - + exec("yarn exec -- prettier --brace-style=1tbs $file"); - ``` - will allow you to change the `braceStyle` for this fixer +For example, + +```diff + - exec("yarn exec -- prettier $file"); + + exec("yarn exec -- prettier --brace-style=1tbs $file"); +``` + +will allow you to change the `braceStyle` for this fixer ## Possible Improvement - - the configuration can be modified from `php-cs-fixer` configuration - - autoloading + +- the configuration can be modified from `php-cs-fixer` configuration +- autoloading diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 000000000..462b5f144 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,4 @@ +import type { Plugin } from "prettier"; + +declare const plugin: Plugin; +export default plugin; diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 13e030006..000000000 --- a/jest.config.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const ENABLE_COVERAGE = !!process.env.CI; - -module.exports = { - collectCoverage: ENABLE_COVERAGE, - collectCoverageFrom: [ - "/src/**/*.js", - "!/node_modules/", - "!/tests_config/", - ], - projects: [ - { - displayName: "test-node", - setupFiles: ["/tests_config/run_spec.js"], - testRegex: "jsfmt\\.spec\\.js$|__tests__/.*\\.js$", - snapshotSerializers: ["jest-snapshot-serializer-raw"], - testEnvironment: "node", - globals: { - STANDALONE: false, - }, - }, - ...(/^true$/i.test(process.env.RUN_STANDALONE_TESTS) - ? [ - { - displayName: "test-standalone", - setupFiles: ["/tests_config/run_spec.js"], - testRegex: "jsfmt\\.spec\\.js$|__tests__/.*\\.js$", - snapshotSerializers: ["jest-snapshot-serializer-raw"], - testEnvironment: "jsdom", - globals: { - STANDALONE: true, - }, - }, - ] - : []), - { - runner: "jest-runner-eslint", - displayName: "lint", - testMatch: ["/**/*.js"], - testPathIgnorePatterns: [ - "/node_modules/", - "/coverage/", - ], - }, - ], -}; diff --git a/jest.config.mjs b/jest.config.mjs new file mode 100644 index 000000000..0170dafb7 --- /dev/null +++ b/jest.config.mjs @@ -0,0 +1,25 @@ +const RUN_STANDALONE_TESTS = Boolean(process.env.RUN_STANDALONE_TESTS); +// Can't work on `jest-light-runner` +// const ENABLE_COVERAGE = +// !RUN_STANDALONE_TESTS && Boolean(process.env.ENABLE_COVERAGE); + +export default { + // collectCoverage: ENABLE_COVERAGE, + collectCoverageFrom: [ + "/src/**/*.mjs", + "!/node_modules/", + "!/tests_config/", + ], + runner: "jest-light-runner", + transform: {}, + setupFiles: ["/tests_config/run_spec.mjs"], + // Matches `.js` file to prevent files use `.js` extension by mistake, https://github.com/prettier/plugin-php/pull/2247#discussion_r1331847801 + testRegex: ".*\\.spec\\.m?js$", + snapshotSerializers: ["jest-snapshot-serializer-raw"], + globals: { + STANDALONE: RUN_STANDALONE_TESTS, + }, + ...(RUN_STANDALONE_TESTS + ? { displayName: "test-standalone", testEnvironment: "jsdom" } + : { displayName: "test-node", testEnvironment: "node" }), +}; diff --git a/package.json b/package.json index 6187e2ac7..bb2c4c42e 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,86 @@ { "name": "@prettier/plugin-php", - "version": "0.17.1", + "version": "0.24.0", "description": "Prettier PHP Plugin", "repository": "prettier/prettier-php", "author": "Lucas Azzola <@azz>", "license": "MIT", - "main": "src", + "unpkg": "./standalone.js", + "browser": "./standalone.js", + "types": "./index.d.ts", + "exports": { + ".": { + "types": "./index.d.ts", + "browser": "./standalone.js", + "default": "./src/index.mjs" + }, + "./standalone": { + "types": "./index.d.ts", + "default": "./standalone.js" + }, + "./package.json": "./package.json" + }, "files": [ "src", - "standalone.js" + "standalone.js", + "index.d.ts" ], "dependencies": { - "linguist-languages": "^7.5.1", - "mem": "^8.0.0", - "php-parser": "https://github.com/glayzzle/php-parser#bb89fff9e636a991aa3ac931d5f8a66a365fccce" + "linguist-languages": "^8.0.0", + "php-parser": "^3.2.5" }, "devDependencies": { - "@babel/preset-env": "^7.7.5", - "codecov": "3.8.2", + "@babel/preset-env": "^7.27.2", + "@rollup/plugin-alias": "^5.1.0", + "@rollup/plugin-babel": "^6.0.3", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-inject": "^5.0.5", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-terser": "^0.4.3", + "c8": "^10.1.3", "cross-env": "^7.0.2", - "eslint": "7.28.0", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-import": "2.23.4", - "eslint-plugin-jest": "24.3.6", - "eslint-plugin-prettier": "3.4.0", - "jest": "26.6.3", - "jest-runner-eslint": "0.10.0", - "jest-snapshot-serializer-raw": "^1.1.0", - "prettier": "^2.0.0", - "rollup": "^2.7.5", - "rollup-plugin-alias": "^2.0.0", - "rollup-plugin-babel": "^4.3.2", - "rollup-plugin-commonjs": "^10.0.2", - "rollup-plugin-inject": "^3.0.1", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-replace": "^2.1.0", - "rollup-plugin-terser": "^7.0.2", - "strip-ansi": "^6.0.0", - "yarpm": "^1.1.1" + "eslint": "8.57.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-jest": "27.6.3", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-prettier-doc": "^1.1.0", + "jest": "30.0.3", + "jest-environment-jsdom": "30.0.2", + "jest-light-runner": "^0.7.9", + "jest-snapshot-serializer-raw": "^2.0.0", + "prettier": "^3.6.1", + "rollup": "^3.28.1", + "strip-ansi": "^7.1.0" }, "peerDependencies": { - "prettier": "^1.15.0 || ^2.0.0" + "prettier": "^3.0.0" }, "scripts": { - "test": "jest", - "prepublishOnly": "yarpm run build-standalone && cross-env RUN_STANDALONE_TESTS=true yarpm test", - "prettier": "prettier --plugin=. --parser=php", - "build-standalone": "rollup -c build/rollup.config.js", + "lint": "yarn lint:eslint && yarn lint:prettier", + "lint:eslint": "eslint .", + "lint:prettier": "prettier . --check", + "fix": "yarn fix:eslint && yarn fix:prettier", + "fix:eslint": "eslint . --fix", + "fix:prettier": "prettier . --write", + "test": "yarn test:node && yarn test:standalone", + "test:node": "jest", + "test:standalone": "yarn run build && cross-env RUN_STANDALONE_TESTS=true yarn jest", + "prepublishOnly": "yarn test", + "prettier": "prettier --plugin=src/index.mjs --parser=php", + "build": "rollup --config build/rollup.config.mjs", "debug": "node --inspect-brk node_modules/.bin/jest --runInBand" }, - "jest": { - "projects": [ - "/jest.*.config.js" + "c8": { + "reporter": [ + "lcov", + "text" + ], + "all": true, + "include": [ + "src/**" ] } } diff --git a/src/clean.js b/src/clean.mjs similarity index 79% rename from src/clean.js rename to src/clean.mjs index 151f5685b..3622417ca 100644 --- a/src/clean.js +++ b/src/clean.mjs @@ -1,6 +1,21 @@ -"use strict"; - -const util = require("./util"); +import { printNumber, normalizeMagicMethodName } from "./util.mjs"; + +const ignoredProperties = new Set([ + "loc", + "range", + "raw", + "comments", + "leadingComments", + "trailingComments", + "parenthesizedExpression", + "parent", + "prev", + "start", + "end", + "tokens", + "errors", + "extra", +]); /** * This function takes the existing ast node and a copy, by reference @@ -9,28 +24,9 @@ const util = require("./util"); * changed by the printer, etc.) */ function clean(node, newObj) { - [ - "loc", - "range", - "raw", - "comments", - "leadingComments", - "trailingComments", - "parenthesizedExpression", - "parent", - "prev", - "start", - "end", - "tokens", - "errors", - "extra", - ].forEach((name) => { - delete newObj[name]; - }); - if (node.kind === "string") { // TODO if options are available in this method, replace with - // newObj.isDoubleQuote = !util.useSingleQuote(node, options); + // newObj.isDoubleQuote = !useSingleQuote(node, options); delete newObj.isDoubleQuote; } @@ -44,7 +40,7 @@ function clean(node, newObj) { return null; } - newObj.value = newObj.value.replace(/\r\n?|\n/g, ""); + newObj.value = newObj.value.replace(/\n/g, ""); } // continue ((2)); -> continue 2; @@ -68,7 +64,7 @@ function clean(node, newObj) { // Normalize numbers if (node.kind === "number") { - newObj.value = util.printNumber(node.value); + newObj.value = printNumber(node.value); } const statements = ["foreach", "for", "if", "while", "do"]; @@ -102,7 +98,7 @@ function clean(node, newObj) { } if (node.kind === "method" && node.name.kind === "identifier") { - newObj.name.name = util.normalizeMagicMethodName(newObj.name.name); + newObj.name.name = normalizeMagicMethodName(newObj.name.name); } if (node.kind === "noop") { @@ -110,4 +106,6 @@ function clean(node, newObj) { } } -module.exports = clean; +clean.ignoredProperties = ignoredProperties; + +export default clean; diff --git a/src/comments.js b/src/comments.mjs similarity index 86% rename from src/comments.js rename to src/comments.mjs index cfc90b3fb..828fc0162 100644 --- a/src/comments.js +++ b/src/comments.mjs @@ -1,4 +1,6 @@ -"use strict"; +import { util as prettierUtil, doc } from "prettier"; +import { isLookupNode } from "./util.mjs"; +import { locStart, locEnd } from "./loc.mjs"; const { addLeadingComment, @@ -7,22 +9,12 @@ const { skipNewline, hasNewline, hasNewlineInRange, -} = require("prettier").util; -const { - concat, - join, - indent, - hardline, - cursor, - lineSuffix, - breakParent, -} = require("prettier").doc.builders; -const { getNextNonSpaceNonCommentCharacterIndex, isNextLineEmpty, isPreviousLineEmpty, - isLookupNode, -} = require("./util"); +} = prettierUtil; +const { join, indent, hardline, cursor, lineSuffix, breakParent } = + doc.builders; /* Comment functions are meant to inspect various edge cases using given comment nodes, @@ -281,13 +273,12 @@ function handleLastFunctionArgComments( precedingNode, enclosingNode, followingNode, - comment, - options + comment + /* options */ ) { const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); const nextCharacter = text.charAt(nextCharIndex); @@ -336,8 +327,8 @@ function handleIfStatementComments( precedingNode, enclosingNode, followingNode, - comment, - options + comment + /* options */ ) { if (!enclosingNode || enclosingNode.kind !== "if" || !followingNode) { return false; @@ -345,8 +336,7 @@ function handleIfStatementComments( const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); const nextCharacter = text.charAt(nextCharIndex); @@ -387,16 +377,12 @@ function handleRetifComments( precedingNode, followingNode, comment, - text, - options + text + /* options */ ) { const isSameLineAsPrecedingNode = precedingNode && - !hasNewlineInRange( - text, - options.locEnd(precedingNode), - options.locStart(comment) - ); + !hasNewlineInRange(text, locEnd(precedingNode), locStart(comment)); if ( (!precedingNode || !isSameLineAsPrecedingNode) && @@ -452,6 +438,10 @@ function handleClassComments(enclosingNode, followingNode, comment) { enclosingNode && ["class", "interface", "trait"].includes(enclosingNode.kind) ) { + if (enclosingNode.__parent_new_arguments?.includes(followingNode)) { + return false; + } + // for extends nodes that have leading comments, we can store them as // dangling comments so we can handle them in the printer @@ -510,7 +500,13 @@ function handleClassComments(enclosingNode, followingNode, comment) { return false; } -function handleFunction(text, enclosingNode, followingNode, comment, options) { +function handleFunction( + text, + enclosingNode, + followingNode, + comment + /* options */ +) { if ( enclosingNode && (enclosingNode.kind === "function" || enclosingNode.kind === "method") @@ -521,18 +517,17 @@ function handleFunction(text, enclosingNode, followingNode, comment, options) { let argumentsLocEnd = 0; for (let i = 0; i < enclosingNode.arguments.length; i++) { argumentsLocEnd = - options.locEnd(enclosingNode.arguments[i]) > argumentsLocEnd - ? options.locEnd(enclosingNode.arguments[i]) + locEnd(enclosingNode.arguments[i]) > argumentsLocEnd + ? locEnd(enclosingNode.arguments[i]) : argumentsLocEnd; } const commentIsBetweenArgumentsAndBody = enclosingNode.body && - options.locStart(comment) > argumentsLocEnd && - options.locEnd(comment) < options.locStart(enclosingNode.body); + locStart(comment) > argumentsLocEnd && + locEnd(comment) < locStart(enclosingNode.body); const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); // we additionally need to check if this isn't a trailing argument comment, // by checking the next character isn't ")" @@ -541,7 +536,7 @@ function handleFunction(text, enclosingNode, followingNode, comment, options) { commentIsBetweenArgumentsAndBody && text.charAt(nextCharIndex) !== ")" ) { - if (options.locEnd(comment) < options.locStart(enclosingNode.type)) { + if (locEnd(comment) < locStart(enclosingNode.type)) { // we need to store this as a dangling comment in case the type is nullable // ie function(): ?string {} - the "nullable" attribute is part of the // function node, not the type. @@ -612,11 +607,15 @@ function handleHalt(precedingNode, enclosingNode, followingNode, comment) { return false; } -function handleCommentInEmptyParens(text, enclosingNode, comment, options) { +function handleCommentInEmptyParens( + text, + enclosingNode, + comment + /* options */ +) { const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); if (text.charAt(nextCharIndex) !== ")") { @@ -793,8 +792,8 @@ function handleWhileComments( precedingNode, enclosingNode, followingNode, - comment, - options + comment + /* options */ ) { if (!enclosingNode || enclosingNode.kind !== "while" || !followingNode) { return false; @@ -807,8 +806,7 @@ function handleWhileComments( const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); const nextCharacter = text.charAt(nextCharIndex); @@ -825,14 +823,14 @@ function handleWhileComments( return false; } -// https://github.com/prettier/prettier/blob/master/src/main/comments.js#L335 -function printComment(commentPath, options) { - const comment = commentPath.getValue(); +// https://github.com/prettier/prettier/blob/c01661f311a2e1e033f1f9cb127882cc13e293bd/src/main/comments/print.js#L23 +function printComment(path, options) { + const comment = path.node; comment.printed = true; - return options.printer.printComment(commentPath, options); + return options.printer.printComment(path, options); } -// https://github.com/prettier/prettier/blob/master/src/main/comments.js#L440 +// https://github.com/prettier/prettier/blob/6bff776efd0951b7812818d02d1cae3fda184737/src/main/comments/print.js#L119 function printDanglingComments(path, options, sameIndent, filter) { const parts = []; const node = path.getValue(); @@ -841,15 +839,15 @@ function printDanglingComments(path, options, sameIndent, filter) { return ""; } - path.each((commentPath) => { - const comment = commentPath.getValue(); + path.each(() => { + const comment = path.node; if ( comment && !comment.leading && !comment.trailing && (!filter || filter(comment)) ) { - parts.push(printComment(commentPath, options)); + parts.push(printComment(path, options)); } }, "comments"); @@ -860,7 +858,7 @@ function printDanglingComments(path, options, sameIndent, filter) { if (sameIndent) { return join(hardline, parts); } - return indent(concat([hardline, join(hardline, parts)])); + return indent([hardline, join(hardline, parts)]); } function hasLeadingComment(node) { @@ -871,11 +869,11 @@ function hasTrailingComment(node) { return node.comments && node.comments.some((comment) => comment.trailing); } -function hasLeadingOwnLineComment(text, node, options) { +function hasLeadingOwnLineComment(text, node) { return ( node.comments && node.comments.some( - (comment) => comment.leading && hasNewline(text, options.locEnd(comment)) + (comment) => comment.leading && hasNewline(text, locEnd(comment)) ) ); } @@ -890,13 +888,13 @@ function printComments(comments, options) { parts.push(hardline); } if ( - isNextLineEmpty(options.originalText, comment, options) && + isNextLineEmpty(options.originalText, locEnd(comment)) && !isLastComment ) { parts.push(hardline); } }); - return concat(parts); + return parts; } function isBlockComment(comment) { @@ -904,27 +902,11 @@ function isBlockComment(comment) { } function getCommentChildNodes(node) { - if (typeof node !== "object") { - return []; + if (node.kind === "new" && node.what.kind === "class") { + // Pretend to be child of `class` + node.what.__parent_new_arguments = [...node.arguments]; + return [node.what]; } - - const getChildNodes = (node) => - Object.keys(node) - .filter( - (n) => - n !== "kind" && - n !== "loc" && - n !== "errors" && - n !== "extra" && - n !== "comments" && - n !== "leadingComments" && - n !== "enclosingNode" && - n !== "precedingNode" && - n !== "followingNode" - ) - .map((n) => node[n]); - - return getChildNodes(node); } function canAttachComment(node) { @@ -936,49 +918,49 @@ function canAttachComment(node) { // Based on https://github.com/prettier/prettier/blob/master/src/main/comments.js // TODO remove after https://github.com/prettier/prettier/issues/5087 function prependCursorPlaceholder(path, options, printed) { - if (path.getNode() === options.cursorNode && path.getValue()) { - return concat([cursor, printed, cursor]); + const { node } = path; + if (node && node === options.cursorNode) { + return [cursor, printed, cursor]; } return printed; } -function printLeadingComment(commentPath, print, options) { - const comment = commentPath.getValue(); - const contents = printComment(commentPath, options); +function printLeadingComment(path, print, options) { + const contents = printComment(path, options); if (!contents) { return ""; } + const comment = path.node; const isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); // Leading block comments should see if they need to stay on the // same line or not. if (isBlock) { - return concat([ + return [ contents, - hasNewline(options.originalText, options.locEnd(comment)) - ? hardline - : " ", - ]); + hasNewline(options.originalText, locEnd(comment)) ? hardline : " ", + ]; } - return concat([contents, hardline]); + return [contents, hardline]; } -function printTrailingComment(commentPath, print, options) { - const comment = commentPath.getValue(); - const contents = printComment(commentPath, options); +function printTrailingComment(path, print, options) { + const contents = printComment(path, options); if (!contents) { return ""; } + + const comment = path.node; const isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); if ( - hasNewline(options.originalText, options.locStart(comment), { + hasNewline(options.originalText, locStart(comment), { backwards: true, }) ) { @@ -996,28 +978,22 @@ function printTrailingComment(commentPath, print, options) { const isLineBeforeEmpty = isPreviousLineEmpty( options.originalText, - comment, - options + locStart(comment) ); - return lineSuffix( - concat([hardline, isLineBeforeEmpty ? hardline : "", contents]) - ); + return lineSuffix([hardline, isLineBeforeEmpty ? hardline : "", contents]); } else if (isBlock) { // Trailing block comments never need a newline - return concat([" ", contents]); + return [" ", contents]; } - return concat([ - lineSuffix(concat([" ", contents])), - !isBlock ? breakParent : "", - ]); + return [lineSuffix([" ", contents]), !isBlock ? breakParent : ""]; } function printAllComments(path, print, options, needsSemi) { - const value = path.getValue(); + const { node } = path; const printed = print(path); - const comments = value && value.comments; + const comments = node && node.comments; if (!comments || comments.length === 0) { return prependCursorPlaceholder(path, options, printed); @@ -1026,34 +1002,33 @@ function printAllComments(path, print, options, needsSemi) { const leadingParts = []; const trailingParts = [needsSemi ? ";" : "", printed]; - path.each((commentPath) => { - const comment = commentPath.getValue(); + path.each(({ node: comment }) => { const { leading, trailing } = comment; if (leading) { - const contents = printLeadingComment(commentPath, print, options); + const contents = printLeadingComment(path, print, options); if (!contents) { return; } leadingParts.push(contents); const text = options.originalText; - if (hasNewline(text, skipNewline(text, options.locEnd(comment)))) { + if (hasNewline(text, skipNewline(text, locEnd(comment)))) { leadingParts.push(hardline); } } else if (trailing) { - trailingParts.push(printTrailingComment(commentPath, print, options)); + trailingParts.push(printTrailingComment(path, print, options)); } }, "comments"); return prependCursorPlaceholder( path, options, - concat(leadingParts.concat(trailingParts)) + leadingParts.concat(trailingParts) ); } -module.exports = { +export { handleOwnLineComment, handleEndOfLineComment, handleRemainingComment, diff --git a/src/index.js b/src/index.mjs similarity index 50% rename from src/index.js rename to src/index.mjs index 527fbcedc..6a35c034d 100644 --- a/src/index.js +++ b/src/index.mjs @@ -1,12 +1,22 @@ -"use strict"; +import { doc } from "prettier"; +import LINGUIST_LANGUAGES_PHP from "linguist-languages/data/PHP"; +import LINGUIST_LANGUAGES_HTML_PHP from "linguist-languages/data/HTML_2b_PHP"; +import parse from "./parser.mjs"; +import print from "./printer.mjs"; +import clean from "./clean.mjs"; +import options from "./options.mjs"; +import { + handleOwnLineComment, + handleEndOfLineComment, + handleRemainingComment, + getCommentChildNodes, + canAttachComment, + isBlockComment, +} from "./comments.mjs"; +import { hasPragma, insertPragma } from "./pragma.mjs"; +import { locStart, locEnd } from "./loc.mjs"; -const parse = require("./parser"); -const print = require("./printer"); -const clean = require("./clean"); -const options = require("./options"); -const comments = require("./comments"); -const { join, hardline } = require("prettier").doc.builders; -const { hasPragma, insertPragma } = require("./pragma"); +const { join, hardline } = doc.builders; function createLanguage(linguistData, { extend, override }) { const language = {}; @@ -30,13 +40,13 @@ function createLanguage(linguistData, { extend, override }) { } const languages = [ - createLanguage(require("linguist-languages/data/PHP"), { + createLanguage(LINGUIST_LANGUAGES_PHP, { override: { parsers: ["php"], vscodeLanguageIds: ["php"], }, }), - createLanguage(require("linguist-languages/data/HTML+PHP"), { + createLanguage(LINGUIST_LANGUAGES_HTML_PHP, { override: { parsers: ["php"], vscodeLanguageIds: ["php"], @@ -44,40 +54,54 @@ const languages = [ }), ]; -const loc = (prop) => (node) => { - return node.loc && node.loc[prop] && node.loc[prop].offset; -}; - const parsers = { php: { parse, astFormat: "php", - locStart: loc("start"), - locEnd: loc("end"), + locStart, + locEnd, hasPragma, }, }; +const ignoredKeys = new Set([ + "kind", + "loc", + "errors", + "extra", + "comments", + "leadingComments", + "enclosingNode", + "precedingNode", + "followingNode", +]); +function getVisitorKeys(node, nonTraversableKeys) { + return Object.keys(node).filter( + (key) => !nonTraversableKeys.has(key) && !ignoredKeys.has(key) + ); +} + const printers = { php: { print, + getVisitorKeys, insertPragma, massageAstNode: clean, - getCommentChildNodes: comments.getCommentChildNodes, - canAttachComment: comments.canAttachComment, - isBlockComment: comments.isBlockComment, + getCommentChildNodes, + canAttachComment, + isBlockComment, handleComments: { - ownLine: comments.handleOwnLineComment, - endOfLine: comments.handleEndOfLineComment, - remaining: comments.handleRemainingComment, + ownLine: handleOwnLineComment, + endOfLine: handleEndOfLineComment, + remaining: handleRemainingComment, }, willPrintOwnComments(path) { - const node = path.getValue(); + const { node } = path; return node && node.kind === "noop"; }, - printComment(commentPath) { - const comment = commentPath.getValue(); + printComment(path) { + const comment = path.node; switch (comment.kind) { case "commentblock": { @@ -86,7 +110,7 @@ const printers = { return comment.value; } - const lines = comment.value.split(/\r?\n/g); + const lines = comment.value.split("\n"); // if this is a block comment, handle indentation if ( lines @@ -109,33 +133,41 @@ const printers = { case "commentline": { return comment.value.trimRight(); } - /* istanbul ignore next */ + /* c8 ignore next 2 */ default: throw new Error(`Not a comment: ${JSON.stringify(comment)}`); } }, hasPrettierIgnore(path) { - const node = path.getNode(); const isSimpleIgnore = (comment) => comment.value.includes("prettier-ignore") && !comment.value.includes("prettier-ignore-start") && !comment.value.includes("prettier-ignore-end"); + + const { node, parent: parentNode } = path; + return ( - node && - node.comments && - node.comments.length > 0 && - node.comments.some(isSimpleIgnore) + (node && + node.kind !== "classconstant" && + node.comments && + node.comments.length > 0 && + node.comments.some(isSimpleIgnore)) || + // For proper formatting, the classconstant ignore formatting should + // run on the "constant" child + (node && + node.kind === "constant" && + parentNode && + parentNode.kind === "classconstant" && + parentNode.comments && + parentNode.comments.length > 0 && + parentNode.comments.some(isSimpleIgnore)) ); }, }, }; -module.exports = { - languages, - printers, - parsers, - options, - defaultOptions: { - tabWidth: 4, - }, +const defaultOptions = { + tabWidth: 4, }; + +export { languages, printers, parsers, options, defaultOptions }; diff --git a/src/loc.mjs b/src/loc.mjs new file mode 100644 index 000000000..c52168aa1 --- /dev/null +++ b/src/loc.mjs @@ -0,0 +1,4 @@ +const loc = (prop) => (node) => node.loc?.[prop]?.offset; + +export const locStart = loc("start"); +export const locEnd = loc("end"); diff --git a/src/module.js b/src/module.js deleted file mode 100644 index 0056da533..000000000 --- a/src/module.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -module.exports = require("./index"); diff --git a/src/needs-parens.js b/src/needs-parens.mjs similarity index 81% rename from src/needs-parens.js rename to src/needs-parens.mjs index a3297f725..c234c8da7 100644 --- a/src/needs-parens.js +++ b/src/needs-parens.mjs @@ -1,18 +1,13 @@ -"use strict"; +import { getPrecedence, shouldFlatten, isBitwiseOperator } from "./util.mjs"; -const assert = require("assert"); - -const { getPrecedence, shouldFlatten, isBitwiseOperator } = require("./util"); - -function needsParens(path) { - const parent = path.getParentNode(); +function needsParens(path, options) { + const { parent } = path; if (!parent) { return false; } - const name = path.getName(); - const node = path.getNode(); + const { key, node } = path; if ( [ @@ -52,12 +47,13 @@ function needsParens(path) { (node.type === "+" || node.type === "-") ); case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": case "call": - return name === "what" && parent.what === node; + return key === "what"; case "bin": - return parent.type === "**" && name === "left"; + return parent.type === "**" && key === "left"; default: return false; } @@ -76,9 +72,10 @@ function needsParens(path) { return true; case "call": case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": - return name === "what" && parent.what === node; + return key === "what"; case "bin": { const po = parent.type; const pp = getPrecedence(po); @@ -93,9 +90,7 @@ function needsParens(path) { return true; } - if (pp === np && name === "right") { - assert.strictEqual(parent.right, node); - + if (pp === np && key === "right") { return true; } @@ -121,14 +116,11 @@ function needsParens(path) { } } case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": { switch (parent.kind) { case "call": - return ( - name === "what" && - parent.what === node && - node.parenthesizedExpression - ); + return key === "what" && node.parenthesizedExpression; default: return false; @@ -136,12 +128,16 @@ function needsParens(path) { } case "clone": case "new": { + const requiresParens = + node.kind === "clone" || + (node.kind === "new" && options.phpVersion < 8.4); switch (parent.kind) { case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": case "call": - return name === "what" && parent.what === node; + return key === "what" && requiresParens; default: return false; } @@ -149,13 +145,14 @@ function needsParens(path) { case "yield": { switch (parent.kind) { case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": case "call": - return name === "what" && parent.what === node; + return key === "what"; case "retif": - return parent.test === node; + return key === "test"; default: return !!(node.key || node.value); @@ -190,16 +187,17 @@ function needsParens(path) { case "unary": case "bin": case "retif": - if (name === "test" && !parent.trueExpr) { + if (key === "test" && !parent.trueExpr) { return false; } return true; case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": case "call": - return name === "what" && parent.what === node; + return key === "what"; default: return false; @@ -207,10 +205,11 @@ function needsParens(path) { case "closure": switch (parent.kind) { case "call": - return name === "what" && parent.what === node; + return key === "what"; // https://github.com/prettier/plugin-php/issues/1675 case "propertylookup": + case "nullsafepropertylookup": return true; default: @@ -225,6 +224,7 @@ function needsParens(path) { case "array": switch (parent.kind) { case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": case "call": @@ -235,7 +235,7 @@ function needsParens(path) { return false; } - return name === "what" && parent.what === node; + return key === "what"; default: return false; } @@ -247,4 +247,4 @@ function needsParens(path) { return false; } -module.exports = needsParens; +export default needsParens; diff --git a/src/options.js b/src/options.js deleted file mode 100644 index 224398ff1..000000000 --- a/src/options.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -const CATEGORY_PHP = "PHP"; - -module.exports = { - phpVersion: { - since: "0.13.0", - category: CATEGORY_PHP, - type: "choice", - default: "7.0", - description: "Minimum target PHP version.", - choices: [ - { value: "5.0" }, - { value: "5.1" }, - { value: "5.2" }, - { value: "5.3" }, - { value: "5.4" }, - { value: "5.5" }, - { value: "5.6" }, - { value: "7.0" }, - { value: "7.1" }, - { value: "7.2" }, - { value: "7.3" }, - { value: "7.4" }, - { value: "8.0" }, - ], - }, - trailingCommaPHP: { - since: "0.0.0", - category: CATEGORY_PHP, - type: "boolean", - default: true, - description: "Print trailing commas wherever possible when multi-line.", - }, - braceStyle: { - since: "0.10.0", - category: CATEGORY_PHP, - type: "choice", - default: "psr-2", - description: - "Print one space or newline for code blocks (classes and functions).", - choices: [ - { value: "psr-2", description: "Use PSR-2 brace style." }, - { value: "1tbs", description: "Use 1tbs brace style." }, - ], - }, -}; diff --git a/src/options.mjs b/src/options.mjs new file mode 100644 index 000000000..e7444d804 --- /dev/null +++ b/src/options.mjs @@ -0,0 +1,151 @@ +import fs from "fs"; +import path from "path"; + +const CATEGORY_PHP = "PHP"; + +// prettier-ignore +const SUPPORTED_PHP_VERSIONS = [ + 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, + 7.0, 7.1, 7.2, 7.3, 7.4, + 8.0, 8.1, 8.2, 8.3, 8.4, +]; + +export const LATEST_SUPPORTED_PHP_VERSION = Math.max(...SUPPORTED_PHP_VERSIONS); + +let getComposerError = ""; + +/** + * Detect the minimum PHP version from the composer.json file + * @return {number|null} The PHP version to use in the composer.json file, null when not found + */ +function getComposerPhpVersion() { + // Try to find composer.json + const currentDir = process.cwd(); + let composerPath = null; + + const directComposerPath = path.join(currentDir, "composer.json"); + if (fs.existsSync(directComposerPath)) { + composerPath = directComposerPath; + } + + if (!composerPath) { + let searchDir = path.dirname(currentDir); + while (searchDir !== path.parse(searchDir).root) { + const potentialComposerPath = path.join(searchDir, "composer.json"); + if (fs.existsSync(potentialComposerPath)) { + composerPath = potentialComposerPath; + break; + } + searchDir = path.dirname(searchDir); + } + } + + if (composerPath) { + try { + const fileContent = fs.readFileSync(composerPath, "utf8"); + const composerJson = JSON.parse(fileContent); + + if (composerJson.require && composerJson.require.php) { + // Check for a wildcard pattern like "7.*" + const wildcardMatch = composerJson.require.php.match( + /^(?:[^0-9]*)?([0-9]+)\.\*/ + ); + if (wildcardMatch) { + return parseFloat(`${wildcardMatch[1]}.0`); + } + + // Extract version from composer semver format + const versionMatch = composerJson.require.php.match( + /^(?:[^0-9]*)?([0-9]+)\.([0-9]+)/ + ); + + if (versionMatch) { + return parseFloat(`${versionMatch[1]}.${versionMatch[2]}`); + } else { + getComposerError = `Could not decode PHP version (${composerJson.require.php}})`; + return null; + } + } + } catch (e) { + getComposerError = `Error reading composer.json: ${e.message}`; + } + } else { + getComposerError = "Could not find composer.json"; + } + + return null; +} + +export { getComposerPhpVersion }; + +/** + * Resolve the PHP version to a number based on the provided options. + * + */ +export function resolvePhpVersion(options) { + if (!options) { + return; + } + if (options.phpVersion === "auto") { + options.phpVersion = + getComposerPhpVersion() ?? LATEST_SUPPORTED_PHP_VERSION; + } else if (options.phpVersion === "composer") { + const v = getComposerPhpVersion(); + if (v === null) { + throw new Error( + `Could not determine PHP version from composer; ${getComposerError}` + ); + } + options.phpVersion = v; + } else { + options.phpVersion = parseFloat(options.phpVersion); + } +} + +export default { + phpVersion: { + since: "0.13.0", + category: CATEGORY_PHP, + type: "choice", + default: "auto", + description: "Minimum target PHP version.", + choices: [ + ...SUPPORTED_PHP_VERSIONS.map((v) => ({ value: v.toFixed(1) })), + { + value: "composer", + description: "Use the PHP version defined in composer.json", + }, + { + value: "auto", + description: `Try composer.json, else latest PHP Version (${LATEST_SUPPORTED_PHP_VERSION})`, + }, + ], + }, + trailingCommaPHP: { + since: "0.0.0", + category: CATEGORY_PHP, + type: "boolean", + default: true, + description: "Print trailing commas wherever possible when multi-line.", + }, + braceStyle: { + since: "0.10.0", + category: CATEGORY_PHP, + type: "choice", + default: "per-cs", + description: + "Print one space or newline for code blocks (classes and functions).", + choices: [ + { value: "psr-2", description: "(deprecated) Use per-cs" }, + { value: "per-cs", description: "Use the PER Coding Style brace style." }, + { value: "1tbs", description: "Use 1tbs brace style." }, + ], + }, + singleQuote: { + since: "0.0.0", + category: CATEGORY_PHP, + type: "boolean", + default: false, + description: "Use single quotes instead of double quotes.", + }, +}; diff --git a/src/parser.js b/src/parser.mjs similarity index 78% rename from src/parser.js rename to src/parser.mjs index 79df304c7..8df49870d 100644 --- a/src/parser.js +++ b/src/parser.mjs @@ -1,20 +1,23 @@ -"use strict"; -const engine = require("php-parser"); +import engine from "php-parser"; +import { LATEST_SUPPORTED_PHP_VERSION } from "./options.mjs"; +import { resolvePhpVersion } from "./options.mjs"; -function parse(text, parsers, opts) { +function parse(text, opts) { const inMarkdown = opts && opts.parentParser === "markdown"; if (!text && inMarkdown) { return ""; } + resolvePhpVersion(opts); // Todo https://github.com/glayzzle/php-parser/issues/170 - text = text.replace(/\?>\r?\n<\?/g, "?>\n___PSEUDO_INLINE_PLACEHOLDER___\n<\?/g, "?>\n___PSEUDO_INLINE_PLACEHOLDER___ { - if (comment.value[comment.value.length - 1] === "\r") { - comment.value = comment.value.slice(0, -1); - comment.loc.end.offset = comment.loc.end.offset - 1; - } if (comment.value[comment.value.length - 1] === "\n") { comment.value = comment.value.slice(0, -1); comment.loc.end.offset = comment.loc.end.offset - 1; @@ -65,4 +64,4 @@ function parse(text, parsers, opts) { return ast; } -module.exports = parse; +export default parse; diff --git a/src/pragma.js b/src/pragma.mjs similarity index 82% rename from src/pragma.js rename to src/pragma.mjs index 8ba1aaff0..976baa7d9 100644 --- a/src/pragma.js +++ b/src/pragma.mjs @@ -1,7 +1,5 @@ -"use strict"; - -const parse = require("./parser"); -const memoize = require("mem"); +import { memoize } from "./util.mjs"; +import parse from "./parser.mjs"; const reHasPragma = /@prettier|@format/; @@ -22,16 +20,6 @@ const getPageLevelDocBlock = memoize((text) => { } }); -function guessLineEnding(text) { - const index = text.indexOf("\n"); - - if (index >= 0 && text.charAt(index - 1) === "\r") { - return "\r\n"; - } - - return "\n"; -} - function hasPragma(text) { // fast path optimization - check if the pragma shows up in the file at all if (!reHasPragma.test(text)) { @@ -49,8 +37,8 @@ function hasPragma(text) { return false; } -function injectPragma(docblock, text) { - let lines = docblock.split(/\r?\n/g); +function injectPragma(docblock) { + let lines = docblock.split("\n"); if (lines.length === 1) { // normalize to multiline for simplicity @@ -66,7 +54,7 @@ function injectPragma(docblock, text) { // not found => index == -1, which conveniently will splice 1 from the end. lines.splice(pragmaIndex, 0, " * @format"); - return lines.join(guessLineEnding(text)); + return lines.join("\n"); } function insertPragma(text) { @@ -101,7 +89,4 @@ function insertPragma(text) { ${after}`; } -module.exports = { - hasPragma, - insertPragma, -}; +export { hasPragma, insertPragma }; diff --git a/src/printer.js b/src/printer.mjs similarity index 61% rename from src/printer.js rename to src/printer.mjs index 485d782ee..c3cf11cd0 100644 --- a/src/printer.js +++ b/src/printer.mjs @@ -1,43 +1,25 @@ -"use strict"; - -const { - breakParent, - concat, - join, - line, - lineSuffix, - group, - conditionalGroup, - indent, - dedent, - ifBreak, - hardline, - softline, - literalline, - align, - dedentToRoot, -} = require("prettier").doc.builders; -const { willBreak } = require("prettier").doc.utils; -const { - isNextLineEmptyAfterIndex, - hasNewline, - hasNewlineInRange, -} = require("prettier").util; -const comments = require("./comments"); -const pathNeedsParens = require("./needs-parens"); - -const { +import { util as prettierUtil, doc } from "prettier"; +import { + printAllComments, + hasTrailingComment, + hasLeadingComment, + printDanglingComments, + printComments, + isBlockComment, + hasLeadingOwnLineComment, +} from "./comments.mjs"; +import pathNeedsParens from "./needs-parens.mjs"; +import { locStart, locEnd } from "./loc.mjs"; + +import { getLast, getPenultimate, - isLastStatement, lineShouldEndWithSemicolon, printNumber, shouldFlatten, maybeStripLeadingSlashFromUse, fileShouldEndWithHardline, hasDanglingComments, - hasLeadingComment, - hasTrailingComment, docShouldHaveTrailingNewline, isLookupNode, isFirstChildrenInlineNode, @@ -53,22 +35,49 @@ const { isDocNode, getAncestorNode, isReferenceLikeNode, - getNextNode, normalizeMagicMethodName, + isSimpleCallArgument, +} from "./util.mjs"; + +const { + breakParent, + join, + line, + lineSuffix, + group, + conditionalGroup, + indent, + dedent, + ifBreak, + hardline, + softline, + literalline, + align, + dedentToRoot, +} = doc.builders; +const { willBreak } = doc.utils; +const { + isNextLineEmptyAfterIndex, + hasNewline, + hasNewlineInRange, getNextNonSpaceNonCommentCharacterIndex, isNextLineEmpty, -} = require("./util"); - -function isMinVersion(actualVersion, requiredVersion) { - return parseFloat(actualVersion) >= parseFloat(requiredVersion); -} - + isPreviousLineEmpty, +} = prettierUtil; + +/** + * Determine if we should print a trailing comma based on the config & php version + * + * @param options {object} Prettier Options + * @param requiredVersion {number} + * @returns {boolean} + */ function shouldPrintComma(options, requiredVersion) { if (!options.trailingCommaPHP) { return false; } - return isMinVersion(options.phpVersion, requiredVersion); + return options.phpVersion >= requiredVersion; } function shouldPrintHardlineForOpenBrace(options) { @@ -76,17 +85,16 @@ function shouldPrintHardlineForOpenBrace(options) { case "1tbs": return false; case "psr-2": + case "per-cs": default: return true; } } function genericPrint(path, options, print) { - const node = path.getValue(); + const { node } = path; - if (!node) { - return ""; - } else if (typeof node === "string") { + if (typeof node === "string") { return node; } @@ -113,11 +121,11 @@ function genericPrint(path, options, print) { parts.push(hardline); } - return concat(parts); + return parts; } function printPropertyLookup(path, options, print, nullsafe = false) { - return concat([nullsafe ? "?" : "", "->", path.call(print, "offset")]); + return [nullsafe ? "?" : "", "->", print("offset")]; } function printNullsafePropertyLookup(path, options, print) { @@ -125,37 +133,28 @@ function printNullsafePropertyLookup(path, options, print) { } function printStaticLookup(path, options, print) { - const node = path.getValue(); + const { node } = path; const needCurly = !["variable", "identifier"].includes(node.offset.kind); - return concat([ - "::", - needCurly ? "{" : "", - path.call(print, "offset"), - needCurly ? "}" : "", - ]); + return ["::", needCurly ? "{" : "", print("offset"), needCurly ? "}" : ""]; } function printOffsetLookup(path, options, print) { - const node = path.getValue(); + const { node } = path; const shouldInline = (node.offset && node.offset.kind === "number") || getAncestorNode(path, "encapsed"); - return concat([ + return [ "[", node.offset - ? group( - concat([ - indent( - concat([shouldInline ? "" : softline, path.call(print, "offset")]) - ), - shouldInline ? "" : softline, - ]) - ) + ? group([ + indent([shouldInline ? "" : softline, print("offset")]), + shouldInline ? "" : softline, + ]) : "", "]", - ]); + ]; } // We detect calls on member expressions specially to format a @@ -204,8 +203,7 @@ function printMemberChain(path, options, print) { const { originalText } = options; const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( originalText, - node, - options + locEnd(node) ); const nextChar = originalText.charAt(nextCharIndex); @@ -219,11 +217,11 @@ function printMemberChain(path, options, print) { ); } - return isNextLineEmpty(originalText, node, options); + return isNextLineEmpty(originalText, locEnd(node)); } function traverse(path) { - const node = path.getValue(); + const { node } = path; if ( node.kind === "call" && @@ -231,14 +229,14 @@ function printMemberChain(path, options, print) { ) { printedNodes.unshift({ node, - printed: concat([ - comments.printAllComments( + printed: [ + printAllComments( path, - () => concat([printArgumentsList(path, options, print)]), + () => printArgumentsList(path, options, print), options ), shouldInsertEmptyLineAfter(node) ? hardline : "", - ]), + ], }); path.call((what) => traverse(what), "what"); } else if (isLookupNode(node)) { @@ -258,22 +256,18 @@ function printMemberChain(path, options, print) { printedNodes.unshift({ node, needsParens: pathNeedsParens(path, options), - printed: comments.printAllComments( - path, - () => printedMemberish, - options - ), + printed: printAllComments(path, () => printedMemberish, options), }); path.call((what) => traverse(what), "what"); } else { printedNodes.unshift({ node, - printed: path.call(print), + printed: print(), }); } } - const node = path.getValue(); + const { node } = path; printedNodes.unshift({ node, @@ -288,13 +282,13 @@ function printMemberChain(path, options, print) { if ( printedNodes[i].node.kind === "call" && printedNodes[i - 1] && - ["propertylookup", "staticlookup"].includes( + ["propertylookup", "nullsafepropertylookup", "staticlookup"].includes( printedNodes[i - 1].node.kind ) && printedNodes[i - 1].needsParens ) { - printedNodes[0].printed = concat(["(", printedNodes[0].printed]); - printedNodes[i - 1].printed = concat([printedNodes[i - 1].printed, ")"]); + printedNodes[0].printed = ["(", printedNodes[0].printed]; + printedNodes[i - 1].printed = [printedNodes[i - 1].printed, ")"]; } } @@ -376,7 +370,7 @@ function printMemberChain(path, options, print) { if ( printedNodes[i].node.comments && - comments.hasTrailingComment(printedNodes[i].node) + hasTrailingComment(printedNodes[i].node) ) { groups.push(currentGroup); currentGroup = []; @@ -437,8 +431,7 @@ function printMemberChain(path, options, print) { ); } - const isExpressionStatement = - path.getParentNode().kind === "expressionstatement"; + const isExpressionStatement = path.parent.kind === "expressionstatement"; const shouldMerge = groups.length >= 2 && !groups[1][0].node.comments && shouldNotWrap(groups); @@ -461,7 +454,7 @@ function printMemberChain(path, options, print) { } } - return concat(result); + return result; } function printIndentedGroup(groups) { @@ -469,13 +462,11 @@ function printMemberChain(path, options, print) { return ""; } - return indent( - group(concat([hardline, join(hardline, groups.map(printGroup))])) - ); + return indent(group([hardline, join(hardline, groups.map(printGroup))])); } const printedGroups = groups.map(printGroup); - const oneLine = concat(printedGroups); + const oneLine = printedGroups; // Indicates how many we should merge // @@ -489,18 +480,12 @@ function printMemberChain(path, options, print) { // ->method() // ->otherMethod(); const cutoff = shouldMerge ? 3 : 2; - const flatGroups = groups - .slice(0, cutoff) - .reduce((res, group) => res.concat(group), []); + const flatGroups = groups.slice(0, cutoff).flat(); const hasComment = - flatGroups - .slice(1, -1) - .some((node) => comments.hasLeadingComment(node.node)) || - flatGroups - .slice(0, -1) - .some((node) => comments.hasTrailingComment(node.node)) || - (groups[cutoff] && comments.hasLeadingComment(groups[cutoff][0].node)); + flatGroups.slice(1, -1).some((node) => hasLeadingComment(node.node)) || + flatGroups.slice(0, -1).some((node) => hasTrailingComment(node.node)) || + (groups[cutoff] && hasLeadingComment(groups[cutoff][0].node)); const hasEncapsedAncestor = getAncestorNode(path, "encapsed"); @@ -520,16 +505,16 @@ function printMemberChain(path, options, print) { lastNodeBeforeIndent.kind !== "call" && shouldInsertEmptyLineAfter(lastNodeBeforeIndent); - const expanded = concat([ + const expanded = [ printGroup(groups[0]), - shouldMerge ? concat(groups.slice(1, 2).map(printGroup)) : "", + shouldMerge ? groups.slice(1, 2).map(printGroup) : "", shouldHaveEmptyLineBeforeIndent ? hardline : "", printIndentedGroup(groups.slice(shouldMerge ? 2 : 1)), - ]); + ]; - const callExpressionCount = printedNodes.filter( + const callExpressions = printedNodes.filter( (tuple) => tuple.node.kind === "call" - ).length; + ); // We don't want to print in one line if there's: // * A comment. @@ -538,19 +523,22 @@ function printMemberChain(path, options, print) { // If the last group is a function it's okay to inline if it fits. if ( hasComment || - callExpressionCount >= 3 || + (callExpressions.length > 2 && + callExpressions.some( + (exp) => !exp.node.arguments.every((arg) => isSimpleCallArgument(arg)) + )) || printedGroups.slice(0, -1).some(willBreak) ) { return group(expanded); } - return concat([ + return [ // We only need to check `oneLine` because if `expanded` is chosen // that means that the parent group has already been broken // naturally willBreak(oneLine) || shouldHaveEmptyLineBeforeIndent ? breakParent : "", conditionalGroup([oneLine, expanded]), - ]); + ]; } function couldGroupArg(arg) { @@ -594,28 +582,26 @@ function shouldGroupFirstArg(args) { } function printArgumentsList(path, options, print, argumentsKey = "arguments") { - const args = path.getValue()[argumentsKey]; + const args = path.node[argumentsKey]; if (args.length === 0) { - return concat([ + return [ "(", - comments.printDanglingComments(path, options, /* sameIndent */ true), + printDanglingComments(path, options, /* sameIndent */ true), ")", - ]); + ]; } let anyArgEmptyLine = false; let hasEmptyLineFollowingFirstArg = false; - const lastArgIndex = args.length - 1; - const printedArguments = path.map((argPath, index) => { - const arg = argPath.getNode(); - const parts = [print(argPath)]; + const printedArguments = path.map(({ node: arg, isLast, isFirst }) => { + const parts = [print()]; - if (index === lastArgIndex) { + if (isLast) { // do nothing - } else if (isNextLineEmpty(options.originalText, arg, options)) { - if (index === 0) { + } else if (isNextLineEmpty(options.originalText, locEnd(arg))) { + if (isFirst) { hasEmptyLineFollowingFirstArg = true; } @@ -625,34 +611,30 @@ function printArgumentsList(path, options, print, argumentsKey = "arguments") { parts.push(",", line); } - return concat(parts); + return parts; }, argumentsKey); - const node = path.getValue(); + const { node } = path; const lastArg = getLast(args); const maybeTrailingComma = - ["call", "new", "unset", "isset"].includes(node.kind) && - shouldPrintComma(options, "7.3") - ? indent( - concat([ - lastArg && shouldPrintHardlineBeforeTrailingComma(lastArg) - ? hardline - : "", - ",", - ]) - ) + (shouldPrintComma(options, 7.3) && + ["call", "new", "unset", "isset"].includes(node.kind)) || + (shouldPrintComma(options, 8.0) && + ["function", "closure", "method", "arrowfunc", "attribute"].includes( + node.kind + )) + ? indent([ + lastArg && shouldPrintHardlineBeforeTrailingComma(lastArg) + ? hardline + : "", + ",", + ]) : ""; function allArgsBrokenOut() { return group( - concat([ - "(", - indent(concat([line, concat(printedArguments)])), - maybeTrailingComma, - line, - ")", - ]), + ["(", indent([line, ...printedArguments]), maybeTrailingComma, line, ")"], { shouldBreak: true } ); } @@ -668,33 +650,30 @@ function printArgumentsList(path, options, print, argumentsKey = "arguments") { // We want to print the last argument with a special flag let printedExpanded; - let i = 0; - path.each((argPath) => { - if (shouldGroupFirst && i === 0) { + path.each(({ isLast, isFirst }) => { + if (shouldGroupFirst && isFirst) { printedExpanded = [ - concat([ - argPath.call((p) => print(p, { expandFirstArg: true })), - printedArguments.length > 1 ? "," : "", - hasEmptyLineFollowingFirstArg ? hardline : line, - hasEmptyLineFollowingFirstArg ? hardline : "", - ]), - ].concat(printedArguments.slice(1)); + print([], { expandFirstArg: true }), + printedArguments.length > 1 ? "," : "", + hasEmptyLineFollowingFirstArg ? hardline : line, + hasEmptyLineFollowingFirstArg ? hardline : "", + printedArguments.slice(1), + ]; } - if (shouldGroupLast && i === args.length - 1) { - printedExpanded = printedArguments - .slice(0, -1) - .concat(argPath.call((p) => print(p, { expandLastArg: true }))); + if (shouldGroupLast && isLast) { + printedExpanded = [ + ...printedArguments.slice(0, -1), + print([], { expandLastArg: true }), + ]; } - - i++; }, argumentsKey); const somePrintedArgumentsWillBreak = printedArguments.some(willBreak); - const simpleConcat = concat(["(", concat(printedExpanded), ")"]); + const simpleConcat = ["(", ...printedExpanded, ")"]; - return concat([ + return [ somePrintedArgumentsWillBreak ? breakParent : "", conditionalGroup( [ @@ -702,44 +681,44 @@ function printArgumentsList(path, options, print, argumentsKey = "arguments") { ? simpleConcat : ifBreak(allArgsBrokenOut(), simpleConcat), shouldGroupFirst - ? concat([ + ? [ "(", group(printedExpanded[0], { shouldBreak: true }), - concat(printedExpanded.slice(1)), + ...printedExpanded.slice(1), ")", - ]) - : concat([ + ] + : [ "(", - concat(printedArguments.slice(0, -1)), + ...printedArguments.slice(0, -1), group(getLast(printedExpanded), { shouldBreak: true, }), ")", - ]), + ], group( - concat([ + [ "(", - indent(concat([line, concat(printedArguments)])), + indent([line, ...printedArguments]), ifBreak(maybeTrailingComma), line, ")", - ]), + ], { shouldBreak: true } ), ], { shouldBreak } ), - ]); + ]; } return group( - concat([ + [ "(", - indent(concat([softline, concat(printedArguments)])), + indent([softline, ...printedArguments]), ifBreak(maybeTrailingComma), softline, ")", - ]), + ], { shouldBreak: printedArguments.some(willBreak) || anyArgEmptyLine, } @@ -770,7 +749,7 @@ function printBinaryExpression( isInsideParenthesis ) { let parts = []; - const node = path.getValue(); + const { node } = path; if (node.kind === "bin") { // Put all operators with the same precedence level in the same @@ -786,9 +765,9 @@ function printBinaryExpression( // Flatten them out by recursively calling this function. parts = parts.concat( path.call( - (left) => + () => printBinaryExpression( - left, + path, print, options, /* isNested */ true, @@ -798,18 +777,18 @@ function printBinaryExpression( ) ); } else { - parts.push(path.call(print, "left")); + parts.push(print("left")); } const shouldInline = shouldInlineLogicalExpression(node); const right = shouldInline - ? concat([node.type, " ", path.call(print, "right")]) - : concat([node.type, line, path.call(print, "right")]); + ? [node.type, " ", print("right")] + : [node.type, line, print("right")]; // If there's only a single binary expression, we want to create a group // in order to avoid having a small right part like -1 be on its own line. - const parent = path.getParentNode(); + const { parent } = path; const shouldGroup = !(isInsideParenthesis && ["||", "&&"].includes(node.type)) && getNodeKindIncludingLogical(parent) !== @@ -832,18 +811,18 @@ function printBinaryExpression( // the other ones since we don't call the normal print on bin, // only for the left and right parts if (isNested && node.comments) { - parts = comments.printAllComments(path, () => concat(parts), options); + parts = printAllComments(path, () => parts, options); } } else { // Our stopping case. Simply print the node normally. - parts.push(path.call(print)); + parts.push(print()); } return parts; } function printLookupNodes(path, options, print) { - const node = path.getValue(); + const { node } = path; switch (node.kind) { case "propertylookup": @@ -854,9 +833,9 @@ function printLookupNodes(path, options, print) { return printStaticLookup(path, options, print); case "offsetlookup": return printOffsetLookup(path, options, print); - /* istanbul ignore next */ + /* c8 ignore next 2 */ default: - return `Have not implemented lookup kind ${node.kind} yet.`; + throw new Error(`Have not implemented lookup kind ${node.kind} yet.`); } } @@ -874,29 +853,26 @@ function getEncapsedQuotes(node, { opening = true } = {}) { return quotes[node.type]; } - /* istanbul ignore next */ - return `Unimplemented encapsed type ${node.type}`; + /* c8 ignore next */ + throw new Error(`Unimplemented encapsed type ${node.type}`); } function printArrayItems(path, options, print) { const printedElements = []; let separatorParts = []; - path.each((childPath) => { - printedElements.push(concat(separatorParts)); - printedElements.push(group(print(childPath))); + path.each(({ node }) => { + printedElements.push(separatorParts); + printedElements.push(group(print())); separatorParts = [",", line]; - if ( - childPath.getValue() && - isNextLineEmpty(options.originalText, childPath.getValue(), options) - ) { + if (node && isNextLineEmpty(options.originalText, locEnd(node))) { separatorParts.push(softline); } }, "items"); - return concat(printedElements); + return printedElements; } // Wrap parts into groups by indexes. @@ -920,19 +896,17 @@ function wrapPartsIntoGroups(parts, indexes) { return indexes.reduce((accumulator, index) => { const { start, end, alignment, before, after } = index; - const printedPartsForGrouping = concat([ + const printedPartsForGrouping = [ before || "", - concat(parts.slice(start, end)), + ...parts.slice(start, end), after || "", - ]); + ]; const newArray = accumulator.concat( parts.slice(lastEnd, start), alignment ? dedentToRoot( group( - concat([ - align(new Array(alignment).join(" "), printedPartsForGrouping), - ]) + align(new Array(alignment).join(" "), printedPartsForGrouping) ) ) : group(printedPartsForGrouping), @@ -946,38 +920,40 @@ function wrapPartsIntoGroups(parts, indexes) { } function printLines(path, options, print, childrenAttribute = "children") { - const node = path.getValue(); - const parentNode = path.getParentNode(); + const { node, parent: parentNode } = path; let lastInlineIndex = -1; const parts = []; const groupIndexes = []; - path.map((childPath, index) => { - const childNode = childPath.getValue(); + path.map(() => { + const { + node: childNode, + next: nextNode, + isFirst: isFirstNode, + isLast: isLastNode, + index, + } = path; + const isInlineNode = childNode.kind === "inline"; - const printedPath = print(childPath); - const children = node[childrenAttribute]; - const nextNode = children[index + 1]; + const printedPath = print(); const canPrintBlankLine = - !isLastStatement(childPath) && + !isLastNode && !isInlineNode && (nextNode && nextNode.kind === "case" ? !isFirstChildrenInlineNode(path) : nextNode && nextNode.kind !== "inline"); - let printed = concat([ + let printed = [ printedPath, canPrintBlankLine ? hardline : "", canPrintBlankLine && - isNextLineEmpty(options.originalText, childNode, options) + isNextLineEmpty(options.originalText, locEnd(childNode)) ? hardline : "", - ]); + ]; - const isFirstNode = index === 0; - const isLastNode = children.length - 1 === index; const isBlockNestedNode = node.kind === "block" && parentNode && @@ -1002,7 +978,7 @@ function printLines(path, options, print, childrenAttribute = "children") { (isInlineNode ? prevLastInlineIndex : lastInlineIndex) + 1; const end = isLastNode && !isInlineNode ? index + 1 : index; const prevInlineNode = - children[isInlineNode ? prevLastInlineIndex : lastInlineIndex]; + path.siblings[isInlineNode ? prevLastInlineIndex : lastInlineIndex]; const alignment = prevInlineNode ? getAlignment(prevInlineNode.raw) : ""; @@ -1035,32 +1011,36 @@ function printLines(path, options, print, childrenAttribute = "children") { : "", - ]) + ] : isProgramLikeNode(node) && isFirstNode && node.kind !== "namespace" - ? "" - : concat([beforeCloseTagInlineNode, "?>"]); + ? "" + : [beforeCloseTagInlineNode, "?>"]; + + //FIXME getNode is used to get ancestors, but it seems this means to get next sibling? + const nextV = path.getNode(index + 1); + const skipLastComment = nextV && nextV.children && nextV.children.length; + const afterInline = childNode.comments && childNode.comments.length - ? concat([ + ? [ openTag, hardline, - comments.printComments(childNode.comments, options), + skipLastComment ? printComments(childNode.comments, options) : "", hardline, - "?>", - ]) + ] : isProgramLikeNode(node) && isLastNode - ? "" - : concat([openTag, " "]); + ? "" + : [openTag, " "]; - printed = concat([beforeInline, printed, afterInline]); + printed = [beforeInline, printed, afterInline]; } parts.push(printed); @@ -1076,73 +1056,72 @@ function printLines(path, options, print, childrenAttribute = "children") { if (hasStartTag) { const between = options.originalText.trim().match(/^<\?(php|=)(\s+)?\S/); - const afterOpenTag = concat([ + const afterOpenTag = [ between && between[2] && between[2].includes("\n") - ? concat([ - hardline, - between[2].split("\n").length > 2 ? hardline : "", - ]) + ? [hardline, between[2].split("\n").length > 2 ? hardline : ""] : " ", - node.comments ? comments.printComments(node.comments, options) : "", - ]); + node.comments ? printComments(node.comments, options) : "", + ]; const shortEcho = firstNode && firstNode.kind === "echo" && firstNode.shortForm; - parts.push(concat([shortEcho ? ""); + const hasEndTag = /\?>\n?$/.test(options.originalText); if (hasEndTag) { const lastNode = getLast(node.children); const beforeCloseTag = lastNode - ? concat([ + ? [ hasNewlineInRange( - options.originalText, - options.locEnd(lastNode), - options.locEnd(node) + options.originalText.trimEnd(), + locEnd(lastNode), + locEnd(node) ) - ? hardline + ? !( + lastNode.kind === "inline" && + lastNode.comments && + lastNode.comments.length + ) + ? hardline + : "" : " ", - isNextLineEmpty(options.originalText, lastNode, options) + isNextLineEmpty(options.originalText, locEnd(lastNode)) ? hardline : "", - ]) + ] : node.comments - ? hardline - : ""; + ? hardline + : ""; - parts.push(lineSuffix(concat([beforeCloseTag, "?>"]))); + parts.push(lineSuffix([beforeCloseTag, "?>"])); } - return concat(parts); + return parts; } - return concat(wrappedParts); + return wrappedParts; } function printStatements(path, options, print, childrenAttribute) { - return concat( - path.map((childPath) => { - const parts = []; + return path.map(({ node, isLast }) => { + const parts = []; - parts.push(print(childPath)); + parts.push(print()); - if (!isLastStatement(childPath)) { - parts.push(hardline); + if (!isLast) { + parts.push(hardline); - if ( - isNextLineEmpty(options.originalText, childPath.getValue(), options) - ) { - parts.push(hardline); - } + if (isNextLineEmpty(options.originalText, locEnd(node))) { + parts.push(hardline); } + } - return concat(parts); - }, childrenAttribute) - ); + return parts; + }, childrenAttribute); } function printClassPart( @@ -1153,54 +1132,84 @@ function printClassPart( beforePart = " ", afterPart = " " ) { - const node = path.getValue(); - const printedBeforePart = hasDanglingComments(node[part]) - ? concat([ + const value = path.node[part]; + const printedBeforePart = hasDanglingComments(value) + ? [ hardline, - path.call( - (partPath) => comments.printDanglingComments(partPath, options, true), - part - ), + path.call(() => printDanglingComments(path, options, true), part), hardline, - ]) + ] : beforePart; - const printedPartItems = Array.isArray(node[part]) + const printedPartItems = Array.isArray(value) ? group( - concat([ - join( - ",", - path.map((itemPartPath) => { - const printedPart = print(itemPartPath); - // Check if any of the implements nodes have comments - return hasDanglingComments(itemPartPath.getValue()) - ? concat([ - hardline, - comments.printDanglingComments(itemPartPath, options, true), - hardline, - printedPart, - ]) - : concat([afterPart, printedPart]); - }, part) - ), - ]) + join( + ",", + path.map(({ node }) => { + const printedPart = print(); + // Check if any of the implements nodes have comments + return hasDanglingComments(node) + ? [ + hardline, + printDanglingComments(path, options, true), + hardline, + printedPart, + ] + : [afterPart, printedPart]; + }, part) + ) ) - : concat([afterPart, path.call(print, part)]); - - return indent( - concat([ - printedBeforePart, - part, - willBreak(printedBeforePart) - ? indent(printedPartItems) - : printedPartItems, - ]) - ); + : [afterPart, print(part)]; + + return indent([ + printedBeforePart, + part, + willBreak(printedBeforePart) ? indent(printedPartItems) : printedPartItems, + ]); } -function printClass(path, options, print) { - const node = path.getValue(); +function printAttrs(path, options, print, { inline = false } = {}) { + const allAttrs = []; + if (!path.node.attrGroups) { + return []; + } + path.each(() => { + const attrGroup = ["#["]; + if (!inline && allAttrs.length > 0) { + allAttrs.push(hardline); + } + attrGroup.push(softline); + path.each(() => { + const attrNode = path.node; + if (attrGroup.length > 2) { + attrGroup.push(",", line); + } + const attrStmt = [attrNode.name]; + if (attrNode.args.length > 0) { + attrStmt.push(printArgumentsList(path, options, print, "args")); + } + attrGroup.push(group(attrStmt)); + }, "attrs"); + allAttrs.push( + group([ + indent(attrGroup), + ifBreak(shouldPrintComma(options, 8.0) ? "," : ""), + softline, + "]", + inline ? ifBreak(softline, " ") : "", + ]) + ); + }, "attrGroups"); + if (allAttrs.length === 0) { + return []; + } + return [...allAttrs, inline ? "" : hardline]; +} - const declaration = []; +function printClass(path, options, print) { + const { node } = path; + const isAnonymousClass = node.kind === "class" && node.isAnonymous; + const attrs = printAttrs(path, options, print, { inline: isAnonymousClass }); + const declaration = isAnonymousClass ? [] : [...attrs]; if (node.isFinal) { declaration.push("final "); @@ -1210,13 +1219,19 @@ function printClass(path, options, print) { declaration.push("abstract "); } - const isAnonymousClass = node.kind === "class" && node.isAnonymous; + if (node.isReadonly) { + declaration.push("readonly "); + } // `new` print `class` keyword with arguments declaration.push(isAnonymousClass ? "" : node.kind); if (node.name) { - declaration.push(" ", path.call(print, "name")); + declaration.push(" ", print("name")); + } + + if (node.kind === "enum" && node.valueType) { + declaration.push(": ", print("valueType")); } // Only `class` can have `extends` and `implements` @@ -1224,15 +1239,15 @@ function printClass(path, options, print) { declaration.push( conditionalGroup( [ - concat([ + [ printClassPart(path, options, print, "extends"), printClassPart(path, options, print, "implements"), - ]), - concat([ + ], + [ printClassPart(path, options, print, "extends"), printClassPart(path, options, print, "implements", " ", hardline), - ]), - concat([ + ], + [ printClassPart(path, options, print, "extends", hardline, " "), printClassPart( path, @@ -1242,7 +1257,7 @@ function printClass(path, options, print) { hardline, node.implements.length > 1 ? hardline : " " ), - ]), + ], ], { shouldBreak: hasDanglingComments(node.extends), @@ -1285,37 +1300,37 @@ function printClass(path, options, print) { } } - const printedDeclaration = group( - concat([ - group(concat(declaration)), - shouldPrintHardlineForOpenBrace(options) - ? isAnonymousClass - ? line - : hardline - : " ", - ]) - ); - const hasEmptyClassBody = node.body && node.body.length === 0 && !hasDanglingComments(node); - const printedBody = concat([ + + const printedDeclaration = group([ + group(declaration), + shouldPrintHardlineForOpenBrace(options) && !hasEmptyClassBody + ? isAnonymousClass + ? line + : hardline + : " ", + ]); + + const printedBody = [ "{", - indent( - concat([ - hasEmptyClassBody ? "" : hardline, - printStatements(path, options, print, "body"), - ]) - ), - comments.printDanglingComments(path, options, true), - isAnonymousClass && hasEmptyClassBody ? softline : hardline, + indent([ + hasEmptyClassBody ? "" : hardline, + printStatements(path, options, print, "body"), + ]), + printDanglingComments(path, options, true), + hasEmptyClassBody ? "" : hardline, "}", - ]); + ]; - return concat([printedDeclaration, printedBody]); + return [printedDeclaration, printedBody]; } function printFunction(path, options, print) { - const node = path.getValue(); + const { node } = path; + const declAttrs = printAttrs(path, options, print, { + inline: node.kind === "closure", + }); const declaration = []; if (node.isFinal) { @@ -1341,79 +1356,79 @@ function printFunction(path, options, print) { } if (node.name) { - declaration.push(path.call(print, "name")); + declaration.push(print("name")); } declaration.push(printArgumentsList(path, options, print)); if (node.uses && node.uses.length > 0) { declaration.push( - group(concat([" use ", printArgumentsList(path, options, print, "uses")])) + group([" use ", printArgumentsList(path, options, print, "uses")]) ); } if (node.type) { - declaration.push( - concat([ - ": ", - hasDanglingComments(node.type) - ? concat([ - path.call( - (typePath) => - comments.printDanglingComments(typePath, options, true), - "type" - ), - " ", - ]) - : "", - node.nullable ? "?" : "", - path.call(print, "type"), - ]) - ); + declaration.push([ + ": ", + hasDanglingComments(node.type) + ? [ + path.call(() => printDanglingComments(path, options, true), "type"), + " ", + ] + : "", + node.nullable ? "?" : "", + print("type"), + ]); } - const printedDeclaration = concat(declaration); + const printedDeclaration = declaration; if (!node.body) { - return printedDeclaration; + return [...declAttrs, printedDeclaration]; } - const isClosure = node.kind === "closure"; - const printedBody = concat([ + const printedBody = [ "{", - indent( - concat([hasEmptyBody(path) ? "" : hardline, path.call(print, "body")]) - ), - isClosure && hasEmptyBody(path) ? "" : hardline, + indent([hasEmptyBody(path) ? "" : hardline, print("body")]), + hasEmptyBody(path) ? "" : hardline, "}", - ]); + ]; + const isClosure = node.kind === "closure"; if (isClosure) { - return concat([printedDeclaration, " ", printedBody]); + return [...declAttrs, printedDeclaration, " ", printedBody]; } if (node.arguments.length === 0) { - return concat([ + return [ + ...declAttrs, printedDeclaration, - shouldPrintHardlineForOpenBrace(options) ? hardline : " ", + shouldPrintHardlineForOpenBrace(options) && !hasEmptyBody(path) + ? hardline + : " ", printedBody, - ]); + ]; } const willBreakDeclaration = declaration.some(willBreak); if (willBreakDeclaration) { - return concat([printedDeclaration, " ", printedBody]); + return [...declAttrs, printedDeclaration, " ", printedBody]; } - return conditionalGroup([ - concat([ - printedDeclaration, - shouldPrintHardlineForOpenBrace(options) ? hardline : " ", - printedBody, + return [ + ...declAttrs, + conditionalGroup([ + [ + printedDeclaration, + shouldPrintHardlineForOpenBrace(options) && !hasEmptyBody(path) + ? hardline + : " ", + printedBody, + ], + [printedDeclaration, " ", printedBody], ]), - concat([printedDeclaration, " ", printedBody]), - ]); + ]; } function printBodyControlStructure( @@ -1422,40 +1437,38 @@ function printBodyControlStructure( print, bodyProperty = "body" ) { - const node = path.getValue(); + const { node } = path; if (!node[bodyProperty]) { return ";"; } - const printedBody = path.call(print, bodyProperty); + const printedBody = print(bodyProperty); - return concat([ + return [ node.shortForm ? ":" : " {", indent( - concat([ - node[bodyProperty].kind !== "block" || + node[bodyProperty].kind !== "block" || (node[bodyProperty].children && node[bodyProperty].children.length > 0) || (node[bodyProperty].comments && node[bodyProperty].comments.length > 0) - ? concat([ - shouldPrintHardLineAfterStartInControlStructure(path) - ? node.kind === "switch" - ? " " - : "" - : hardline, - printedBody, - ]) - : "", - ]) + ? [ + shouldPrintHardLineAfterStartInControlStructure(path) + ? node.kind === "switch" + ? " " + : "" + : hardline, + printedBody, + ] + : "" ), node.kind === "if" && bodyProperty === "body" ? "" - : concat([ + : [ shouldPrintHardLineBeforeEndInControlStructure(path) ? hardline : "", - node.shortForm ? concat(["end", node.kind, ";"]) : "}", - ]), - ]); + node.shortForm ? ["end", node.kind, ";"] : "}", + ], + ]; } function printAssignment( @@ -1479,7 +1492,7 @@ function printAssignment( options ); - return group(concat([printedLeft, operator, printed])); + return group([printedLeft, operator, printed]); } function isLookupNodeChain(node) { @@ -1503,10 +1516,8 @@ function printAssignmentRight( ) { const ref = hasRef ? "&" : ""; - if ( - comments.hasLeadingOwnLineComment(options.originalText, rightNode, options) - ) { - return indent(concat([hardline, ref, printedRight])); + if (hasLeadingOwnLineComment(options.originalText, rightNode)) { + return indent([hardline, ref, printedRight]); } const pureRightNode = rightNode.kind === "cast" ? rightNode.expr : rightNode; @@ -1526,10 +1537,10 @@ function printAssignmentRight( isLookupNodeChain(pureRightNode))); if (canBreak) { - return group(indent(concat([line, ref, printedRight]))); + return group(indent([line, ref, printedRight])); } - return concat([" ", ref, printedRight]); + return [" ", ref, printedRight]; } function needsHardlineAfterDanglingComment(node) { @@ -1541,217 +1552,191 @@ function needsHardlineAfterDanglingComment(node) { node.comments.filter((comment) => !comment.leading && !comment.trailing) ); - return lastDanglingComment && !comments.isBlockComment(lastDanglingComment); + return lastDanglingComment && !isBlockComment(lastDanglingComment); } function stringHasNewLines(node) { return node.raw.includes("\n"); } -function isStringOnItsOwnLine(node, text, options) { +function isStringOnItsOwnLine(node, text) { return ( (node.kind === "string" || (node.kind === "encapsed" && (node.type === "string" || node.type === "shell"))) && stringHasNewLines(node) && - !hasNewline(text, options.locStart(node), { backwards: true }) + !hasNewline(text, locStart(node), { backwards: true }) + ); +} + +function printComposedTypes(path, print, glue) { + return group( + path.map(({ isFirst }) => (isFirst ? [print()] : [glue, print()]), "types") ); } function printNode(path, options, print) { - const node = path.getValue(); + const { node } = path; switch (node.kind) { case "program": { - return group( - concat([ - printLines(path, options, print), - comments.printDanglingComments( - path, - options, - /* sameIndent */ true, - (c) => !c.printed - ), - ]) - ); + return group([ + printLines(path, options, print), + printDanglingComments( + path, + options, + /* sameIndent */ true, + (c) => !c.printed + ), + ]); } case "expressionstatement": - return path.call(print, "expression"); + return print("expression"); case "block": - return concat([ + return [ printLines(path, options, print), - comments.printDanglingComments(path, options, true), - ]); + printDanglingComments(path, options, true), + ]; case "declare": { const printDeclareArguments = (path) => { - return join( - ", ", - path.map((directive) => concat([print(directive)]), "directives") - ); + return join(", ", path.map(print, "directives")); }; if (["block", "short"].includes(node.mode)) { - return concat([ + return [ "declare(", printDeclareArguments(path), ")", node.mode === "block" ? " {" : ":", node.children.length > 0 - ? indent(concat([hardline, printLines(path, options, print)])) + ? indent([hardline, printLines(path, options, print)]) : "", - comments.printDanglingComments(path, options), + printDanglingComments(path, options), hardline, node.mode === "block" ? "}" : "enddeclare;", - ]); + ]; } - const nextNode = getNextNode(path, node); - - return concat([ + return [ "declare(", printDeclareArguments(path), ")", - nextNode && nextNode.kind === "inline" ? "" : ";", - ]); + path.next?.kind === "inline" ? "" : ";", + ]; } case "declaredirective": - return concat([path.call(print, "key"), "=", path.call(print, "value")]); + return [print("key"), "=", print("value")]; case "namespace": - return concat([ + return [ "namespace ", node.name && typeof node.name === "string" - ? concat([node.name, node.withBrackets ? " " : ""]) + ? [node.name, node.withBrackets ? " " : ""] : "", node.withBrackets ? "{" : ";", hasDanglingComments(node) - ? concat([" ", comments.printDanglingComments(path, options, true)]) + ? [" ", printDanglingComments(path, options, true)] : "", node.children.length > 0 ? node.withBrackets - ? indent(concat([hardline, printLines(path, options, print)])) - : concat([ + ? indent([hardline, printLines(path, options, print)]) + : [ node.children[0].kind === "inline" ? "" - : concat([ + : [ hardline, - isNextLineEmptyAfterNamespace( - options.originalText, - node, - options.locStart - ) + isNextLineEmptyAfterNamespace(options.originalText, node) ? hardline : "", - ]), + ], printLines(path, options, print), - ]) + ] : "", - node.withBrackets ? concat([hardline, "}"]) : "", - ]); + node.withBrackets ? [hardline, "}"] : "", + ]; case "usegroup": - return group( - concat([ - "use ", - node.type ? concat([node.type, " "]) : "", - indent( - concat([ - node.name - ? concat([ - maybeStripLeadingSlashFromUse(node.name), - "\\{", - softline, - ]) - : "", - join( - concat([",", line]), - path.map((item) => concat([print(item)]), "items") - ), - ]) - ), + return group([ + "use ", + node.type ? [node.type, " "] : "", + indent([ node.name - ? concat([ - ifBreak(shouldPrintComma(options, "7.2") ? "," : ""), - softline, - "}", - ]) + ? [maybeStripLeadingSlashFromUse(node.name), "\\{", softline] : "", - ]) - ); + join([",", line], path.map(print, "items")), + ]), + node.name + ? [ifBreak(shouldPrintComma(options, 7.2) ? "," : ""), softline, "}"] + : "", + ]); case "useitem": - return concat([ - node.type ? concat([node.type, " "]) : "", + return [ + node.type ? [node.type, " "] : "", maybeStripLeadingSlashFromUse(node.name), hasDanglingComments(node) - ? concat([" ", comments.printDanglingComments(path, options, true)]) + ? [" ", printDanglingComments(path, options, true)] : "", - node.alias ? concat([" as ", path.call(print, "alias")]) : "", - ]); + node.alias ? [" as ", print("alias")] : "", + ]; case "class": + case "enum": case "interface": case "trait": return printClass(path, options, print); case "traitprecedence": - return concat([ - path.call(print, "trait"), + return [ + print("trait"), "::", - path.call(print, "method"), + print("method"), " insteadof ", join(", ", path.map(print, "instead")), - ]); + ]; case "traitalias": - return concat([ - node.trait ? concat([path.call(print, "trait"), "::"]) : "", - node.method ? path.call(print, "method") : "", + return [ + node.trait ? [print("trait"), "::"] : "", + node.method ? print("method") : "", " as ", join(" ", [ ...(node.visibility ? [node.visibility] : []), - ...(node.as ? [path.call(print, "as")] : []), + ...(node.as ? [print("as")] : []), ]), - ]); + ]; case "traituse": - return group( - concat([ - "use ", - indent(group(join(concat([",", line]), path.map(print, "traits")))), - node.adaptations - ? concat([ - " {", - node.adaptations.length > 0 - ? concat([ - indent( - concat([ - hardline, - printStatements(path, options, print, "adaptations"), - ]) - ), + return group([ + "use ", + indent(group(join([",", line], path.map(print, "traits")))), + node.adaptations + ? [ + " {", + node.adaptations.length > 0 + ? [ + indent([ hardline, - ]) - : hasDanglingComments(node) - ? concat([ - line, - comments.printDanglingComments(path, options, true), - line, - ]) + printStatements(path, options, print, "adaptations"), + ]), + hardline, + ] + : hasDanglingComments(node) + ? [line, printDanglingComments(path, options, true), line] : "", - "}", - ]) - : "", - ]) - ); + "}", + ] + : "", + ]); case "function": case "closure": case "method": return printFunction(path, options, print); case "arrowfunc": - return concat([ + return [ + node.parenthesizedExpression ? "(" : "", + ...printAttrs(path, options, print, { inline: true }), node.isStatic ? "static " : "", "fn", printArgumentsList(path, options, print), - node.type - ? concat([": ", node.nullable ? "?" : "", path.call(print, "type")]) - : "", + node.type ? [": ", node.nullable ? "?" : "", print("type")] : "", " => ", - path.call(print, "body"), - ]); + print("body"), + node.parenthesizedExpression ? ")" : "", + ]; case "parameter": { let promoted = ""; if (node.flags === 1) { @@ -1761,69 +1746,66 @@ function printNode(path, options, print) { } else if (node.flags === 4) { promoted = "private "; } - const name = concat([ + const name = [ + ...printAttrs(path, options, print, { inline: true }), promoted, + node.readonly ? "readonly " : "", node.nullable ? "?" : "", - node.type ? concat([path.call(print, "type"), " "]) : "", + node.type ? [print("type"), " "] : "", node.byref ? "&" : "", node.variadic ? "..." : "", "$", - path.call(print, "name"), - ]); + print("name"), + ]; if (node.value) { - return group( - concat([ - name, - // see handleFunctionParameter() in ./comments.js - since there's - // no node to attach comments that fall in between the parameter name - // and value, we store them as dangling comments - hasDanglingComments(node) ? " " : "", - comments.printDanglingComments(path, options, true), - concat([ + return group([ + name, + // see handleFunctionParameter() in ./comments.mjs - since there's + // no node to attach comments that fall in between the parameter name + // and value, we store them as dangling comments + hasDanglingComments(node) ? " " : "", + printDanglingComments(path, options, true), + " =", + printAssignmentRight( + node.name, + node.value, + print("value"), + false, + options + ), + ]); + } + + return name; + } + case "variadic": + return ["...", print("what")]; + case "property": + return group([ + node.readonly ? "readonly " : "", + node.type ? [node.nullable ? "?" : "", print("type"), " "] : "", + "$", + print("name"), + node.value + ? [ " =", printAssignmentRight( node.name, node.value, - path.call(print, "value"), + print("value"), false, options ), - ]), - ]) - ); - } - - return name; - } - case "variadic": - return concat(["...", path.call(print, "what")]); - case "property": - return group( - concat([ - node.type - ? concat([node.nullable ? "?" : "", path.call(print, "type"), " "]) - : "", - "$", - path.call(print, "name"), - node.value - ? concat([ - " =", - printAssignmentRight( - node.name, - node.value, - path.call(print, "value"), - false, - options - ), - ]) - : "", - ]) - ); + ] + : "", + ]); case "propertystatement": { - const printed = path.map((childPath) => { - return print(childPath); + const attrs = []; + path.each(() => { + attrs.push(...printAttrs(path, options, print)); }, "properties"); + const printed = path.map(print, "properties"); const hasValue = node.properties.some((property) => property.value); @@ -1838,39 +1820,27 @@ function printNode(path, options, print) { const hasVisibility = node.visibility || node.visibility === null; - return group( - concat([ - hasVisibility - ? concat([node.visibility === null ? "var" : node.visibility, ""]) - : "", - node.isStatic ? concat([hasVisibility ? " " : "", "static"]) : "", - firstProperty ? concat([" ", firstProperty]) : "", - indent( - concat( - printed - .slice(1) - .map((p) => concat([",", hasValue ? hardline : line, p])) - ) - ), - ]) - ); + return group([ + ...attrs, + hasVisibility + ? [node.visibility === null ? "var" : node.visibility, ""] + : "", + node.isStatic ? [hasVisibility ? " " : "", "static"] : "", + firstProperty ? [" ", firstProperty] : "", + indent( + printed.slice(1).map((p) => [",", hasValue ? hardline : line, p]) + ), + ]); } case "if": { const parts = []; const body = printBodyControlStructure(path, options, print, "body"); - const opening = group( - concat([ - "if (", - group( - concat([ - indent(concat([softline, path.call(print, "test")])), - softline, - ]) - ), - ")", - body, - ]) - ); + const opening = group([ + "if (", + group([indent([softline, print("test")]), softline]), + ")", + body, + ]); parts.push( opening, @@ -1883,7 +1853,7 @@ function printNode(path, options, print) { const commentOnOwnLine = (hasTrailingComment(node.body) && node.body.comments.some( - (comment) => comment.trailing && !comments.isBlockComment(comment) + (comment) => comment.trailing && !isBlockComment(comment) )) || needsHardlineAfterDanglingComment(node); const elseOnSameLine = !commentOnOwnLine; @@ -1891,10 +1861,10 @@ function printNode(path, options, print) { if (hasDanglingComments(node)) { parts.push( - isNextLineEmpty(options.originalText, node.body, options) + isNextLineEmpty(options.originalText, locEnd(node.body)) ? hardline : "", - comments.printDanglingComments(path, options, true), + printDanglingComments(path, options, true), commentOnOwnLine ? hardline : " " ); } @@ -1903,7 +1873,7 @@ function printNode(path, options, print) { "else", group( node.alternate.kind === "if" - ? path.call(print, "alternate") + ? print("alternate") : printBodyControlStructure(path, options, print, "alternate") ) ); @@ -1911,91 +1881,63 @@ function printNode(path, options, print) { parts.push(node.body ? (node.shortForm ? "endif;" : "}") : ""); } - return concat(parts); + return parts; } case "do": - return concat([ + return [ "do", printBodyControlStructure(path, options, print, "body"), " while (", - group( - concat([ - indent(concat([softline, path.call(print, "test")])), - softline, - ]) - ), + group([indent([softline, print("test")]), softline]), ")", - ]); + ]; case "while": case "switch": - return group( - concat([ - node.kind, - " (", - group( - concat([ - indent(concat([softline, path.call(print, "test")])), - softline, - ]) - ), - ")", - printBodyControlStructure(path, options, print, "body"), - ]) - ); + return group([ + node.kind, + " (", + group([indent([softline, print("test")]), softline]), + ")", + printBodyControlStructure(path, options, print, "body"), + ]); case "for": { const body = printBodyControlStructure(path, options, print, "body"); // We want to keep dangling comments above the loop to stay consistent. // Any comment positioned between the for statement and the parentheses // is going to be printed before the statement. - const dangling = comments.printDanglingComments( + const dangling = printDanglingComments( path, options, /* sameLine */ true ); - const printedComments = dangling ? concat([dangling, softline]) : ""; + const printedComments = dangling ? [dangling, softline] : ""; if (!node.init.length && !node.test.length && !node.increment.length) { - return concat([printedComments, group(concat(["for (;;)", body]))]); + return [printedComments, group(["for (;;)", body])]; } - return concat([ + return [ printedComments, - group( - concat([ - "for (", - group( - concat([ - indent( - concat([ - softline, - group( - concat([ - join(concat([",", line]), path.map(print, "init")), - ]) - ), - ";", - line, - group( - concat([ - join(concat([",", line]), path.map(print, "test")), - ]) - ), - ";", - line, - group( - join(concat([",", line]), path.map(print, "increment")) - ), - ]) - ), - softline, - ]) - ), - ")", - body, - ]) - ), - ]); + group([ + "for (", + group([ + indent([ + softline, + group(join([",", line], path.map(print, "init"))), + ";", + line, + group(join([",", line], path.map(print, "test"))), + ";", + line, + group(join([",", line], path.map(print, "increment"))), + ]), + softline, + ]), + ")", + body, + ]), + ]; } case "foreach": { const body = printBodyControlStructure(path, options, print, "body"); @@ -2003,46 +1945,35 @@ function printNode(path, options, print) { // We want to keep dangling comments above the loop to stay consistent. // Any comment positioned between the for statement and the parentheses // is going to be printed before the statement. - const dangling = comments.printDanglingComments( + const dangling = printDanglingComments( path, options, /* sameLine */ true ); - const printedComments = dangling ? concat([dangling, softline]) : ""; + const printedComments = dangling ? [dangling, softline] : ""; - return concat([ + return [ printedComments, - group( - concat([ - "foreach (", - group( - concat([ - indent( - concat([ - softline, - path.call(print, "source"), - line, - "as ", - group( - node.key - ? indent( - join(concat([" =>", line]), [ - path.call(print, "key"), - path.call(print, "value"), - ]) - ) - : path.call(print, "value") - ), - ]) - ), - softline, - ]) - ), - ")", - body, - ]) - ), - ]); + group([ + "foreach (", + group([ + indent([ + softline, + print("source"), + line, + "as ", + group( + node.key + ? indent(join([" =>", line], [print("key"), print("value")])) + : print("value") + ), + ]), + softline, + ]), + ")", + body, + ]), + ]; } case "try": { const parts = []; @@ -2053,7 +1984,7 @@ function printNode(path, options, print) { ); if (node.catches) { - parts.push(concat(path.map(print, "catches"))); + parts.push(path.map(print, "catches")); } if (node.always) { @@ -2063,50 +1994,45 @@ function printNode(path, options, print) { ); } - return concat(parts); + return parts; } case "catch": { - return concat([ + return [ " catch", node.what - ? concat([ + ? [ " (", join(" | ", path.map(print, "what")), - " ", - path.call(print, "variable"), + node.variable ? [" ", print("variable")] : "", ")", - ]) + ] : "", printBodyControlStructure(path, options, print, "body"), - ]); + ]; } case "case": - return concat([ + return [ node.test - ? concat([ + ? [ "case ", - node.test.comments - ? indent(path.call(print, "test")) - : path.call(print, "test"), + node.test.comments ? indent(print("test")) : print("test"), ":", - ]) + ] : "default:", node.body ? node.body.children && node.body.children.length - ? indent( - concat([ - isFirstChildrenInlineNode(path) ? "" : hardline, - path.call(print, "body"), - ]) - ) + ? indent([ + isFirstChildrenInlineNode(path) ? "" : hardline, + print("body"), + ]) : "" : "", - ]); + ]; case "break": case "continue": if (node.level) { if (node.level.kind === "number" && node.level.value !== "1") { - return concat([`${node.kind} `, path.call(print, "level")]); + return [`${node.kind} `, print("level")]; } return node.kind; @@ -2117,12 +2043,14 @@ function printNode(path, options, print) { // Multiline strings as single arguments if ( node.arguments.length === 1 && - isStringOnItsOwnLine(node.arguments[0], options.originalText, options) + isStringOnItsOwnLine(node.arguments[0], options.originalText) ) { - return concat([ - path.call(print, "what"), - concat(["(", join(", ", path.map(print, "arguments")), ")"]), - ]); + return [ + print("what"), + "(", + join(", ", path.map(print, "arguments")), + ")", + ]; } // chain: Call (*LookupNode (Call (*LookupNode (...)))) @@ -2130,10 +2058,7 @@ function printNode(path, options, print) { return printMemberChain(path, options, print); } - return concat([ - path.call(print, "what"), - printArgumentsList(path, options, print), - ]); + return [print("what"), printArgumentsList(path, options, print)]; } case "new": { const isAnonymousClassNode = @@ -2143,15 +2068,16 @@ function printNode(path, options, print) { if ( !isAnonymousClassNode && node.arguments.length === 1 && - isStringOnItsOwnLine(node.arguments[0], options.originalText, options) + isStringOnItsOwnLine(node.arguments[0], options.originalText) ) { - return concat([ + return [ "new ", - path.call(print, "what"), + ...path.call(printAttrs, "what"), + print("what"), "(", join(", ", path.map(print, "arguments")), ")", - ]); + ]; } const parts = []; @@ -2162,44 +2088,46 @@ function printNode(path, options, print) { parts.push( node.what.leadingComments && node.what.leadingComments[0].kind === "commentblock" - ? concat([ - comments.printComments(node.what.leadingComments, options), - " ", - ]) + ? [printComments(node.what.leadingComments, options), " "] : "", + ...path.call( + () => printAttrs(path, options, print, { inline: true }), + "what" + ), "class", node.arguments.length > 0 - ? concat([" ", printArgumentsList(path, options, print)]) + ? [" ", printArgumentsList(path, options, print)] : "", - group(path.call(print, "what")) + group(print("what")) ); } else { - const printed = concat([ - path.call(print, "what"), + const isExpression = ["call", "offsetlookup"].includes(node.what.kind); + const printed = [ + isExpression ? "(" : "", + print("what"), + isExpression ? ")" : "", printArgumentsList(path, options, print), - ]); + ]; parts.push(hasLeadingComment(node.what) ? indent(printed) : printed); } - return concat(parts); + return parts; } case "clone": - return concat([ + return [ "clone ", - node.what.comments - ? indent(path.call(print, "what")) - : path.call(print, "what"), - ]); + node.what.comments ? indent(print("what")) : print("what"), + ]; case "propertylookup": case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": { - const parent = path.getParentNode(); + const { parent } = path; + // TODO: Use `AstPath.findAncestor` when it's stable let firstNonMemberParent; let i = 0; - do { firstNonMemberParent = path.getParentNode(i); i++; @@ -2220,96 +2148,68 @@ function printNode(path, options, print) { parent && !isLookupNode(parent)); - return concat([ - path.call(print, "what"), + return [ + print("what"), shouldInline ? printLookupNodes(path, options, print) - : group( - indent(concat([softline, printLookupNodes(path, options, print)])) - ), - ]); + : group(indent([softline, printLookupNodes(path, options, print)])), + ]; } case "exit": - return group( - concat([ - node.useDie ? "die" : "exit", - "(", - node.expression - ? isStringOnItsOwnLine( - node.expression, - options.originalText, - options - ) - ? path.call(print, "expression") - : concat([ - indent(concat([softline, path.call(print, "expression")])), - softline, - ]) - : comments.printDanglingComments(path, options), - ")", - ]) - ); + return group([ + node.useDie ? "die" : "exit", + "(", + node.expression + ? isStringOnItsOwnLine(node.expression, options.originalText) + ? print("expression") + : [indent([softline, print("expression")]), softline] + : printDanglingComments(path, options), + ")", + ]); case "global": - return group( - concat([ - "global ", - indent(concat([join(concat([",", line]), path.map(print, "items"))])), - ]) - ); + return group([ + "global ", + indent(join([",", line], path.map(print, "items"))), + ]); case "include": - return concat([ + return [ node.require ? "require" : "include", node.once ? "_once" : "", " ", - node.target.comments - ? indent(path.call(print, "target")) - : path.call(print, "target"), - ]); + node.target.comments ? indent(print("target")) : print("target"), + ]; case "label": - return concat([path.call(print, "name"), ":"]); + return [print("name"), ":"]; case "goto": - return concat(["goto ", path.call(print, "label")]); + return ["goto ", print("label")]; case "throw": - return concat([ + return [ "throw ", - node.what.comments - ? indent(path.call(print, "what")) - : path.call(print, "what"), - ]); + node.what.comments ? indent(print("what")) : print("what"), + ]; case "silent": - return concat(["@", path.call(print, "expr")]); + return ["@", print("expr")]; case "halt": - return concat([ + return [ hasDanglingComments(node) - ? concat([ - comments.printDanglingComments( - path, - options, - /* sameIndent */ true - ), + ? [ + printDanglingComments(path, options, /* sameIndent */ true), hardline, - ]) + ] : "", "__halt_compiler();", node.after, - ]); + ]; case "eval": - return group( - concat([ - "eval(", - isStringOnItsOwnLine(node.source, options.originalText, options) - ? path.call(print, "source") - : concat([ - indent(concat([softline, path.call(print, "source")])), - softline, - ]), - ")", - ]) - ); + return group([ + "eval(", + isStringOnItsOwnLine(node.source, options.originalText) + ? print("source") + : [indent([softline, print("source")]), softline], + ")", + ]); case "echo": { - const printedArguments = path.map((childPath) => { - return print(childPath); - }, "expressions"); + const printedArguments = path.map(print, "expressions"); let firstVariable; @@ -2322,23 +2222,19 @@ function printNode(path, options, print) { : dedent(printedArguments[0]); } - return group( - concat([ - node.shortForm ? "" : "echo ", - firstVariable ? firstVariable : "", - indent( - concat(printedArguments.slice(1).map((p) => concat([",", line, p]))) - ), - ]) - ); + return group([ + node.shortForm ? "" : "echo ", + firstVariable ? firstVariable : "", + indent(printedArguments.slice(1).map((p) => [",", line, p])), + ]); } case "print": { - return concat([ + return [ "print ", node.expression.comments - ? indent(path.call(print, "expression")) - : path.call(print, "expression"), - ]); + ? indent(print("expression")) + : print("expression"), + ]; } case "return": { const parts = []; @@ -2346,7 +2242,7 @@ function printNode(path, options, print) { parts.push("return"); if (node.expr) { - const printedExpr = path.call(print, "expr"); + const printedExpr = print("expr"); parts.push(" ", node.expr.comments ? indent(printedExpr) : printedExpr); } @@ -2354,32 +2250,27 @@ function printNode(path, options, print) { if (hasDanglingComments(node)) { parts.push( " ", - comments.printDanglingComments(path, options, /* sameIndent */ true) + printDanglingComments(path, options, /* sameIndent */ true) ); } - return concat(parts); + return parts; } case "isset": case "unset": - return group( - concat([ - node.kind, - printArgumentsList(path, options, print, "variables"), - ]) - ); + return group([ + node.kind, + printArgumentsList(path, options, print, "variables"), + ]); case "empty": - return group( - concat([ - "empty(", - indent(concat([softline, path.call(print, "expression")])), - softline, - ")", - ]) - ); + return group([ + "empty(", + indent([softline, print("expression")]), + softline, + ")", + ]); case "variable": { - const parent = path.getParentNode(); - const parentParent = path.getParentNode(1); + const { parent, grandparent: parentParent } = path; const ampersand = parent.kind === "assign" ? "" : node.byref ? "&" : ""; const dollar = (parent.kind === "encapsedpart" && @@ -2395,19 +2286,12 @@ function printNode(path, options, print) { const openCurly = node.curly ? "{" : ""; const closeCurly = node.curly ? "}" : ""; - return concat([ - ampersand, - dollar, - openCurly, - path.call(print, "name"), - closeCurly, - ]); + return [ampersand, dollar, openCurly, print("name"), closeCurly]; } case "constantstatement": case "classconstant": { - const printed = path.map((childPath) => { - return print(childPath); - }, "constants"); + const attrs = printAttrs(path, options, print); + const printed = path.map(print, "constants"); let firstVariable; @@ -2418,31 +2302,28 @@ function printNode(path, options, print) { firstVariable = indent(printed[0]); } - return group( - concat([ - node.visibility ? concat([node.visibility, " "]) : "", - "const", - firstVariable ? concat([" ", firstVariable]) : "", - indent( - concat(printed.slice(1).map((p) => concat([",", hardline, p]))) - ), - ]) - ); + return group([ + ...attrs, + node.final ? "final " : "", + node.visibility ? [node.visibility, " "] : "", + "const", + node.type ? [node.nullable ? " ?" : " ", print("type")] : "", + firstVariable ? [" ", firstVariable] : "", + indent(printed.slice(1).map((p) => [",", hardline, p])), + ]); } case "constant": return printAssignment( node.name, - path.call(print, "name"), + print("name"), " =", node.value, - path.call(print, "value"), + print("value"), false, options ); case "static": { - const printed = path.map((childPath) => { - return print(childPath); - }, "variables"); + const printed = path.map(print, "variables"); const hasValue = node.variables.some((item) => item.defaultValue); @@ -2455,27 +2336,21 @@ function printNode(path, options, print) { firstVariable = indent(printed[0]); } - return group( - concat([ - "static", - firstVariable ? concat([" ", firstVariable]) : "", - indent( - concat( - printed - .slice(1) - .map((p) => concat([",", hasValue ? hardline : line, p])) - ) - ), - ]) - ); + return group([ + "static", + firstVariable ? [" ", firstVariable] : "", + indent( + printed.slice(1).map((p) => [",", hasValue ? hardline : line, p]) + ), + ]); } case "staticvariable": { return printAssignment( node.variable, - path.call(print, "variable"), + print("variable"), " =", node.defaultValue, - path.call(print, "defaultValue"), + print("defaultValue"), false, options ); @@ -2483,25 +2358,22 @@ function printNode(path, options, print) { case "list": case "array": { const useShortForm = - (node.kind === "array" && isMinVersion(options.phpVersion, "5.4")) || - (node.kind === "list" && - (node.shortForm || isMinVersion(options.phpVersion, "7.1"))); - const open = useShortForm ? "[" : concat([node.kind, "("]); + (node.kind === "array" && options.phpVersion >= 5.4) || + (node.kind === "list" && (node.shortForm || options.phpVersion >= 7.1)); + const open = useShortForm ? "[" : [node.kind, "("]; const close = useShortForm ? "]" : ")"; if (node.items.length === 0) { if (!hasDanglingComments(node)) { - return concat([open, close]); + return [open, close]; } - return group( - concat([ - open, - comments.printDanglingComments(path, options), - softline, - close, - ]) - ); + return group([ + open, + printDanglingComments(path, options), + softline, + close, + ]); } const lastElem = getLast(node.items); @@ -2520,36 +2392,36 @@ function printNode(path, options, print) { const [firstProperty] = node.items .filter((node) => node.kind !== "noop") - .sort((a, b) => options.locStart(a) - options.locStart(b)); + .sort((a, b) => locStart(a) - locStart(b)); const isAssociative = !!(firstProperty && firstProperty.key); const shouldBreak = isAssociative && firstProperty && hasNewlineInRange( options.originalText, - options.locStart(node), - options.locStart(firstProperty) + locStart(node), + locStart(firstProperty) ); return group( - concat([ + [ open, - indent(concat([softline, printArrayItems(path, options, print)])), + indent([softline, printArrayItems(path, options, print)]), needsForcedTrailingComma ? "," : "", ifBreak( - !needsForcedTrailingComma && shouldPrintComma(options, "5.0") - ? concat([ + !needsForcedTrailingComma && shouldPrintComma(options, 5.0) + ? [ lastElem && shouldPrintHardlineBeforeTrailingComma(lastElem) ? hardline : "", ",", - ]) + ] : "" ), - comments.printDanglingComments(path, options, true), + printDanglingComments(path, options, true), softline, close, - ]), + ], { shouldBreak } ); } @@ -2559,68 +2431,63 @@ function printNode(path, options, print) { return node.key ? printAssignment( node.key, - path.call(print, "key"), + print("key"), " =>", node.value, - path.call(print, "value"), + print("value"), ref, options ) - : concat([ref, unpack, path.call(print, "value")]); + : [ref, unpack, print("value")]; } case "yield": { - const printedKeyAndValue = concat([ - node.key ? concat([path.call(print, "key"), " => "]) : "", - path.call(print, "value"), - ]); + const printedKeyAndValue = [ + node.key ? [print("key"), " => "] : "", + print("value"), + ]; - return concat([ + return [ "yield", node.key || node.value ? " " : "", node.value && node.value.comments ? indent(printedKeyAndValue) : printedKeyAndValue, - ]); + ]; } case "yieldfrom": - return concat([ + return [ "yield from ", - node.value.comments - ? indent(path.call(print, "value")) - : path.call(print, "value"), - ]); + node.value.comments ? indent(print("value")) : print("value"), + ]; case "unary": - return concat([node.type, path.call(print, "what")]); + return [node.type, print("what")]; case "pre": - return concat([node.type + node.type, path.call(print, "what")]); + return [node.type + node.type, print("what")]; case "post": - return concat([path.call(print, "what"), node.type + node.type]); + return [print("what"), node.type + node.type]; case "cast": - return concat([ + return [ "(", node.type, ") ", - node.expr.comments - ? indent(path.call(print, "expr")) - : path.call(print, "expr"), - ]); + node.expr.comments ? indent(print("expr")) : print("expr"), + ]; case "assignref": case "assign": { const hasRef = node.kind === "assignref"; return printAssignment( node.left, - path.call(print, "left"), - concat([" ", hasRef ? "=" : node.operator]), + print("left"), + [" ", hasRef ? "=" : node.operator], node.right, - path.call(print, "right"), + print("right"), hasRef, options ); } case "bin": { - const parent = path.getParentNode(); - const parentParent = path.getParentNode(1); + const { parent, grandparent: parentParent } = path; const isInsideParenthesis = node !== parent.body && (parent.kind === "if" || @@ -2647,7 +2514,7 @@ function printNode(path, options, print) { // $this->lookahead()->type === tt->parenLeft // ) { if (isInsideParenthesis) { - return concat(parts); + return parts; } // Break between the parens in unaries or in a member expression, i.e. @@ -2661,9 +2528,7 @@ function printNode(path, options, print) { parent.kind === "unary" || (isLookupNode(parent) && parent.kind !== "offsetlookup") ) { - return group( - concat([indent(concat([softline, concat(parts)])), softline]) - ); + return group([indent([softline, ...parts]), softline]); } // Avoid indenting sub-expressions in some cases where the first sub-expression is already @@ -2690,25 +2555,24 @@ function printNode(path, options, print) { (shouldInlineLogicalExpression(node) && !samePrecedenceSubExpression) || (!shouldInlineLogicalExpression(node) && shouldIndentIfInlining) ) { - return group(concat(parts)); + return group(parts); } - const rest = concat(parts.slice(1)); + const rest = parts.slice(1); - return group( - concat([ - // Don't include the initial expression in the indentation - // level. The first item is guaranteed to be the first - // left-most expression. - parts.length > 0 ? parts[0] : "", - indent(rest), - ]) - ); + return group([ + // Don't include the initial expression in the indentation + // level. The first item is guaranteed to be the first + // left-most expression. + parts.length > 0 ? parts[0] : "", + indent(rest), + ]); } case "retif": { const parts = []; - const parent = path.getParentNode(); + const { parent } = path; + // TODO: Use `AstPath.findAncestor` when it's stable // Find the outermost non-retif parent, and the outermost retif parent. let currentParent; let i = 0; @@ -2721,28 +2585,28 @@ function printNode(path, options, print) { const printedFalseExpr = node.falseExpr.kind === "bin" - ? indent(path.call(print, "falseExpr")) - : path.call(print, "falseExpr"); - const part = concat([ + ? indent(print("falseExpr")) + : print("falseExpr"); + const part = [ node.trueExpr ? line : " ", "?", node.trueExpr - ? concat([ + ? [ " ", node.trueExpr.kind === "bin" - ? indent(path.call(print, "trueExpr")) - : path.call(print, "trueExpr"), + ? indent(print("trueExpr")) + : print("trueExpr"), line, - ]) + ] : "", ":", node.trueExpr - ? concat([" ", printedFalseExpr]) - : concat([ + ? [" ", printedFalseExpr] + : [ shouldInlineRetifFalseExpression(node.falseExpr) ? " " : line, printedFalseExpr, - ]), - ]); + ], + ]; parts.push(part); @@ -2755,24 +2619,28 @@ function printNode(path, options, print) { // ? $b // : $c // )->call() - const parentParent = path.getParentNode(1); + const parentParent = path.grandparent; const pureParent = parent.kind === "cast" && parentParent ? parentParent : parent; - const breakLookupNodes = ["propertylookup", "staticlookup"]; + const breakLookupNodes = [ + "propertylookup", + "nullsafepropertylookup", + "staticlookup", + ]; const breakClosingParens = breakLookupNodes.includes(pureParent.kind); - const printedTest = path.call(print, "test"); + const printedTest = print("test"); if (!node.trueExpr) { - const printed = concat([ + const printed = [ printedTest, pureParent.kind === "bin" || ["print", "echo", "return", "include"].includes( firstNonRetifParent.kind ) - ? indent(concat(parts)) - : concat(parts), - ]); + ? indent(parts) + : parts, + ]; // Break between the parens in unaries or in a lookup nodes, i.e. // @@ -2786,35 +2654,33 @@ function printNode(path, options, print) { pureParent.kind === "unary" || (isLookupNode(pureParent) && pureParent.kind !== "offsetlookup") ) { - return group(concat([indent(concat([softline, printed])), softline])); + return group([indent([softline, printed]), softline]); } return maybeGroup(printed); } - return maybeGroup( - concat([ - node.test.kind === "retif" ? indent(printedTest) : printedTest, - indent(concat(parts)), - breakClosingParens ? softline : "", - ]) - ); + return maybeGroup([ + node.test.kind === "retif" ? indent(printedTest) : printedTest, + indent(parts), + breakClosingParens ? softline : "", + ]); } case "boolean": return node.value ? "true" : "false"; case "number": return printNumber(node.value); case "string": { - const parent = path.getParentNode(); + const { parent } = path; if (parent.kind === "encapsedpart") { - const parentParent = path.getParentNode(1); + const parentParent = path.grandparent; let closingTagIndentation = 0; - const flexible = isMinVersion(options.phpVersion, "7.3"); + const flexible = options.phpVersion >= 7.3; let linebreak = literalline; if (parentParent.type === "heredoc") { linebreak = flexible ? hardline : literalline; - const lines = parentParent.raw.split(/\r?\n/g); + const lines = parentParent.raw.split("\n"); closingTagIndentation = lines[lines.length - 1].search(/\S/); if (closingTagIndentation === -1) { closingTagIndentation = lines[lines.length - 2].search(/\S/); @@ -2823,7 +2689,7 @@ function printNode(path, options, print) { return join( linebreak, node.raw - .split(/\r?\n/g) + .split("\n") .map((s, i) => i > 0 || node.loc.start.column === 0 ? s.substring(closingTagIndentation) @@ -2849,83 +2715,78 @@ function printNode(path, options, print) { stringValue = stringValue.substr(0, stringValue.length - 1); } - return concat([ + return [ node.raw[0] === "b" ? "b" : "", quote, - join(literalline, stringValue.split(/\r?\n/g)), + join(literalline, stringValue.split("\n")), quote, - ]); + ]; + } + case "intersectiontype": { + return printComposedTypes(path, print, "&"); } case "uniontype": { - return group( - concat( - path.map( - (uPath, i) => - concat(i === 0 ? [path.call(print)] : ["|", path.call(print)]), - "types" - ) - ) - ); + return printComposedTypes(path, print, "|"); } case "encapsedpart": { const open = (node.syntax === "simple" && node.curly) || node.syntax === "complex" - ? concat([node.curly ? "$" : "", "{"]) + ? [node.curly ? "$" : "", "{"] : ""; const close = (node.syntax === "simple" && node.curly) || node.syntax === "complex" ? "}" : ""; - return concat([open, path.call(print, "expression"), close]); + return [open, print("expression"), close]; } case "encapsed": switch (node.type) { case "string": case "shell": case "heredoc": { - const flexible = isMinVersion(options.phpVersion, "7.3"); + const flexible = options.phpVersion >= 7.3; const linebreak = flexible ? hardline : literalline; - return concat([ + return [ getEncapsedQuotes(node), // Respect `indent` for `heredoc` nodes node.type === "heredoc" ? linebreak : "", - concat(path.map(print, "value")), + ...path.map(print, "value"), getEncapsedQuotes(node, { opening: false }), node.type === "heredoc" && docShouldHaveTrailingNewline(path) ? hardline : "", - ]); + ]; } - // istanbul ignore next + /* c8 ignore next 2 */ default: - return `Have not implemented kind ${node.type} yet.`; + throw new Error(`Have not implemented kind ${node.type} yet.`); } case "inline": return join( literalline, - node.raw.replace("___PSEUDO_INLINE_PLACEHOLDER___", "").split(/\r?\n/g) + node.raw.replace("___PSEUDO_INLINE_PLACEHOLDER___", "").split("\n") ); case "magic": return node.value; case "nowdoc": { - const flexible = isMinVersion(options.phpVersion, "7.3"); + const flexible = options.phpVersion >= 7.3; const linebreak = flexible ? hardline : literalline; - return concat([ + return [ "<<<'", node.label, "'", linebreak, - join(linebreak, node.value.split(/\r?\n/g)), + join(linebreak, node.value.split("\n")), linebreak, node.label, docShouldHaveTrailingNewline(path) ? hardline : "", - ]); + ]; } case "name": - return concat([node.resolution === "rn" ? "namespace\\" : "", node.name]); + return [node.resolution === "rn" ? "namespace\\" : "", node.name]; case "literal": - return path.call(print, "value"); + return print("value"); case "parentreference": return "parent"; case "selfreference": @@ -2937,69 +2798,102 @@ function printNode(path, options, print) { case "nullkeyword": return "null"; case "identifier": { - const parent = path.getParentNode(); + const { parent } = path; if (parent.kind === "method") { node.name = normalizeMagicMethodName(node.name); } - return path.call(print, "name"); + return print("name"); } case "match": { - const arms = path.map((armPath, armIdx) => { + const arms = path.map(() => { + const armNode = path.node; + + const maybeLeadingComment = hasLeadingComment(armNode) + ? [printComments(armNode.leadingComments, options), hardline] + : []; + const maybeTrailingComma = + !path.isLast || options.trailingCommaPHP ? "," : ""; + const maybeTrailingComment = hasTrailingComment(armNode) + ? [ + " ", + printComments( + armNode.comments.filter((c) => c.trailing), + options + ), + ] + : []; + const conds = - armPath.getValue().conds === null + armNode.conds === null ? "default" - : concat( - armPath.map( - (condPath, condIdx) => - group( - concat( - condIdx > 0 - ? [",", line, print(condPath)] - : [print(condPath)] - ) - ), - "conds" - ) + : path.map( + ({ isFirst }) => [",", line, print()].slice(isFirst ? 2 : 0), + "conds" ); - const body = armPath.call(print, "body"); - return concat( - armIdx > 0 - ? [", ", line, conds, " => ", body] - : [line, conds, " => ", body] - ); + const body = print("body"); + const maybeEmptyLineBetweenArms = + !path.isFirst && + isPreviousLineEmpty(options.originalText, locStart(armNode)) + ? hardline + : ""; + + return [ + "", + hardline, + maybeEmptyLineBetweenArms, + ...maybeLeadingComment, + group([ + group([conds, indent(line)]), + "=> ", + body, + maybeTrailingComma, + ...maybeTrailingComment, + ]), + ].slice(!path.isFirst ? 0 : 1); }, "arms"); - return group( - concat([ - "match (", - group( - concat([ - softline, - indent(concat([path.call(print, "cond")])), - softline, - ]) - ), - ") {", - indent(concat(arms)), - " ", - softline, - "}", - ]) - ); + return group([ + "match (", + group([indent([softline, print("cond")]), softline]), + ") {", + group(indent([...arms])), + " ", + softline, + "}", + ]); } case "noop": - return node.comments - ? comments.printComments(path.getValue().comments, options) - : ""; + return node.comments ? printComments(node.comments, options) : ""; case "namedargument": - return concat([node.name, ": ", path.call(print, "value")]); + return [node.name, ": ", print("value")]; + + case "enumcase": + return group([ + "case ", + print("name"), + node.value + ? [ + " =", + printAssignmentRight( + node.name, + node.value, + print("value"), + false, + options + ), + ] + : "", + ]); + case "variadicplaceholder": + return "..."; + + /* c8 ignore next 3 */ case "error": default: - // istanbul ignore next - return `Have not implemented kind ${node.kind} yet.`; + throw new Error(`Have not implemented kind '${node.kind}' yet.`); } } -module.exports = genericPrint; +export default genericPrint; diff --git a/src/util.js b/src/util.mjs similarity index 80% rename from src/util.js rename to src/util.mjs index 30a0d2078..b4bf9e473 100644 --- a/src/util.js +++ b/src/util.mjs @@ -1,39 +1,7 @@ -"use strict"; +import { util as prettierUtil } from "prettier"; +import { locStart } from "./loc.mjs"; -const { - hasNewline, - skipEverythingButNewLine, - skipNewline, - isNextLineEmpty: _isNextLineEmpty, - isPreviousLineEmpty: _isPreviousLineEmpty, - getNextNonSpaceNonCommentCharacterIndex: _getNextNonSpaceNonCommentCharacterIndex, -} = require("prettier").util; - -const prettierVersion = require("prettier").version; - -function lookupIfPrettier2(options, prop) { - return parseInt(prettierVersion[0]) > 1 ? options[prop] : options; -} - -function isPreviousLineEmpty(text, node, options) { - return _isPreviousLineEmpty( - text, - node, - lookupIfPrettier2(options, "locStart") - ); -} - -function isNextLineEmpty(text, node, options) { - return _isNextLineEmpty(text, node, lookupIfPrettier2(options, "locEnd")); -} - -function getNextNonSpaceNonCommentCharacterIndex(text, node, options) { - return _getNextNonSpaceNonCommentCharacterIndex( - text, - node, - lookupIfPrettier2(options, "locEnd") - ); -} +const { hasNewline, skipEverythingButNewLine, skipNewline } = prettierUtil; function printNumber(rawNumber) { return ( @@ -53,49 +21,47 @@ function printNumber(rawNumber) { } // http://php.net/manual/en/language.operators.precedence.php -const PRECEDENCE = {}; -[ - ["or"], - ["xor"], - ["and"], +const PRECEDENCE = new Map( [ - "=", - "+=", - "-=", - "*=", - "**=", - "/=", - ".=", - "%=", - "&=", - "|=", - "^=", - "<<=", - ">>=", - ], - ["??"], - ["||"], - ["&&"], - ["|"], - ["^"], - ["&"], - ["==", "===", "!=", "!==", "<>", "<=>"], - ["<", ">", "<=", ">="], - [">>", "<<"], - ["+", "-", "."], - ["*", "/", "%"], - ["!"], - ["instanceof"], - ["++", "--", "~"], - ["**"], -].forEach((tier, i) => { - tier.forEach((op) => { - PRECEDENCE[op] = i; - }); -}); - -function getPrecedence(op) { - return PRECEDENCE[op]; + ["or"], + ["xor"], + ["and"], + [ + "=", + "+=", + "-=", + "*=", + "**=", + "/=", + ".=", + "%=", + "&=", + "|=", + "^=", + "<<=", + ">>=", + ], + ["??"], + ["||"], + ["&&"], + ["|"], + ["^"], + ["&"], + ["==", "===", "!=", "!==", "<>", "<=>"], + ["<", ">", "<=", ">="], + [">>", "<<"], + ["+", "-", "."], + ["*", "/", "%"], + ["!"], + ["instanceof"], + ["++", "--", "~"], + ["**"], + ].flatMap((operators, index) => + operators.map((operator) => [operator, index]) + ) +); +function getPrecedence(operator) { + return PRECEDENCE.get(operator); } const equalityOperators = ["==", "!=", "===", "!==", "<>", "<=>"]; @@ -165,6 +131,7 @@ function nodeHasStatement(node) { "program", "namespace", "class", + "enum", "interface", "trait", "traituse", @@ -187,14 +154,6 @@ function getNodeListProperty(node) { return Array.isArray(body) ? body : null; } -function getParentNodeListProperty(path) { - const parent = path.getParentNode(); - if (!parent) { - return null; - } - return getNodeListProperty(parent); -} - function getLast(arr) { if (arr.length > 0) { return arr[arr.length - 1]; @@ -209,17 +168,8 @@ function getPenultimate(arr) { return null; } -function isLastStatement(path) { - const body = getParentNodeListProperty(path); - if (!body) { - return true; - } - const node = path.getValue(); - return body[body.length - 1] === node; -} - function isFirstChildrenInlineNode(path) { - const node = path.getValue(); + const { node } = path; if (node.kind === "program") { const children = getNodeListProperty(node); @@ -375,8 +325,7 @@ function docShouldHaveTrailingNewline(path, recurse = 0) { } function lineShouldEndWithSemicolon(path) { - const node = path.getValue(); - const parentNode = path.getParentNode(); + const { node, parent: parentNode } = path; if (!parentNode) { return false; } @@ -405,7 +354,7 @@ function lineShouldEndWithSemicolon(path) { return true; } if (node.kind === "method") { - const parent = path.getParentNode(); + const { parent } = path; if (parent && parent.kind === "interface") { return true; } @@ -420,6 +369,7 @@ function lineShouldEndWithSemicolon(path) { "traitalias", "goto", "constantstatement", + "enumcase", "global", "static", "echo", @@ -432,7 +382,7 @@ function lineShouldEndWithSemicolon(path) { } function fileShouldEndWithHardline(path) { - const node = path.getValue(); + const { node } = path; const isProgramNode = node.kind === "program"; const lastNode = node.children && getLast(node.children); @@ -474,24 +424,17 @@ function hasDanglingComments(node) { ); } -function hasLeadingComment(node) { - return node.comments && node.comments.some((comment) => comment.leading); -} - -function hasTrailingComment(node) { - return node.comments && node.comments.some((comment) => comment.trailing); -} - function isLookupNode(node) { return ( node.kind === "propertylookup" || + node.kind === "nullsafepropertylookup" || node.kind === "staticlookup" || node.kind === "offsetlookup" ); } function shouldPrintHardLineAfterStartInControlStructure(path) { - const node = path.getValue(); + const { node } = path; if (["try", "catch"].includes(node.kind)) { return false; @@ -501,7 +444,7 @@ function shouldPrintHardLineAfterStartInControlStructure(path) { } function shouldPrintHardLineBeforeEndInControlStructure(path) { - const node = path.getValue(); + const { node } = path; if (["try", "catch"].includes(node.kind)) { return true; @@ -539,23 +482,6 @@ function getAlignment(text) { return lastLine.length - lastLine.trimLeft().length + 1; } -function getNextNode(path, node) { - const parent = path.getParentNode(); - const children = getNodeListProperty(parent); - - if (!children) { - return null; - } - - const index = children.indexOf(node); - - if (index === -1) { - return null; - } - - return parent.children[index + 1]; -} - function isProgramLikeNode(node) { return ["program", "declare", "namespace"].includes(node.kind); } @@ -602,7 +528,7 @@ function useDoubleQuote(node, options) { } function hasEmptyBody(path, name = "body") { - const node = path.getValue(); + const { node } = path; return ( node[name] && @@ -612,7 +538,7 @@ function hasEmptyBody(path, name = "body") { ); } -function isNextLineEmptyAfterNamespace(text, node, locStart) { +function isNextLineEmptyAfterNamespace(text, node) { let idx = locStart(node); idx = skipEverythingButNewLine(text, idx); idx = skipNewline(text, idx); @@ -672,40 +598,130 @@ const magicMethods = [ "__clone", "__debugInfo", ]; -const MagicMethodsMap = magicMethods.reduce((map, obj) => { - map[obj.toLowerCase()] = obj; - - return map; -}, {}); +const magicMethodsMap = new Map( + magicMethods.map((name) => [name.toLowerCase(), name]) +); function normalizeMagicMethodName(name) { const loweredName = name.toLowerCase(); - if (MagicMethodsMap[loweredName]) { - return MagicMethodsMap[loweredName]; + if (magicMethodsMap.has(loweredName)) { + return magicMethodsMap.get(loweredName); } return name; } -module.exports = { +/** + * @param {string[]} kindsArray + * @returns {(node: Node | Comment) => Boolean} + */ +function createTypeCheckFunction(kindsArray) { + const kinds = new Set(kindsArray); + return (node) => kinds.has(node?.kind); +} + +const isSingleWordType = createTypeCheckFunction([ + "variadicplaceholder", + "namedargument", + "nullkeyword", + "identifier", + "parameter", + "variable", + "variadic", + "boolean", + "literal", + "number", + "string", + "clone", + "cast", +]); + +const isArrayExpression = createTypeCheckFunction(["array"]); +const isCallLikeExpression = createTypeCheckFunction([ + "nullsafepropertylookup", + "propertylookup", + "staticlookup", + "offsetlookup", + "call", + "new", +]); +const isArrowFuncExpression = createTypeCheckFunction(["arrowfunc"]); + +function getChainParts(node, prev = []) { + const parts = prev; + if (isCallLikeExpression(node)) { + parts.push(node); + } + + if (!node.what) { + return parts; + } + + return getChainParts(node.what, parts); +} + +function isSimpleCallArgument(node, depth = 2) { + if (depth <= 0) { + return false; + } + + const isChildSimple = (child) => isSimpleCallArgument(child, depth - 1); + + if (isSingleWordType(node)) { + return true; + } + + if (isArrayExpression(node)) { + return node.items.every((x) => x === null || isChildSimple(x)); + } + + if (isCallLikeExpression(node)) { + const parts = getChainParts(node); + parts.unshift(); + + return ( + parts.length <= depth && + parts.every((node) => + isLookupNode(node) + ? isChildSimple(node.offset) + : node.arguments.every(isChildSimple) + ) + ); + } + + if (isArrowFuncExpression(node)) { + return ( + node.arguments.length <= depth && node.arguments.every(isChildSimple) + ); + } + + return false; +} + +function memoize(fn) { + const cache = new Map(); + return (key) => { + if (!cache.has(key)) { + cache.set(key, fn(key)); + } + return cache.get(key); + }; +} + +export { printNumber, getPrecedence, isBitwiseOperator, shouldFlatten, nodeHasStatement, - getNodeListProperty, - getParentNodeListProperty, getLast, getPenultimate, - isLastStatement, getBodyFirstChild, lineShouldEndWithSemicolon, fileShouldEndWithHardline, maybeStripLeadingSlashFromUse, hasDanglingComments, - hasLeadingComment, - hasTrailingComment, docShouldHaveTrailingNewline, isLookupNode, isFirstChildrenInlineNode, @@ -721,9 +737,7 @@ module.exports = { shouldPrintHardlineBeforeTrailingComma, isDocNode, getAncestorNode, - getNextNode, normalizeMagicMethodName, - isPreviousLineEmpty, - isNextLineEmpty, - getNextNonSpaceNonCommentCharacterIndex, + isSimpleCallArgument, + memoize, }; diff --git a/tests/array/__snapshots__/jsfmt.spec.js.snap b/tests/array/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/array/__snapshots__/jsfmt.spec.js.snap rename to tests/array/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/array/jsfmt.spec.js b/tests/array/jsfmt.spec.js deleted file mode 100644 index 3073bc63a..000000000 --- a/tests/array/jsfmt.spec.js +++ /dev/null @@ -1,2 +0,0 @@ -run_spec(__dirname, ["php"]); -run_spec(__dirname, ["php"], { phpVersion: "5.3" }); diff --git a/tests/array/jsfmt.spec.mjs b/tests/array/jsfmt.spec.mjs new file mode 100644 index 000000000..d43490aab --- /dev/null +++ b/tests/array/jsfmt.spec.mjs @@ -0,0 +1,2 @@ +run_spec(import.meta, ["php"]); +run_spec(import.meta, ["php"], { phpVersion: "5.3" }); diff --git a/tests/arrowfunc/__snapshots__/jsfmt.spec.js.snap b/tests/arrowfunc/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/arrowfunc/__snapshots__/jsfmt.spec.js.snap rename to tests/arrowfunc/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/arrowfunc/jsfmt.spec.js b/tests/arrowfunc/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/arrowfunc/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/arrowfunc/jsfmt.spec.mjs b/tests/arrowfunc/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/arrowfunc/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/assign/__snapshots__/jsfmt.spec.js.snap b/tests/assign/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/assign/__snapshots__/jsfmt.spec.js.snap rename to tests/assign/__snapshots__/jsfmt.spec.mjs.snap index 27dfa6187..78d9bd542 100644 --- a/tests/assign/__snapshots__/jsfmt.spec.js.snap +++ b/tests/assign/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`assign.php 1`] = ` ====================================options===================================== @@ -233,14 +233,14 @@ $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable = $veryVeryVeryVeryVer $obj->property = $obj->oneProperty = $obj->twoPeroperty = 0; $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = 0; $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; -$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = (new MyClass())->call( - $arg +$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = new MyClass()->call( + $arg, ); $obj->loooooooooooong->lookup = $this->getRequest()->getParam( - "instance-resource-id" + "instance-resource-id", ); $obj->loooooooooooong->lookup = (int) $this->getRequest()->getParam( - "instance-resource-id" + "instance-resource-id", ); $component = @@ -251,7 +251,7 @@ $component = Foo::$insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = $a::$insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; -$component = (new Foo()) +$component = new Foo() ->insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = (clone $a) ->insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; @@ -266,7 +266,7 @@ $component = Foo::$insertReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = $a::$insertReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName; -$component = (new Foo()) +$component = new Foo() ->insertReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = (clone $a) ->insertReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName; diff --git a/tests/assign/jsfmt.spec.js b/tests/assign/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/assign/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/assign/jsfmt.spec.mjs b/tests/assign/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/assign/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/assignref/__snapshots__/jsfmt.spec.js.snap b/tests/assignref/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/assignref/__snapshots__/jsfmt.spec.js.snap rename to tests/assignref/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/assignref/jsfmt.spec.js b/tests/assignref/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/assignref/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/assignref/jsfmt.spec.mjs b/tests/assignref/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/assignref/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/attributes-trail-comma/__snapshots__/jsfmt.spec.mjs.snap b/tests/attributes-trail-comma/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..89c78ae16 --- /dev/null +++ b/tests/attributes-trail-comma/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,55 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`attributes-trail-comma.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== + $r * 2; + } + + // Testing S + #[S] +//Testing S-T +#[T] //Testing T + + private function u() { + return #[V] function() { return null; }; + } + +} + +#[W('a', null, 'looooong','paraaaams','list','aaaaaaaaaaaaa','vvvvvvvvvvvv','cccccccccc','eeeeeeeeeee'), X()] function Y(#[ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(12345678, 1234578)] string $_):string {return new #[NON, Anon()] class {};} + +#[IA('interface'),\\Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong\\Namespace\\WithStuff\\IB] +interface IC { + #[ID] const IE = 123; + + #[IG, IH('abc'),IJ()] public function ik(); +} + +// issue #1820 +final class DomainEventMessage +{ + #[Some(type: "some_type")] + public function getPayload(): string + { + return "444"; + } + + public function getPayload1(): string + { + return "555"; + } +} + +#[ + Attr1(Attr1::FOO | Attr1::BAR), + Attr2(-20 * 5 + 10) +] +class A {} + +class ValueModel +{ + #[ + Assert\\NotBlank(allowNull: false, groups: ['foo']), + Assert\\Length(max: 255, groups: ['foo']), + ] + public ?string $value = null; +} + +class Test +{ + /** + * Method with an attribute. + * @param string $foo + * @return string + */ + #[Pure] + public function withAttribute(string $foo): string + { + return $foo; + } + +} + +class ParamCommentFunctionAnnotation { + + #[Foo] + function bar( + int $a, // parameter comment + int $b, + ) { + return $a + $b; + } + + #[Foo] + function bar2( + int $a, + int $middle, // parameter comment + int $b, + ) { + return $a + $middle + $b; + } + +} + +=====================================output===================================== + $r * 2; + } //Testing T + + // Testing S + //Testing S-T + #[S] + #[T] + private function u() + { + return #[V] function () { + return null; + }; + } +} + +#[ + W( + "a", + null, + "looooong", + "paraaaams", + "list", + "aaaaaaaaaaaaa", + "vvvvvvvvvvvv", + "cccccccccc", + "eeeeeeeeeee", + ), + X, +] +function Y( + #[ + ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ( + 12345678, + 1234578, + ), + ] + string $_, +): string { + return new #[NON, Anon] class {}; +} + +#[ + IA("interface"), + \\Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong\\Namespace\\WithStuff\\IB, +] +interface IC +{ + #[ID] + const IE = 123; + + #[IG, IH("abc"), IJ] + public function ik(); +} + +// issue #1820 +final class DomainEventMessage +{ + #[Some(type: "some_type")] + public function getPayload(): string + { + return "444"; + } + + public function getPayload1(): string + { + return "555"; + } +} + +#[Attr1(Attr1::FOO | Attr1::BAR), Attr2(-20 * 5 + 10)] +class A {} + +class ValueModel +{ + #[ + Assert\\NotBlank(allowNull: false, groups: ["foo"]), + Assert\\Length(max: 255, groups: ["foo"]), + ] + public ?string $value = null; +} + +class Test +{ + /** + * Method with an attribute. + * @param string $foo + * @return string + */ + #[Pure] + public function withAttribute(string $foo): string + { + return $foo; + } +} + +class ParamCommentFunctionAnnotation +{ + #[Foo] + function bar( + int $a, // parameter comment + int $b, + ) { + return $a + $b; + } + + #[Foo] + function bar2( + int $a, + int $middle, // parameter comment + int $b, + ) { + return $a + $middle + $b; + } +} + +================================================================================ +`; diff --git a/tests/attributes/attributes.php b/tests/attributes/attributes.php new file mode 100644 index 000000000..bb93d757a --- /dev/null +++ b/tests/attributes/attributes.php @@ -0,0 +1,105 @@ + $r * 2; + } + + // Testing S + #[S] +//Testing S-T +#[T] //Testing T + + private function u() { + return #[V] function() { return null; }; + } + +} + +#[W('a', null, 'looooong','paraaaams','list','aaaaaaaaaaaaa','vvvvvvvvvvvv','cccccccccc','eeeeeeeeeee'), X()] function Y(#[ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(12345678, 1234578)] string $_):string {return new #[NON, Anon()] class {};} + +#[IA('interface'),\Looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong\Namespace\WithStuff\IB] +interface IC { + #[ID] const IE = 123; + + #[IG, IH('abc'),IJ()] public function ik(); +} + +// issue #1820 +final class DomainEventMessage +{ + #[Some(type: "some_type")] + public function getPayload(): string + { + return "444"; + } + + public function getPayload1(): string + { + return "555"; + } +} + +#[ + Attr1(Attr1::FOO | Attr1::BAR), + Attr2(-20 * 5 + 10) +] +class A {} + +class ValueModel +{ + #[ + Assert\NotBlank(allowNull: false, groups: ['foo']), + Assert\Length(max: 255, groups: ['foo']), + ] + public ?string $value = null; +} + +class Test +{ + /** + * Method with an attribute. + * @param string $foo + * @return string + */ + #[Pure] + public function withAttribute(string $foo): string + { + return $foo; + } + +} + +class ParamCommentFunctionAnnotation { + + #[Foo] + function bar( + int $a, // parameter comment + int $b, + ) { + return $a + $b; + } + + #[Foo] + function bar2( + int $a, + int $middle, // parameter comment + int $b, + ) { + return $a + $middle + $b; + } + +} diff --git a/tests/attributes/jsfmt.spec.mjs b/tests/attributes/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/attributes/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/bin/__snapshots__/jsfmt.spec.js.snap b/tests/bin/__snapshots__/jsfmt.spec.mjs.snap similarity index 99% rename from tests/bin/__snapshots__/jsfmt.spec.js.snap rename to tests/bin/__snapshots__/jsfmt.spec.mjs.snap index cd784e8db..787a4f6d2 100644 --- a/tests/bin/__snapshots__/jsfmt.spec.js.snap +++ b/tests/bin/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`bin.php 1`] = ` ====================================options===================================== @@ -455,7 +455,7 @@ function f() { if ( get_option( - "woocommerce_product_cart_actions_notification_more_cart" + "woocommerce_product_cart_actions_notification_more_cart", ) === "yes" && count($cartItems) > 0 ) { @@ -490,7 +490,7 @@ call( "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVery" ? 1 : 2, - "arg" + "arg", ); $var = @@ -660,13 +660,13 @@ $var = call($var > $someOtherReallyReallyLongVariable ? true : false); $var = call( $someOtherReallyReallyLongVariable > $someOtherReallyReallyLongVariable ? true - : false + : false, ); $var = call( $someOtherReallyReallyReallyReallyReallyReallyLongVariable > $someOtherReallyReallyReallyReallyReallyReallyLongVariable ? true - : false + : false, ); return $var > $var ? true : false; @@ -686,7 +686,7 @@ func( $glimseGlyphsHazardNoopsTieTie === averredBathersBoxroomBuggyNurl && $anodyneCondosMalateOverateRetinol ? $annularCooeedSplicesWalksWayWay - : $kochabCooieGameOnOboleUnweave + : $kochabCooieGameOnOboleUnweave, ); $var = $a ?? $b; @@ -714,7 +714,7 @@ $var = call( $someOtherReallyReallyLongVariable, $someOtherReallyReallyLongVariable, - $someOtherReallyReallyLongVariable + $someOtherReallyReallyLongVariable, )))); $var = $someOtherReallyReallyLongVariable ?? diff --git a/tests/bin/jsfmt.spec.js b/tests/bin/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/bin/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/bin/jsfmt.spec.mjs b/tests/bin/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/bin/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/block/__snapshots__/jsfmt.spec.js.snap b/tests/block/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/block/__snapshots__/jsfmt.spec.js.snap rename to tests/block/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/block/jsfmt.spec.js b/tests/block/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/block/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/block/jsfmt.spec.mjs b/tests/block/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/block/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/boolean/__snapshots__/jsfmt.spec.js.snap b/tests/boolean/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/boolean/__snapshots__/jsfmt.spec.js.snap rename to tests/boolean/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/boolean/jsfmt.spec.js b/tests/boolean/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/boolean/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/boolean/jsfmt.spec.mjs b/tests/boolean/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/boolean/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/brace-style/__snapshots__/jsfmt.spec.js.snap b/tests/brace-style/__snapshots__/jsfmt.spec.mjs.snap similarity index 68% rename from tests/brace-style/__snapshots__/jsfmt.spec.js.snap rename to tests/brace-style/__snapshots__/jsfmt.spec.mjs.snap index d230e916c..389ba6b8e 100644 --- a/tests/brace-style/__snapshots__/jsfmt.spec.js.snap +++ b/tests/brace-style/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`classes.php 1`] = ` ====================================options===================================== @@ -43,95 +43,65 @@ $class = new class extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryV =====================================output===================================== getValue() . "\\n"; + } +} + +class Foo +{ + function hello() + { + return "hello"; + } + + function hello_1($arg) + { + return "hello"; + } + + function bar($arg = '') + { + echo "In bar(); argument was '$arg'.
\\n"; + } + + function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() + { + return "hello"; + } + + function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName(): ?string + { + return "hello"; + } + + function reeeeeeeeeeaaaaaaaallllllllyyyyyy_llloooooooonnnnnnggggg($soooooooooooo_looooooooonnnng, $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr) { + return $soooooooooooo_looooooooonnnng; + } + + function type_hinting_test(array $array_test, callable $callable_test, bool $bool_test, float $float_test, iterable $iterable_test, int $int_test, string $string_test = '') { + return $int_test; + } + + function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongNameOther( + $string, + $max_length, + // @codingStandardsIgnoreLine + $ellipses = ' … ', // the spaces are non-breaking spaces + &$flag = null + ) { + return "hello"; + } + + static function staticmethod() {} + + public static function ellipsizeMiddle( + $string, + $max_length, + // @codingStandardsIgnoreLine + $ellipses = ' … ', // the spaces are non-breaking spaces + &$flag = null + ) { + $string = trim($string); + } + + public static function hello_2() {} + + public static function hello_3($var = 1) {} + + public static function hello_4($var = 1, $other_var = 2, $other_other_other_var = 3) {} + + public static function hello_5($var = 1, $other_var = 2, $other_other_other_var = 3): ?string {} + + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() {} + + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName($var = 1) {} + + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName($var = 1, $other_var = 2, $other_other_other_var = 3) {} + + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName($var = 1, $other_var = 2, $other_other_other_var = 3) : ?string {} + + public static function newlines( + $var = 1, + + $other_var = 2 + ) {} + + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( + $var = 1, + + $other_var = 2 + ) {} +} + +=====================================output===================================== +getValue() . "\\n"; + } +} + +class Foo +{ + function hello() + { + return "hello"; + } + + function hello_1($arg) + { + return "hello"; + } + + function bar($arg = "") + { + echo "In bar(); argument was '$arg'.
\\n"; + } + + function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() + { + return "hello"; + } + + function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName(): ?string + { + return "hello"; + } + + function reeeeeeeeeeaaaaaaaallllllllyyyyyy_llloooooooonnnnnnggggg( + $soooooooooooo_looooooooonnnng, + $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr, + ) { + return $soooooooooooo_looooooooonnnng; + } -================================================================================ -`; + function type_hinting_test( + array $array_test, + callable $callable_test, + bool $bool_test, + float $float_test, + iterable $iterable_test, + int $int_test, + string $string_test = "", + ) { + return $int_test; + } -exports[`functions.php 3`] = ` -====================================options===================================== -braceStyle: "1tbs" -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -func(); func( $arg1,$arg2 ,$arg3, $arg4 , $arg5 ); $foo -> bar ( $arg1,$arg2 ,$arg3, $arg4 , $arg5 ) ; @@ -350,12 +351,18 @@ $obj = call('return new class($value) } };'); +$callable = strlen(...); +$callable = $item->doSomething(...); +$callable = $item::doSomething(...); +$callable = Foo::doSomething(...); + =====================================output===================================== func(); func($arg1, $arg2, $arg3, $arg4, $arg5); $foo->bar($arg1, $arg2, $arg3, $arg4, $arg5); @@ -379,7 +386,7 @@ $db->Execute( $somewhatLongParameterX, $somewhatLongParameterXYZ, ], - $sql + $sql, ); $app->get("/hello/{name}", function ($name) use ($app) { @@ -388,19 +395,19 @@ $app->get("/hello/{name}", function ($name) use ($app) { $this->something->method( $argument, - $this->more->stuff($this->even->more->things->complicatedMethod()) + $this->more->stuff($this->even->more->things->complicatedMethod()), ); $this->something->method( $this->more->stuff($this->even->more->things->complicatedMethod()), - $argument + $argument, ); $this->something->method( $argument, $otherArgument, ["foo" => "bar", "baz" => "buzz"], - $this->even->more->things->complicatedMethod() + $this->even->more->things->complicatedMethod(), ); $this->files->put($path, $this->expiration($minutes) . serialize($value), true); @@ -425,7 +432,7 @@ $this->filter([ $this->assertEquals( ["First", "Second", "Taylor", "Mohamed", "Jeffrey", "Abigail", "Lydia"], - $results + $results, ); $this->assertEquals(["First"], $results); @@ -444,7 +451,7 @@ $some->other->thing( "foo" => "bar", "buzz" => $this->is->nested([12, 34, 45, 67, 89]), ], - [11323123, 1231, 13231233243, 324234234] + [11323123, 1231, 13231233243, 324234234], ); $foo->bar( @@ -452,12 +459,12 @@ $foo->bar( function ($arg2) use ($var1) { // body }, - $arg3 + $arg3, ); $packages = array_merge( idx($composer, "require", []), - idx($composer, "require-dev", []) + idx($composer, "require-dev", []), ); if ( @@ -467,7 +474,7 @@ if ( function ($acc, $tmp) { return $acc ^ $tmp; }, - 0 + 0, ) ) { return []; @@ -477,21 +484,21 @@ implode( ", ", array_map(function ($f) { return $f; - }, array_merge($arr1, $arr2, $arr3)) + }, array_merge($arr1, $arr2, $arr3)), ); call( function () { return thing(); }, - 1 ? 2 : 3 + 1 ? 2 : 3, ); call( function () { return thing(); }, - something() ? someOtherThing() : somethingElse(true, 0) + something() ? someOtherThing() : somethingElse(true, 0), ); call( @@ -500,7 +507,7 @@ call( }, something($longArgumentName, $anotherLongArgumentName) ? someOtherThing() - : somethingElse(true, 0) + : somethingElse(true, 0), ); call( @@ -511,10 +518,10 @@ call( $longArgumentName, $anotherLongArgumentName, $anotherLongArgumentName, - $anotherLongArgumentName + $anotherLongArgumentName, ) ? someOtherThing() - : somethingElse(true, 0) + : somethingElse(true, 0), ); array_map( @@ -523,7 +530,7 @@ array_map( }, is_array($attributes["alignment"]) ? $attributes["alignment"] - : explode(" ", $attributes["alignment"]) + : explode(" ", $attributes["alignment"]), ); call(' @@ -535,7 +542,7 @@ call( ' string string -string' +string', ); call( @@ -543,7 +550,7 @@ call( string string string', - $a + $a, ); call( @@ -551,7 +558,7 @@ call( ' string string -string' +string', ); call(" @@ -563,7 +570,7 @@ call( " string string -string" +string", ); call( @@ -571,7 +578,7 @@ call( string string string", - $a + $a, ); call( @@ -579,7 +586,7 @@ call( " string string -string" +string", ); $a->call(' @@ -591,7 +598,7 @@ $a->bar->call( ' string string -string' +string', ); $a->call(' @@ -608,14 +615,14 @@ $a->call( string string string', - $c + $c, )->call( $a, ' string string string', - $c + $c, ); call("string $var string"); @@ -629,7 +636,7 @@ call( "string string string -$var" +$var", ); call(\`string $var string\`); @@ -643,54 +650,58 @@ call( \`string string string -$var\` +$var\`, ); call( <<foo)(); @@ -698,18 +709,8 @@ $var = $this->foo()(); $var = ($this->foo->bar)(); $var = $this->foo->bar()(); $var = ($this->foo->bar->baz->foo->bar->baz)(); -$var = $this->foo() - ->bar() - ->baz() - ->foo() - ->bar() - ->baz()(); -$var = ($this->foo() - ->bar() - ->baz() - ->foo() - ->bar() - ->baz)(); +$var = $this->foo()->bar()->baz()->foo()->bar()->baz()(); +$var = ($this->foo()->bar()->baz()->foo()->bar()->baz)(); $var = $this["foo"](); $var = $this["foo"]["bar"](); $var = ($this::$foo)(); @@ -726,10 +727,7 @@ $var = ((["Foo", "bar"])->bar)(); $var = ($var->foo)()(); $var = ($var->foo)()(); $var = (($var->foo)()->bar)(); -$var = ((($var - ->foo)() - ->bar)() - ->baz)(); +$var = ((($var->foo)()->bar)()->baz)(); $obj = call('return new class($value) { @@ -757,5 +755,10 @@ $obj = call('return new class($value) } };'); +$callable = strlen(...); +$callable = $item->doSomething(...); +$callable = $item::doSomething(...); +$callable = Foo::doSomething(...); + ================================================================================ `; diff --git a/tests/call/call.php b/tests/call/call.php index 6c7966da5..6e2f5a11d 100644 --- a/tests/call/call.php +++ b/tests/call/call.php @@ -3,6 +3,7 @@ func($a, $b, $c); func(...$a); func($a, ...$b); +func(...$a, ...$b); $foo->func(); func( $arg1,$arg2 ,$arg3, $arg4 , $arg5 ); $foo -> bar ( $arg1,$arg2 ,$arg3, $arg4 , $arg5 ) ; @@ -341,3 +342,8 @@ public function setFoo($foo) $this->foo = $foo; } };'); + +$callable = strlen(...); +$callable = $item->doSomething(...); +$callable = $item::doSomething(...); +$callable = Foo::doSomething(...); diff --git a/tests/call/jsfmt.spec.js b/tests/call/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/call/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/call/jsfmt.spec.mjs b/tests/call/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/call/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/case/__snapshots__/jsfmt.spec.js.snap b/tests/case/__snapshots__/jsfmt.spec.mjs.snap similarity index 91% rename from tests/case/__snapshots__/jsfmt.spec.js.snap rename to tests/case/__snapshots__/jsfmt.spec.mjs.snap index 4a591ad01..8b25cbdaf 100644 --- a/tests/case/__snapshots__/jsfmt.spec.js.snap +++ b/tests/case/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`case.php 1`] = ` ====================================options===================================== @@ -254,9 +254,7 @@ namespace Vendor\\Package; use FooClass; use BarClass as Bar; -interface iTemplate -{ -} +interface iTemplate {} abstract class AbstractClass { @@ -334,7 +332,7 @@ final class MyClass extends Bar implements iTemplate break; } - while (list($key, $value) = foo($arr)) { + while ([$key, $value] = foo($arr)) { if (!($key % 2)) { continue; } @@ -365,7 +363,7 @@ final class MyClass extends Bar implements iTemplate $noArgs_longVars = function () use ( $longVar1, $longerVar2, - $muchLongerVar3 + $muchLongerVar3, ) { // Body }; @@ -486,7 +484,7 @@ final class MyClass extends Bar implements iTemplate object $param6, ClassA $param7, self $param8, - Name\\Space\\ClassA $param8 + Name\\Space\\ClassA $param8, ): void { // Nothing } @@ -569,6 +567,10 @@ class Connection public function __DEBUGINFO() { } + + // Not magic methods, JS Object prototype properties + public function __pRoTo__() {} + public function cOnStRuCtOr() {} } =====================================output===================================== @@ -579,65 +581,39 @@ class Connection class Connection { - public function __construct() - { - } + public function __construct() {} - public function __destruct() - { - } + public function __destruct() {} - public function __call($name, $arguments) - { - } + public function __call($name, $arguments) {} - public static function __callStatic($name, $arguments) - { - } + public static function __callStatic($name, $arguments) {} - public function __get($name) - { - } + public function __get($name) {} - public function __set($name, $value) - { - } + public function __set($name, $value) {} - public function __isset($name) - { - } + public function __isset($name) {} - public function __unset($name) - { - } + public function __unset($name) {} - public function __sleep() - { - } + public function __sleep() {} - public function __wakeup() - { - } + public function __wakeup() {} - public function __toString() - { - } + public function __toString() {} - public function __invoke($x) - { - } + public function __invoke($x) {} - public function __set_state($an_array) - { - } + public function __set_state($an_array) {} - public function __clone() - { - } + public function __clone() {} - public function __debugInfo() - { - } + public function __debugInfo() {} + + // Not magic methods, JS Object prototype properties + public function __pRoTo__() {} + public function cOnStRuCtOr() {} } ================================================================================ diff --git a/tests/case/jsfmt.spec.js b/tests/case/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/case/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/case/jsfmt.spec.mjs b/tests/case/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/case/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/case/magic-methods.php b/tests/case/magic-methods.php index 16b15a7a1..8761bc035 100644 --- a/tests/case/magic-methods.php +++ b/tests/case/magic-methods.php @@ -64,4 +64,8 @@ public function __CLONE() public function __DEBUGINFO() { } + + // Not magic methods, JS Object prototype properties + public function __pRoTo__() {} + public function cOnStRuCtOr() {} } diff --git a/tests/cast/__snapshots__/jsfmt.spec.js.snap b/tests/cast/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/cast/__snapshots__/jsfmt.spec.js.snap rename to tests/cast/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/cast/jsfmt.spec.js b/tests/cast/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/cast/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/cast/jsfmt.spec.mjs b/tests/cast/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/cast/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/class/__snapshots__/jsfmt.spec.js.snap b/tests/class/__snapshots__/jsfmt.spec.mjs.snap similarity index 86% rename from tests/class/__snapshots__/jsfmt.spec.js.snap rename to tests/class/__snapshots__/jsfmt.spec.mjs.snap index d6f17e7d7..6fff7326e 100644 --- a/tests/class/__snapshots__/jsfmt.spec.js.snap +++ b/tests/class/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`anonymous.php 1`] = ` ====================================options===================================== @@ -303,7 +303,7 @@ $app->setLogger( { echo $msg; } - } + }, ); $app->setLogger( new class { @@ -311,7 +311,7 @@ $app->setLogger( { echo $msg; } - } + }, ); var_dump( @@ -324,7 +324,7 @@ var_dump( } use SomeTrait; - } + }, ); class Outer @@ -379,61 +379,45 @@ $class = new class implements MyOtherClass {}; $class = new class implements MyOtherClass, MyOtherClass1, MyOtherClass2 {}; $class = new class implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass {}; $class = new class implements MyOtherClass, MyOtherClass, MyOtherOtherOtherClass, - MyOtherOtherOtherOtherClass -{ -}; + MyOtherOtherOtherOtherClass {}; $class = new class extends MyOtherClass {}; $class = new class extends - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; $class = new class extends MyOtherClass implements MyI {}; $class = new class extends MyOtherClass implements MyI, MyII, MyIII {}; $class = new class extends MyOtherClass implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; $class = new class extends MyOtherClass implements MyInterface, MyOtherInterface, - MyOtherOtherInterface -{ -}; + MyOtherOtherInterface {}; $class = new class extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements MyI -{ -}; + implements MyI {}; $class = new class extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass implements MyI, MyII, - MyIII -{ -}; + MyIII {}; $class = new class extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; $class = new class ( $arg, @@ -443,7 +427,7 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) {}; $class = new class ( @@ -454,7 +438,7 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) implements MyOtherClass {}; $class = new class ( @@ -465,7 +449,7 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) implements MyOtherClass, MyOtherClass1, MyOtherClass2 {}; $class = new class ( @@ -476,11 +460,9 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass {}; $class = new class ( $arg, @@ -490,14 +472,12 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) implements MyOtherClass, MyOtherClass, MyOtherOtherOtherClass, - MyOtherOtherOtherOtherClass -{ -}; + MyOtherOtherOtherOtherClass {}; $class = new class ( $arg, @@ -507,7 +487,7 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends MyOtherClass {}; $class = new class ( @@ -518,11 +498,9 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; $class = new class ( $arg, @@ -532,7 +510,7 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements MyI {}; $class = new class ( @@ -543,7 +521,7 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements MyI, MyII, MyIII {}; $class = new class ( @@ -554,11 +532,9 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; $class = new class ( $arg, @@ -568,13 +544,11 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements MyInterface, MyOtherInterface, - MyOtherOtherInterface -{ -}; + MyOtherOtherInterface {}; $class = new class ( $arg, @@ -584,12 +558,10 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements MyI -{ -}; + implements MyI {}; $class = new class ( $arg, @@ -599,15 +571,13 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass implements MyI, MyII, - MyIII -{ -}; + MyIII {}; $class = new class ( $arg, @@ -617,12 +587,10 @@ $class = new class ( $other_arg, function () { return 1; - } + }, ) extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; ================================================================================ `; @@ -655,6 +623,7 @@ abstract class ReallyReallyReallyLongClassName extends AbstractModelFactoryResou public $test; public $other = 1; public static $staticTest = ['hi']; + public readonly int $readonlytype; static $cache; protected static $_instance; protected $fillable = ['title', 'requester_id', 'type', 'summary', 'proof']; @@ -672,7 +641,7 @@ abstract class ReallyReallyReallyLongClassName extends AbstractModelFactoryResou * * @return \\Some\\Test */ - public function __construct($test, $test_int = null, $test_string = 'hi') { + public function __construct($test, $test_int = null, $test_string = 'hi', readonly int $test_readonly, public readonly string $test_promoted_readonly) { parent::__construct($test_int ?: 1); $this->other = $test_string; $this->current_version = $current_version ?: new Content_Version_Model(); @@ -900,10 +869,18 @@ final class BaseClass {} abstract class BaseClass {} +final readonly class BaseClass {} + +readonly final class BaseClass {} + final class BaseClass extends MyOtherClass {} abstract class BaseClass extends MyOtherClass {} +final readonly class BaseClass extends MyOtherClass {} + +readonly final class BaseClass extends MyOtherClass {} + final class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass {} abstract class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass {} @@ -934,6 +911,38 @@ class Promoted { } } + +readonly class ReadOnlyCls { + public string $myValue; +} + +class FinalCost { final public const FOO = 'foo'; } + +// PHP 8.3 typed class constants +enum E { + const string TEST = "Test1"; // E::TEST is a string +} + +trait T { + const string TEST = E::TEST; // T::TEST is a string too +} + +interface I { + const string TEST = E::TEST; // I::TEST is a string as well +} + +class Foo implements I { + use T; + + const string TEST = E::TEST; // Foo::TEST must also be a string +} + +class Bar extends Foo { + const string TEST = "Test2"; // Bar::TEST must also be a string, but the value can change + public const int|null I = null; + public const ?int J = null; +} + =====================================output===================================== other = $test_string; $this->current_version = @@ -1001,13 +1016,13 @@ abstract class ReallyReallyReallyLongClassName public static function test_static_constructor( $test, $test_int, - $test_string + $test_string, ) { $model = new self($test, $test_int, $test_string); $model = new self( $really_really_really_really_really_really_really_really_long_array, $test_int, - $test_string + $test_string, ); return $model; } @@ -1033,7 +1048,7 @@ abstract class ReallyReallyReallyLongClassName public function reallyReallyReallyReallyReallyReallyReallyLongMethodName( $input, - $otherInput = 1 + $otherInput = 1, ) { return true; } @@ -1100,7 +1115,7 @@ abstract class ReallyReallyReallyLongClassName public function longLongAnotherFunction( string $foo, string $bar, - int $baz + int $baz, ): string { return "foo"; } @@ -1108,7 +1123,7 @@ abstract class ReallyReallyReallyLongClassName public function longLongAnotherFunctionOther( string $foo, string $bar, - int $baz + int $baz, ) { return "foo"; } @@ -1126,12 +1141,10 @@ abstract class ReallyReallyReallyLongClassName $this->something->method( $argument, - $this->more->stuff($this->even->more->things->complicatedMethod()) + $this->more->stuff($this->even->more->things->complicatedMethod()), ); -class A -{ -} +class A {} $someVar = new ReaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalyLongClassName(); @@ -1144,12 +1157,8 @@ class FooBar { public $property; public $property2; - public function method() - { - } - public function method2() - { - } + public function method() {} + public function method2() {} } class FooBarFoo @@ -1160,76 +1169,52 @@ class FooBarFoo } } -class ClassName extends ParentClass implements InterfaceClass -{ -} +class ClassName extends ParentClass implements InterfaceClass {} class ClassName extends ParentClass implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 {} class ClassName extends ParentClass implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 {} class ClassName extends VeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 implements - InterfaceClass -{ -} + InterfaceClass {} class ClassName extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 - implements InterfaceClass -{ -} + implements InterfaceClass {} class ClassName extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 - implements VeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 -{ -} + implements VeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 {} class ClassName extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 - implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 -{ -} + implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 {} class ClassName extends ParentClass implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1, VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName2, - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName3 -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName3 {} class ClassName extends VeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1, VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName2, - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName3 -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName3 {} class ClassName extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1, VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName2, - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName3 -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName3 {} class VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongFileName1 extends ParentClass - implements InterfaceClass -{ -} + implements InterfaceClass {} class Custom_Plugin_NotificationPlaceholderSource extends - Notification_Manager_DefaultPlaceholderSource -{ -} + Notification_Manager_DefaultPlaceholderSource {} class field extends \\models\\base { @@ -1239,9 +1224,9 @@ class field extends \\models\\base array_merge( $configs, $field_type->process_field_config_from_user( - $input["definition"] - ) - ) + $input["definition"], + ), + ), ); unset($input["definition"]); } @@ -1258,171 +1243,121 @@ class test } } -class EmptyClass -{ -} +class EmptyClass {} class EmptyClassWithComments { /* Comment */ } -class MyClass implements MyOtherClass -{ -} +class MyClass implements MyOtherClass {} -class MyClass implements MyOtherClass, MyOtherClass1, MyOtherClass2 -{ -} +class MyClass implements MyOtherClass, MyOtherClass1, MyOtherClass2 {} class MyClass implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {} class VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass -{ -} + implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass {} class VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements MyOtherClass -{ -} + implements MyOtherClass {} class MyClass implements MyOtherClass, MyOtherClass, MyOtherOtherOtherClass, - MyOtherOtherOtherOtherClass -{ -} + MyOtherOtherOtherOtherClass {} class VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass implements MyOtherClass, MyOtherClass, MyOtherOtherOtherClass, - MyOtherOtherOtherOtherClass -{ -} + MyOtherOtherOtherOtherClass {} -class EmptyClass extends MyOtherClass -{ -} +class EmptyClass extends MyOtherClass {} class EmptyClass extends - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {} class VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - extends EmptyClass -{ -} + extends EmptyClass {} class VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -} + extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {} -class MyClass extends MyOtherClass implements MyI -{ -} +class MyClass extends MyOtherClass implements MyI {} -class MyClass extends MyOtherClass implements MyI, MyII, MyIII -{ -} +class MyClass extends MyOtherClass implements MyI, MyII, MyIII {} class MyClass extends MyOtherClass implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {} class MyClass extends MyOtherClass implements MyInterface, MyOtherInterface, - MyOtherOtherInterface -{ -} + MyOtherOtherInterface {} class MyClass extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements MyI -{ -} + implements MyI {} class MyClass extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass implements MyI, MyII, - MyIII -{ -} + MyIII {} class MyClass extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -} + implements VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {} class MyClass extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass implements MyI, MyII, - MyIII -{ -} + MyIII {} -final class BaseClass -{ -} +final class BaseClass {} -abstract class BaseClass -{ -} +abstract class BaseClass {} -final class BaseClass extends MyOtherClass -{ -} +final readonly class BaseClass {} -abstract class BaseClass extends MyOtherClass -{ -} +final readonly class BaseClass {} -final class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass -{ -} +final class BaseClass extends MyOtherClass {} -abstract class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass -{ -} +abstract class BaseClass extends MyOtherClass {} + +final readonly class BaseClass extends MyOtherClass {} + +final readonly class BaseClass extends MyOtherClass {} final class BaseClass extends - MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass1 -{ -} + MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass {} abstract class BaseClass extends - MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass1 -{ -} + MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass {} + +final class BaseClass extends + MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass1 {} + +abstract class BaseClass extends + MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass1 {} final class BaseClass extends MyOtherClass implements MyInterface, MyOtherInterface, - MyOtherOtherInterface -{ -} + MyOtherOtherInterface {} abstract class BaseClass extends MyOtherClass implements MyInterface, MyOtherInterface, - MyOtherOtherInterface -{ -} + MyOtherOtherInterface {} class User { @@ -1444,9 +1379,48 @@ class Promoted public function __construct( public int $a, private float $b, - protected string $d - ) { - } + protected string $d, + ) {} +} + +readonly class ReadOnlyCls +{ + public string $myValue; +} + +class FinalCost +{ + final public const FOO = "foo"; +} + +// PHP 8.3 typed class constants +enum E +{ + const string TEST = "Test1"; // E::TEST is a string +} + +trait T +{ + const string TEST = E::TEST; // T::TEST is a string too +} + +interface I +{ + const string TEST = E::TEST; // I::TEST is a string as well +} + +class Foo implements I +{ + use T; + + const string TEST = E::TEST; // Foo::TEST must also be a string +} + +class Bar extends Foo +{ + const string TEST = "Test2"; // Bar::TEST must also be a string, but the value can change + public const int|null I = null; + public const ?int J = null; } ================================================================================ diff --git a/tests/class/class.php b/tests/class/class.php index e18ed0228..626133292 100644 --- a/tests/class/class.php +++ b/tests/class/class.php @@ -20,6 +20,7 @@ abstract class ReallyReallyReallyLongClassName extends AbstractModelFactoryResou public $test; public $other = 1; public static $staticTest = ['hi']; + public readonly int $readonlytype; static $cache; protected static $_instance; protected $fillable = ['title', 'requester_id', 'type', 'summary', 'proof']; @@ -37,7 +38,7 @@ abstract class ReallyReallyReallyLongClassName extends AbstractModelFactoryResou * * @return \Some\Test */ - public function __construct($test, $test_int = null, $test_string = 'hi') { + public function __construct($test, $test_int = null, $test_string = 'hi', readonly int $test_readonly, public readonly string $test_promoted_readonly) { parent::__construct($test_int ?: 1); $this->other = $test_string; $this->current_version = $current_version ?: new Content_Version_Model(); @@ -265,10 +266,18 @@ final class BaseClass {} abstract class BaseClass {} +final readonly class BaseClass {} + +readonly final class BaseClass {} + final class BaseClass extends MyOtherClass {} abstract class BaseClass extends MyOtherClass {} +final readonly class BaseClass extends MyOtherClass {} + +readonly final class BaseClass extends MyOtherClass {} + final class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass {} abstract class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass {} @@ -298,4 +307,35 @@ class Promoted { public function __construct( public int $a, private float $b, protected string $d ){ } -} \ No newline at end of file +} + +readonly class ReadOnlyCls { + public string $myValue; +} + +class FinalCost { final public const FOO = 'foo'; } + +// PHP 8.3 typed class constants +enum E { + const string TEST = "Test1"; // E::TEST is a string +} + +trait T { + const string TEST = E::TEST; // T::TEST is a string too +} + +interface I { + const string TEST = E::TEST; // I::TEST is a string as well +} + +class Foo implements I { + use T; + + const string TEST = E::TEST; // Foo::TEST must also be a string +} + +class Bar extends Foo { + const string TEST = "Test2"; // Bar::TEST must also be a string, but the value can change + public const int|null I = null; + public const ?int J = null; +} diff --git a/tests/class/jsfmt.spec.js b/tests/class/jsfmt.spec.js deleted file mode 100644 index 5378de169..000000000 --- a/tests/class/jsfmt.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -run_spec(__dirname, ["php"]); -// see https://github.com/prettier/plugin-php/issues/107 -// run_spec(__dirname, ["php"], { openingBraceNewLine: false }); diff --git a/tests/class/jsfmt.spec.mjs b/tests/class/jsfmt.spec.mjs new file mode 100644 index 000000000..4d43d0cbd --- /dev/null +++ b/tests/class/jsfmt.spec.mjs @@ -0,0 +1,3 @@ +run_spec(import.meta, ["php"]); +// see https://github.com/prettier/plugin-php/issues/107 +// run_spec(import.meta, ["php"], { openingBraceNewLine: false }); diff --git a/tests/classconstant/__snapshots__/jsfmt.spec.js.snap b/tests/classconstant/__snapshots__/jsfmt.spec.mjs.snap similarity index 96% rename from tests/classconstant/__snapshots__/jsfmt.spec.js.snap rename to tests/classconstant/__snapshots__/jsfmt.spec.mjs.snap index fa8ee35e7..9a66f8297 100644 --- a/tests/classconstant/__snapshots__/jsfmt.spec.js.snap +++ b/tests/classconstant/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`classconstant.php 1`] = ` ====================================options===================================== @@ -125,15 +125,15 @@ class ConstDemo 1200 + 1300; const CONST_9 = <<veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLeadDeveloper; $OneSecAgo = (clone $Now)->veryVeryVeryVeryVeryVeryVeryVeryLongMethod( - new \\DateInterval("PT1S") + new \\DateInterval("PT1S"), ); ================================================================================ diff --git a/tests/clone/jsfmt.spec.js b/tests/clone/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/clone/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/clone/jsfmt.spec.mjs b/tests/clone/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/clone/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/closure/__snapshots__/jsfmt.spec.js.snap b/tests/closure/__snapshots__/jsfmt.spec.mjs.snap similarity index 92% rename from tests/closure/__snapshots__/jsfmt.spec.js.snap rename to tests/closure/__snapshots__/jsfmt.spec.mjs.snap index f39aa6c42..f9e4e1129 100644 --- a/tests/closure/__snapshots__/jsfmt.spec.js.snap +++ b/tests/closure/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`closure.php 1`] = ` ====================================options===================================== @@ -143,6 +143,7 @@ $fn = function &() use (&$value) { return $value; }; $var = function () {}; +$a = (fn() => 0)(); =====================================output===================================== bar( function ($arg2) use ($var1) { // body }, - $longLongLongLongLongLongLongLongLongLongArg3 + $longLongLongLongLongLongLongLongLongLongArg3, ); $emptyFunc = function () {}; @@ -215,7 +216,7 @@ $emptyFuncWithComment = function () { $longArgs_noVars = function ( $longArgument, $longerArgument, - $muchLongerArgument + $muchLongerArgument, ) { // body }; @@ -227,7 +228,7 @@ $noArgs_longVars = function () use ($longVar1, $longerVar2, $muchLongerVar3) { $longArgs_longVars = function ( $longArgument, $longerArgument, - $muchLongerArgument + $muchLongerArgument, ) use ($longVar1, $longerVar2, $muchLongerVar3) { // body }; @@ -235,7 +236,7 @@ $longArgs_longVars = function ( $longArgs_shortVars = function ( $longArgument, $longerArgument, - $muchLongerArgument + $muchLongerArgument, ) use ($var1) { // body }; @@ -243,7 +244,7 @@ $longArgs_shortVars = function ( $shortArgs_longVars = function ($arg) use ( $longVar1, $longerVar2, - $muchLongerVar3 + $muchLongerVar3, ) { // body }; @@ -263,7 +264,7 @@ $rTDWU = function (array $array) use ($var1, $var2): int { $rTDWLU = function (array $array) use ( $longLongLongLongLongLongLongVar1, $longerLongerLongerLongerVar2, - $muchLongerVar3 + $muchLongerVar3, ): int { return array_sum($array); }; @@ -281,5 +282,7 @@ $fn = function &() use (&$value) { $var = function () {}; +$a = (fn() => 0)(); + ================================================================================ `; diff --git a/tests/closure/closure.php b/tests/closure/closure.php index 28e02fefc..57e58c863 100644 --- a/tests/closure/closure.php +++ b/tests/closure/closure.php @@ -134,3 +134,5 @@ function ($arg2) use ($var1) { $fn = function &() use (&$value) { return $value; }; $var = function () {}; + +$a = (fn() => 0)(); \ No newline at end of file diff --git a/tests/closure/jsfmt.spec.js b/tests/closure/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/closure/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/closure/jsfmt.spec.mjs b/tests/closure/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/closure/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/comments/__snapshots__/jsfmt.spec.js.snap b/tests/comments/__snapshots__/jsfmt.spec.mjs.snap similarity index 97% rename from tests/comments/__snapshots__/jsfmt.spec.js.snap rename to tests/comments/__snapshots__/jsfmt.spec.mjs.snap index 9184114c2..2d311f8a6 100644 --- a/tests/comments/__snapshots__/jsfmt.spec.js.snap +++ b/tests/comments/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`array.php 1`] = ` ====================================options===================================== @@ -204,7 +204,7 @@ $array = [ ]; call( - [] // Comment + [], // Comment ); call([ @@ -588,7 +588,7 @@ $var->render( foo( /* Comment */ $a /* Comment */, /* Comment */ [] /* Comment */, - /* Comment */ $a + 2 /* Comment */ + /* Comment */ $a + 2 /* Comment */, ); foo(/* A */); $foo->bar(/* B */); @@ -596,24 +596,24 @@ $foo->bar(/* B */); render( // Comment "string", - $container + $container, ); $var->render( // Comment "string", - $var + $var, ); render( "string", - $container + $container, // Comment ); $var->render( "string", - $var + $var, // Comment ); @@ -621,7 +621,7 @@ $var->render( // Comment "string", // Comment - $var + $var, // Comment ); @@ -943,9 +943,7 @@ class ResponseMethodFailure // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} // 424 : Method failure class ResponseMethodFailure @@ -955,9 +953,7 @@ class ResponseMethodFailure // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} // 424 : Method failure class ResponseMethodFailure @@ -967,27 +963,19 @@ class ResponseMethodFailure // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} // 424 : Method failure class ResponseMethodFailure extends ResponseNotAcceptable implements // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} -class MyClass -{ -} +class MyClass {} // Comment -class MyClass -{ -} +class MyClass {} class MyClass { @@ -2690,9 +2678,7 @@ foreach ($connections as $sqlite) { * * @return string */ -function test($parameter1, $e) -{ -} +function test($parameter1, $e) {} ================================================================================ `; @@ -2759,22 +2745,22 @@ echo // Comment call( $veryVeryVeryVeryVeryVeryVeryLongArg, $veryVeryVeryVeryVeryVeryVeryLongArg, - $veryVeryVeryVeryVeryVeryVeryLongArg + $veryVeryVeryVeryVeryVeryVeryLongArg, ); echo // Comment << ================================================================================ `; +exports[`inline9.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + exports[`interface.php 1`] = ` ====================================options===================================== parsers: ["php"] @@ -4698,9 +4690,7 @@ interface IFoo // Comment interface IFoo extends // Comment - MyClass -{ -} + MyClass {} // Comment interface IFoo extends @@ -4709,18 +4699,12 @@ interface IFoo extends // Comment MyOtherClass, // Comment - OtherClass -{ -} + OtherClass {} -interface MyInterface -{ -} +interface MyInterface {} // Comment -interface MyInterface -{ -} +interface MyInterface {} interface MyInterface { @@ -4763,7 +4747,7 @@ if (isset(/* Comment */ $a[1] /* Comment */)) { if ( isset( // Comment - $a + $a, ) ) { } @@ -4771,7 +4755,7 @@ if ( if ( isset( // Comment - $a + $a, ) ) { } @@ -4792,11 +4776,62 @@ list(/* Comment */ $drink /* Comment */ , /* Comment */ $color /* Comment */, /* =====================================output===================================== 1, + + + + /* + * second comment + */ + + + + 'b' => 2, + // leading comment ... + 'c' => 3, /* ... and trailing comment */ + 'd' // fourth comment + => 4, + default => null // final comment +}; + +=====================================output===================================== + 1, + + /* + * second comment + */ + "b" => 2, + // leading comment ... + "c" => 3, /* ... and trailing comment */ + "d" // fourth comment + => 4, + default => null, // final comment +}; ================================================================================ `; @@ -4882,25 +4917,18 @@ class Foo { class Foo { public function foo( - /* 1 */ $a /* 2 */ = /* 3 */ 1 /* 4 */ - ): /* 5 */ ?string /* 6 */ { - } + /* 1 */ $a /* 2 */ = /* 3 */ 1 /* 4 */, + ): /* 5 */ ?string /* 6 */ {} - public function emptyMethod(/* comments */) - { - } + public function emptyMethod(/* comments */) {} abstract public function sortByName(/* bool $useNaturalSort = false */); /* comment */ /* comment */ /* comment */ protected static $foo; /* comment */ - public function foo() - { - } // Comment + public function foo() {} // Comment - public function foo() - { - } + public function foo() {} // Comment abstract public function foo(); // Comment @@ -4921,7 +4949,7 @@ class add_vendor extends request "", // address 5 $vendor->city, // city $vendor->state, // state - $vendor->zip // state + $vendor->zip, // state ); } } @@ -5103,9 +5131,7 @@ class Foo namespace Acme; -class Foo -{ -} +class Foo {} ================================================================================ `; @@ -5147,9 +5173,7 @@ class Foo namespace Acme; -class Foo -{ -} +class Foo {} ================================================================================ `; @@ -5347,9 +5371,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5381,9 +5403,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5421,9 +5441,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5457,9 +5475,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5493,9 +5509,7 @@ namespace Monolog\\Formatter; // Comment * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5525,9 +5539,7 @@ namespace Monolog\\Formatter; // Comment * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5559,9 +5571,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5597,9 +5607,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5636,9 +5644,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5867,8 +5873,7 @@ $a = new // Comment Foo(); $a = new class// Comment - { -}; + {}; $a = new class { // Comment @@ -5878,7 +5883,7 @@ $a = new class ( // Comment $a, $b, - $c + $c, ) {}; $a = new class ( @@ -5887,7 +5892,7 @@ $a = new class ( // Comment $b, // Comment - $c + $c, ) {}; $a = new class { @@ -6216,37 +6221,29 @@ class MyClass { function foo( /* Comment */ $a, - /* Comment */ array /* Comment2 */ $b /* Comment */ = /* Comment */ [] /* Comment */ -) { -} + /* Comment */ array /* Comment2 */ $b /* Comment */ = /* Comment */ [] /* Comment */, +) {} -function bar(/* Comment */ &$a /* Comment */) -{ -} +function bar(/* Comment */ &$a /* Comment */) {} function baz( /* Comment */ $a, - /* Comment */ array /* Comment3 */ &$b /* Comment */ = /* Comment */ [] /* Comment */ -) { -} + /* Comment */ array /* Comment3 */ &$b /* Comment */ = /* Comment */ [] /* Comment */, +) {} class MyClass { public function foo( /* Comment */ $a, - /* Comment */ array /* Comment2 */ $b /* Comment */ = /* Comment */ [] /* Comment */ - ) { - } + /* Comment */ array /* Comment2 */ $b /* Comment */ = /* Comment */ [] /* Comment */, + ) {} - public function bar(/* Comment */ &$a /* Comment */) - { - } + public function bar(/* Comment */ &$a /* Comment */) {} public function baz( /* Comment */ $a, - /* Comment */ array /* Comment3 */ &$b /* Comment */ = /* Comment */ [] /* Comment */ - ) { - } + /* Comment */ array /* Comment3 */ &$b /* Comment */ = /* Comment */ [] /* Comment */, + ) {} } ================================================================================ @@ -6336,7 +6333,7 @@ print // Comment print call( // Comment - $a + $a, ); print // Comment @@ -6474,14 +6471,14 @@ class Foo public $bar = // Comment 1 // Comment 2 <<<'EOT' -bar -EOT; + bar + EOT; public $baz = // Comment 1 // Comment 2 << (new Foo($cssFilename->split("/")->length))->join("../")] + ["publicPath" => new Foo($cssFilename->split("/")->length)->join("../")] : []; $extractTextPluginOptions = $shouldUseRelativeAssetPaths ? // Making sure that the publicPath goes back to to build folder. - ["publicPath" => (new Foo($cssFilename->split("/")->length))->join("../")] + ["publicPath" => new Foo($cssFilename->split("/")->length)->join("../")] : []; $extractTextPluginOptions = $shouldUseRelativeAssetPaths // Making sure that the publicPath goes back to to build folder. - ? ["publicPath" => (new Foo($cssFilename->split("/")->length))->join("../")] + ? ["publicPath" => new Foo($cssFilename->split("/")->length)->join("../")] : []; $var = @@ -6751,7 +6748,8 @@ static // Comment // Comment static // Comment - $a = // Comment // Comment + $a = // Comment + // Comment // Comment // Comment 2021; @@ -6917,14 +6915,14 @@ throw /* Comment */ new Foo() /* Comment */; // Comment throw new ClassName( // Comment 1, // Comment // Comment - 2 // Comment + 2, // Comment ); // Comment /* Comment */ throw new ClassName /* Comment */( /* Comment */ 1 /* Comment */, /* Comment */ - /* Comment */ 2 /* Comment */ + /* Comment */ 2 /* Comment */, /* Comment */ ); /* Comment */ @@ -7029,14 +7027,10 @@ class ImplementingClass } } -trait MyTrait -{ -} +trait MyTrait {} // Comment -trait MyTrait -{ -} +trait MyTrait {} trait MyTrait { @@ -7236,12 +7230,12 @@ unset(/* Comment */ $foo /* Comment */); unset( // Comment - $var + $var, ); unset( // Comment - $var + $var, ); ================================================================================ @@ -7270,7 +7264,7 @@ use // Comment use some\\namespaces\\{ /* Comment */ /* Comment */ /* Comment */ ClassA /* Comment */, /* Comment */ ClassB /* Comment */, - /* Comment */ ClassC as /* Comment */ /* Comment */ C + /* Comment */ ClassC as /* Comment */ /* Comment */ C, }; use // Comment diff --git a/tests/comments/inline9.php b/tests/comments/inline9.php new file mode 100644 index 000000000..24cc64ca6 --- /dev/null +++ b/tests/comments/inline9.php @@ -0,0 +1,5 @@ + + + diff --git a/tests/comments/jsfmt.spec.js b/tests/comments/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/comments/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/comments/jsfmt.spec.mjs b/tests/comments/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/comments/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/comments/match.php b/tests/comments/match.php new file mode 100644 index 000000000..2c8c95d8a --- /dev/null +++ b/tests/comments/match.php @@ -0,0 +1,23 @@ + 1, + + + + /* + * second comment + */ + + + + 'b' => 2, + // leading comment ... + 'c' => 3, /* ... and trailing comment */ + 'd' // fourth comment + => 4, + default => null // final comment +}; diff --git a/tests/composer-version/composer-version.spec.mjs b/tests/composer-version/composer-version.spec.mjs new file mode 100644 index 000000000..30e6afd69 --- /dev/null +++ b/tests/composer-version/composer-version.spec.mjs @@ -0,0 +1,215 @@ +import { getComposerPhpVersion, resolvePhpVersion } from "../../src/options.mjs"; +import fs from "fs"; +import path from "path"; +import os from "os"; + +describe("getComposerPhpVer", () => { + // Create a unique temporary directory for our tests + const tempDir = path.join(os.tmpdir(), `composer-version-test-${Date.now()}`); + const tempComposerPath = path.join(tempDir, "composer.json"); + const originalCwd = process.cwd(); + + beforeEach(() => { + // Create temp directory if it doesn't exist + if (!fs.existsSync(tempDir)) { + fs.mkdirSync(tempDir, { recursive: true }); + } + }); + + afterEach(() => { + process.chdir(originalCwd); + + // Clean up temp files and directories + if (fs.existsSync(tempComposerPath)) { + fs.unlinkSync(tempComposerPath); + } + + // Remove any nested directories we created + if (fs.existsSync(tempDir)) { + const deleteFolderRecursive = function(dirPath) { + if (fs.existsSync(dirPath)) { + fs.readdirSync(dirPath).forEach((file) => { + const curPath = path.join(dirPath, file); + if (fs.lstatSync(curPath).isDirectory()) { + deleteFolderRecursive(curPath); + } else { + fs.unlinkSync(curPath); + } + }); + fs.rmdirSync(dirPath); + } + }; + + deleteFolderRecursive(tempDir); + } + }); + + test("returns null when no composer.json is found", () => { + // Create a directory with no composer.json + const emptyDir = path.join(tempDir, "empty-dir"); + fs.mkdirSync(emptyDir, { recursive: true }); + + process.chdir(emptyDir); + + expect(getComposerPhpVersion()).toBe(null); + }); + + test.each([ + {ver:">=7.1.0",expected: 7.1}, + {ver:"^8.0",expected: 8.0}, + {ver:"~7.4",expected: 7.4}, + {ver:">=5.6.0 <8.0.0",expected: 5.6}, + {ver:"7.3.*",expected: 7.3}, + {ver:"7.* || 8.*",expected: 7.0} + ])("extracts correct version from $ver ba changing cwd", ({ver, expected}) => { + const composerContent = JSON.stringify( + { + require: { + php: ver, + }, + }, + null, + 2 + ); + + process.chdir(tempDir); + fs.writeFileSync(tempComposerPath, composerContent); + + + expect(getComposerPhpVersion()).toBe(expected); + }); + + test("phpVersion=composer reads composer.json", () => { + + const composerContent = JSON.stringify( + { + require: { + php: ">=5.4", + }, + }, + null, + 2 + ); + + process.chdir(tempDir); + fs.writeFileSync(tempComposerPath, composerContent); + + + const options = { phpVersion: "composer" }; + resolvePhpVersion(options); + expect(options.phpVersion).toBe(5.4); + }) + + test("returns null when composer.json has no PHP requirement", () => { + const composerContent = JSON.stringify( + { + require: { + // No PHP requirement + "some/package": "^1.0" + }, + }, + null, + 2 + ); + + fs.writeFileSync(tempComposerPath, composerContent); + + process.chdir(tempDir); + + expect(getComposerPhpVersion()).toBe(null); + }); + + + test("returns error when no composer.json and phpVersion set to composer", () => { + + process.chdir(tempDir); + + expect(() =>resolvePhpVersion({phpVersion:"composer"})).toThrow(); + }); + + test("returns null when composer.json has invalid PHP requirement", () => { + const composerContent = JSON.stringify( + { + require: { + php: "invalid-version" + }, + }, + null, + 2 + ); + + fs.writeFileSync(tempComposerPath, composerContent); + + process.chdir(tempDir); + + expect(getComposerPhpVersion()).toBe(null); + }); + + test("finds composer.json in parent directory when in nested child folder", () => { + // Create a nested directory structure + const nestedDir1 = path.join(tempDir, "level1"); + const nestedDir2 = path.join(nestedDir1, "level2"); + const nestedDir3 = path.join(nestedDir2, "level3"); + + fs.mkdirSync(nestedDir1, { recursive: true }); + fs.mkdirSync(nestedDir2, { recursive: true }); + fs.mkdirSync(nestedDir3, { recursive: true }); + + // Create composer.json in the root temp directory + const composerContent = JSON.stringify( + { + require: { + php: "^8.1" + }, + }, + null, + 2 + ); + + fs.writeFileSync(tempComposerPath, composerContent); + + process.chdir(nestedDir3); + + expect(getComposerPhpVersion()).toBe(8.1); + }); + + test("finds composer.json in intermediate parent directory", () => { + // Create a nested directory structure + const nestedDir1 = path.join(tempDir, "folder1"); + const nestedDir2 = path.join(nestedDir1, "folder2"); + const nestedDir3 = path.join(nestedDir2, "folder3"); + + fs.mkdirSync(nestedDir1, { recursive: true }); + fs.mkdirSync(nestedDir2, { recursive: true }); + fs.mkdirSync(nestedDir3, { recursive: true }); + + // Create composer.json in the middle level directory + const intermediateComposerPath = path.join(nestedDir2, "composer.json"); + const composerContent = JSON.stringify( + { + require: { + php: "~7.2" + }, + }, + null, + 2 + ); + + fs.writeFileSync(intermediateComposerPath, composerContent); + + process.chdir(nestedDir3); + + expect(getComposerPhpVersion()).toBe(7.2); + }); + + test("returns null when composer.json is malformed", () => { + // Create a malformed JSON file (invalid syntax) + const malformedContent = `{This is not JSON}`; + + fs.writeFileSync(tempComposerPath, malformedContent); + + process.chdir(tempDir); + + expect(getComposerPhpVersion()).toBe(null); + }); +}); diff --git a/tests/constant/__snapshots__/jsfmt.spec.js.snap b/tests/constant/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/constant/__snapshots__/jsfmt.spec.js.snap rename to tests/constant/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/constant/jsfmt.spec.js b/tests/constant/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/constant/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/constant/jsfmt.spec.mjs b/tests/constant/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/constant/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/continue/__snapshots__/jsfmt.spec.js.snap b/tests/continue/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/continue/__snapshots__/jsfmt.spec.js.snap rename to tests/continue/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/continue/jsfmt.spec.js b/tests/continue/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/continue/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/continue/jsfmt.spec.mjs b/tests/continue/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/continue/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/declare/__snapshots__/jsfmt.spec.js.snap b/tests/declare/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/declare/__snapshots__/jsfmt.spec.js.snap rename to tests/declare/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/declare/jsfmt.spec.js b/tests/declare/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/declare/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/declare/jsfmt.spec.mjs b/tests/declare/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/declare/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/do/__snapshots__/jsfmt.spec.js.snap b/tests/do/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/do/__snapshots__/jsfmt.spec.js.snap rename to tests/do/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/do/jsfmt.spec.js b/tests/do/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/do/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/do/jsfmt.spec.mjs b/tests/do/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/do/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/echo/__snapshots__/jsfmt.spec.js.snap b/tests/echo/__snapshots__/jsfmt.spec.mjs.snap similarity index 92% rename from tests/echo/__snapshots__/jsfmt.spec.js.snap rename to tests/echo/__snapshots__/jsfmt.spec.mjs.snap index 40c6016b9..455ac56e9 100644 --- a/tests/echo/__snapshots__/jsfmt.spec.js.snap +++ b/tests/echo/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`echo.php 1`] = ` ====================================options===================================== @@ -319,30 +319,30 @@ echo esc_html( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ); echo esc_html( sprintf( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ) . "\\n\\n"; echo esc_html( sprintf( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ) . "\\n\\n", "string"; echo esc_html( @@ -350,10 +350,10 @@ echo esc_html( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ) . "\\n\\n", "string" . "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; @@ -362,10 +362,10 @@ echo esc_html( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ), "string", "string"; @@ -374,30 +374,30 @@ echo esc_html( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ), esc_html( sprintf( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ); echo esc_html( sprintf( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ), "string", esc_html( @@ -405,10 +405,10 @@ echo esc_html( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ); echo << 'Red', + Suit::Clubs, + Suit::Spades => 'Black', + }; + } + + // Not part of an interface; that's fine. + public function shape(): string + { + return "Rectangle"; + } + + public static function staticMethod(){ + return self::Clubs; + } +} + +function paint(Colorful $c) { } + +paint(Suit::Clubs); // Works + +print Suit::Diamonds->shape(); // prints "Rectangle" + + +class Foo +{ + const Bar = Suit::Hearts; // https://www.php.net/manual/en/language.enumerations.expressions.php +} + + +enum BackedSuit: string +{ + case Spades = 5; +} + +class Enum {} +class Enum extends Foo {} + +=====================================output===================================== + "Red", + Suit::Clubs, Suit::Spades => "Black", + }; + } + + // Not part of an interface; that's fine. + public function shape(): string + { + return "Rectangle"; + } + + public static function staticMethod() + { + return self::Clubs; + } +} + +function paint(Colorful $c) {} + +paint(Suit::Clubs); // Works + +print Suit::Diamonds->shape(); // prints "Rectangle" + +class Foo +{ + const Bar = Suit::Hearts; // https://www.php.net/manual/en/language.enumerations.expressions.php +} + +enum BackedSuit: string +{ + case Spades = 5; +} + +class Enum {} +class Enum extends Foo {} + +================================================================================ +`; diff --git a/tests/enum/enum.php b/tests/enum/enum.php new file mode 100644 index 000000000..136e203d7 --- /dev/null +++ b/tests/enum/enum.php @@ -0,0 +1,67 @@ + 'Red', + Suit::Clubs, + Suit::Spades => 'Black', + }; + } + + // Not part of an interface; that's fine. + public function shape(): string + { + return "Rectangle"; + } + + public static function staticMethod(){ + return self::Clubs; + } +} + +function paint(Colorful $c) { } + +paint(Suit::Clubs); // Works + +print Suit::Diamonds->shape(); // prints "Rectangle" + + +class Foo +{ + const Bar = Suit::Hearts; // https://www.php.net/manual/en/language.enumerations.expressions.php +} + + +enum BackedSuit: string +{ + case Spades = 5; +} + +class Enum {} +class Enum extends Foo {} diff --git a/tests/enum/jsfmt.spec.mjs b/tests/enum/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/enum/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/errors/__snapshots__/jsfmt.spec.js.snap b/tests/errors/__snapshots__/jsfmt.spec.mjs.snap similarity index 83% rename from tests/errors/__snapshots__/jsfmt.spec.js.snap rename to tests/errors/__snapshots__/jsfmt.spec.mjs.snap index 45945d8ea..a4818b7ce 100644 --- a/tests/errors/__snapshots__/jsfmt.spec.js.snap +++ b/tests/errors/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`errors.php 1`] = ` ====================================options===================================== @@ -55,6 +55,19 @@ try { // Comment } +// PHP 8.0 non-capturing exception catch +try { + // Something +} catch (\\Exception) { + // Nothing +} + +try { + // Something +} catch (MyException | OtherException) { + // Nothing +} + =====================================output===================================== 0, + 'another_key' => 1 + ]; +} + +class FuncVisibility { + + // prettier-ignore + static function a() { + return [ + 'services' => [ '_type' => 'prototype', '_required' => FALSE, '_prototype' => [ + '_type' => 'partial', '_required' => TRUE, '_partial' => 'service', + ]] + ]; + } + + // prettier-ignore + private function b(){ } + +} + =====================================output===================================== 0, + 'another_key' => 1 + ]; +} + +class FuncVisibility +{ + // prettier-ignore + static function a() { + return [ + 'services' => [ '_type' => 'prototype', '_required' => FALSE, '_prototype' => [ + '_type' => 'partial', '_required' => TRUE, '_partial' => 'service', + ]] + ]; + } + + // prettier-ignore + private function b(){ } +} + ================================================================================ `; diff --git a/tests/ignore/ignore.php b/tests/ignore/ignore.php index 8cdf5b223..eeeb9010c 100644 --- a/tests/ignore/ignore.php +++ b/tests/ignore/ignore.php @@ -1,4 +1,8 @@ 0, + 'another_key' => 1 + ]; +} + +class FuncVisibility { + + // prettier-ignore + static function a() { + return [ + 'services' => [ '_type' => 'prototype', '_required' => FALSE, '_prototype' => [ + '_type' => 'partial', '_required' => TRUE, '_partial' => 'service', + ]] + ]; + } + + // prettier-ignore + private function b(){ } + +} diff --git a/tests/ignore/jsfmt.spec.js b/tests/ignore/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/ignore/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/ignore/jsfmt.spec.mjs b/tests/ignore/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/ignore/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/include/__snapshots__/jsfmt.spec.js.snap b/tests/include/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/include/__snapshots__/jsfmt.spec.js.snap rename to tests/include/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/include/jsfmt.spec.js b/tests/include/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/include/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/include/jsfmt.spec.mjs b/tests/include/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/include/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/inline/__snapshots__/jsfmt.spec.js.snap b/tests/inline/__snapshots__/jsfmt.spec.mjs.snap similarity index 99% rename from tests/inline/__snapshots__/jsfmt.spec.js.snap rename to tests/inline/__snapshots__/jsfmt.spec.mjs.snap index 3160628c8..21bf1ebde 100644 --- a/tests/inline/__snapshots__/jsfmt.spec.js.snap +++ b/tests/inline/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`declare.php 1`] = ` ====================================options===================================== @@ -1166,7 +1166,7 @@ printWidth: 80 "bar" => "foo", "barfoo" => "foobar", "foobar" => "barfoo", - ] + ], ); ?>
element( @@ -1183,7 +1183,7 @@ printWidth: 80 "bar" => "foo", "barfoo" => "foobar", "foobar" => "barfoo", - ] + ], ); ?>
@@ -1803,7 +1803,7 @@ printWidth: 80 value="id); ?>" chosen, true); ?> data-text="order_button_text + $gateway->order_button_text, ); ?>" @@ -1874,7 +1874,7 @@ func( @@ -1882,7 +1882,7 @@ func( @@ -1890,7 +1890,7 @@ func( @@ -1898,7 +1898,7 @@ func( @@ -1906,7 +1906,7 @@ func( @@ -1914,7 +1914,7 @@ func( @@ -1922,7 +1922,7 @@ func( diff --git a/tests/inline/jsfmt.spec.js b/tests/inline/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/inline/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/inline/jsfmt.spec.mjs b/tests/inline/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/inline/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/insert-pragma/__snapshots__/jsfmt.spec.js.snap b/tests/insert-pragma/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/insert-pragma/__snapshots__/jsfmt.spec.js.snap rename to tests/insert-pragma/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/insert-pragma/jsfmt.spec.js b/tests/insert-pragma/jsfmt.spec.js deleted file mode 100644 index 1a328b63e..000000000 --- a/tests/insert-pragma/jsfmt.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -run_spec(__dirname, ["php"], { insertPragma: true, endOfLine: "cr" }); -run_spec(__dirname, ["php"], { insertPragma: true, endOfLine: "crlf" }); -run_spec(__dirname, ["php"], { insertPragma: true, endOfLine: "lf" }); diff --git a/tests/insert-pragma/jsfmt.spec.mjs b/tests/insert-pragma/jsfmt.spec.mjs new file mode 100644 index 000000000..c1683e70b --- /dev/null +++ b/tests/insert-pragma/jsfmt.spec.mjs @@ -0,0 +1,3 @@ +run_spec(import.meta, ["php"], { insertPragma: true, endOfLine: "cr" }); +run_spec(import.meta, ["php"], { insertPragma: true, endOfLine: "crlf" }); +run_spec(import.meta, ["php"], { insertPragma: true, endOfLine: "lf" }); diff --git a/tests/interface/__snapshots__/jsfmt.spec.js.snap b/tests/interface/__snapshots__/jsfmt.spec.mjs.snap similarity index 90% rename from tests/interface/__snapshots__/jsfmt.spec.js.snap rename to tests/interface/__snapshots__/jsfmt.spec.mjs.snap index e58c91616..46b0cf1b7 100644 --- a/tests/interface/__snapshots__/jsfmt.spec.js.snap +++ b/tests/interface/__snapshots__/jsfmt.spec.mjs.snap @@ -49,54 +49,38 @@ interface test2 extends testInterface public function other($hi); } -interface EmptyInterface -{ -} +interface EmptyInterface {} interface EmptyInterfaceWithComments { /* Comment */ } -interface Foo extends MyClass -{ -} +interface Foo extends MyClass {} -interface Foo extends MyClass, MyOtherClass, OtherClass -{ -} +interface Foo extends MyClass, MyOtherClass, OtherClass {} interface Foo extends - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName -{ -} + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName {} interface VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName - extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName -{ -} + extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName {} interface VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName - extends Foo -{ -} + extends Foo {} interface Foo extends MyClass, MyOtherClass, MyOtherOtherOtherClass, - MyVeryVeryVeryLongClassName -{ -} + MyVeryVeryVeryLongClassName {} interface VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName extends MyClass, MyOtherClass, MyOtherOtherOtherClass, - MyVeryVeryVeryLongClassName -{ -} + MyVeryVeryVeryLongClassName {} ================================================================================ `; diff --git a/tests/interface/jsfmt.spec.js b/tests/interface/jsfmt.spec.js deleted file mode 100644 index 5378de169..000000000 --- a/tests/interface/jsfmt.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -run_spec(__dirname, ["php"]); -// see https://github.com/prettier/plugin-php/issues/107 -// run_spec(__dirname, ["php"], { openingBraceNewLine: false }); diff --git a/tests/interface/jsfmt.spec.mjs b/tests/interface/jsfmt.spec.mjs new file mode 100644 index 000000000..4d43d0cbd --- /dev/null +++ b/tests/interface/jsfmt.spec.mjs @@ -0,0 +1,3 @@ +run_spec(import.meta, ["php"]); +// see https://github.com/prettier/plugin-php/issues/107 +// run_spec(import.meta, ["php"], { openingBraceNewLine: false }); diff --git a/tests/intersection-types/__snapshots__/jsfmt.spec.mjs.snap b/tests/intersection-types/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..b256c0de6 --- /dev/null +++ b/tests/intersection-types/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,26 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`intersection.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +getTitle()) . $post->getId(); +} + +function test(foo|bar &$input) {} + +=====================================output===================================== +getTitle()) . $post->getId(); +} + +function test(foo|bar &$input) {} + +================================================================================ +`; diff --git a/tests/intersection-types/intersection.php b/tests/intersection-types/intersection.php new file mode 100644 index 000000000..c9bcb6ba9 --- /dev/null +++ b/tests/intersection-types/intersection.php @@ -0,0 +1,6 @@ +getTitle()) . $post->getId(); +} + +function test(foo|bar &$input) {} diff --git a/tests/intersection-types/jsfmt.spec.mjs b/tests/intersection-types/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/intersection-types/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/isset/__snapshots__/jsfmt.spec.js.snap b/tests/isset/__snapshots__/jsfmt.spec.mjs.snap similarity index 96% rename from tests/isset/__snapshots__/jsfmt.spec.js.snap rename to tests/isset/__snapshots__/jsfmt.spec.mjs.snap index f94ba9377..88f261c05 100644 --- a/tests/isset/__snapshots__/jsfmt.spec.js.snap +++ b/tests/isset/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`isset.php 1`] = ` ====================================options===================================== @@ -60,14 +60,14 @@ class T a->b); isset( $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty - ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty + ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty, ); if (isset($var)) { diff --git a/tests/isset/jsfmt.spec.js b/tests/isset/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/isset/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/isset/jsfmt.spec.mjs b/tests/isset/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/isset/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/kitchen_sink/__snapshots__/jsfmt.spec.js.snap b/tests/kitchen_sink/__snapshots__/jsfmt.spec.mjs.snap similarity index 94% rename from tests/kitchen_sink/__snapshots__/jsfmt.spec.js.snap rename to tests/kitchen_sink/__snapshots__/jsfmt.spec.mjs.snap index ea8553b76..b468e90a5 100644 --- a/tests/kitchen_sink/__snapshots__/jsfmt.spec.js.snap +++ b/tests/kitchen_sink/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`kitchen_sink.php 1`] = ` ====================================options===================================== @@ -77,7 +77,7 @@ if ($test == 1) { function really_long_function( $test2 = 1, $long_parameter_name, - $even_longer_longer_longer_longer_longer_parameter_name + $even_longer_longer_longer_longer_longer_parameter_name, ) { return $test2; } diff --git a/tests/kitchen_sink/jsfmt.spec.js b/tests/kitchen_sink/jsfmt.spec.js deleted file mode 100644 index 2e1965334..000000000 --- a/tests/kitchen_sink/jsfmt.spec.js +++ /dev/null @@ -1,2 +0,0 @@ -run_spec(__dirname, ["php"]); -// run_spec(__dirname, ["php"], { openingBraceNewLine: false }); diff --git a/tests/kitchen_sink/jsfmt.spec.mjs b/tests/kitchen_sink/jsfmt.spec.mjs new file mode 100644 index 000000000..efafecaf4 --- /dev/null +++ b/tests/kitchen_sink/jsfmt.spec.mjs @@ -0,0 +1,2 @@ +run_spec(import.meta, ["php"]); +// run_spec(import.meta, ["php"], { openingBraceNewLine: false }); diff --git a/tests/list/__snapshots__/jsfmt.spec.js.snap b/tests/list/__snapshots__/jsfmt.spec.mjs.snap similarity index 91% rename from tests/list/__snapshots__/jsfmt.spec.js.snap rename to tests/list/__snapshots__/jsfmt.spec.mjs.snap index 027a6c996..c21e367f4 100644 --- a/tests/list/__snapshots__/jsfmt.spec.js.snap +++ b/tests/list/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`list.php 1`] = ` ====================================options===================================== @@ -159,110 +159,110 @@ list( $info = ["coffee", "brown", "caffeine"]; // Listing all the variables -list($drink, $color, $power) = $info; +[$drink, $color, $power] = $info; echo "$drink is $color and $power makes it special.\\n"; // Listing some of them -list($drink, , $power) = $info; +[$drink, , $power] = $info; echo "$drink has $power.\\n"; // Or let's skip to only the third one -list(, , $power) = $info; +[, , $power] = $info; echo "I need $power!\\n"; // list() doesn't work with strings -list($bar) = "abcde"; +[$bar] = "abcde"; var_dump($bar); // NULL -while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) { +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { } -list($a, list($b, $c)) = [1, [2, 3]]; +[$a, [$b, $c]] = [1, [2, 3]]; $info = ["coffee", "brown", "caffeine"]; -list($a[0], $a[1], $a[2]) = $info; +[$a[0], $a[1], $a[2]] = $info; -list("id" => $id1, "name" => $name1) = $data[0]; -list( +["id" => $id1, "name" => $name1] = $data[0]; +[ "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, -) = $data[0]; -list( +] = $data[0]; +[ "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, -) = $data[0]; +] = $data[0]; -foreach ($data as list("id" => $id, "name" => $name)) { +foreach ($data as ["id" => $id, "name" => $name]) { // logic here with $id and $name } foreach ( $data - as list( + as [ "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, - ) + ] ) { // logic here with $id and $name } foreach ( $data - as list( + as [ "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, - ) + ] ) { // logic here with $id and $name } -list(, $b) = ["a", "b"]; -list(, , $c) = ["a", "b", "c"]; +[, $b] = ["a", "b"]; +[, , $c] = ["a", "b", "c"]; -while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) { +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { echo " \\n" . " $name\\n" . " $salary\\n" . " \\n"; } -list($a, list($b, $c)) = [1, [2, 3]]; +[$a, [$b, $c]] = [1, [2, 3]]; -list($a[0], $a[1], $a[2]) = $info; +[$a[0], $a[1], $a[2]] = $info; foreach ($data as ["id" => $id, "name" => $name]) { echo "id: $id, name: $name\\n"; } -list(0 => $first, 1 => $second, 2 => $three, 3 => $fourth) = $arr; -list( +[0 => $first, 1 => $second, 2 => $three, 3 => $fourth] = $arr; +[ 0 => $first, 1 => $second, 2 => $three, 3 => $fourth, -) = $arr; +] = $arr; -list($first, $second, $three, $fourth) = $arr; -list(, $first, $second, $three, $fourth) = $arr; -list(, , $first, $second, $three, $fourth, ,) = $arr; -list(, , $first, , $second, , $three, , $fourth, ,) = $arr; -list(, , , $first, $second, $three, $fourth, , ,) = $arr; -list(, , , $first, , , $second, , , $three, , , $fourth, , ,) = $arr; +[$first, $second, $three, $fourth] = $arr; +[, $first, $second, $three, $fourth] = $arr; +[, , $first, $second, $three, $fourth, ,] = $arr; +[, , $first, , $second, , $three, , $fourth, ,] = $arr; +[, , , $first, $second, $three, $fourth, , ,] = $arr; +[, , , $first, , , $second, , , $three, , , $fourth, , ,] = $arr; -list( +[ 0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( +] = $arr; +[ , 0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( +] = $arr; +[ , , 0 => $firstVeryVeryVeryVeryLong, @@ -270,8 +270,8 @@ list( 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, , -) = $arr; -list( +] = $arr; +[ , , 0 => $firstVeryVeryVeryVeryLong, @@ -282,8 +282,8 @@ list( , 3 => $fourthVeryVeryVeryVeryLong, , -) = $arr; -list( +] = $arr; +[ , , , @@ -293,8 +293,8 @@ list( 3 => $fourthVeryVeryVeryVeryLong, , , -) = $arr; -list( +] = $arr; +[ , , , @@ -310,9 +310,9 @@ list( 3 => $fourthVeryVeryVeryVeryLong, , , -) = $arr; +] = $arr; -list( +[ 0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, @@ -320,12 +320,12 @@ list( 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; +] = $arr; -list("id" => $id1, "name" => $name1) = $data[0]; +["id" => $id1, "name" => $name1] = $data[0]; ["id" => $id1, "name" => $name1] = $data[0]; -foreach ($data as list("id" => $id, "name" => $name)) { +foreach ($data as ["id" => $id, "name" => $name]) { // logic here with $id and $name } @@ -339,60 +339,60 @@ function swap(&$a, &$b): void } $array = [1, 2]; -list($a, &$b) = $array; [$a, &$b] = $array; -list(&$a, $b, , list(&$c, $d)) = $array; +[$a, &$b] = $array; +[&$a, $b, , [&$c, $d]] = $array; [&$a, $b, , [&$c, $d]] = $array; -foreach ($array as list(&$a, $b)) { +foreach ($array as [&$a, $b]) { } foreach ($array as [&$a, $b]) { } -list(0 => $var) = $arr; -list(0 => $var) = $arr; -list(, 0 => $var) = $arr; -list(0 => $var) = $arr; -list( +[0 => $var] = $arr; +[0 => $var] = $arr; +[, 0 => $var] = $arr; +[0 => $var] = $arr; +[ 0 => $var, -) = $arr; -list( +] = $arr; +[ , 0 => $var, -) = $arr; -list( +] = $arr; +[ , 0 => $var, -) = $arr; -list( +] = $arr; +[ , 0 => $var, , -) = $arr; -list( +] = $arr; +[ 0 => $var, 1 => $other_var, -) = $arr; -list( +] = $arr; +[ , 0 => $var, 1 => $other_var, -) = $arr; -list( +] = $arr; +[ , 0 => $var, 1 => $other_var, -) = $arr; -list( +] = $arr; +[ , 0 => $var, 1 => $other_var, , -) = $arr; -list(0 => $var) = $arr; -list( +] = $arr; +[0 => $var] = $arr; +[ 0 => $var, -) = $arr; +] = $arr; ================================================================================ `; diff --git a/tests/list/jsfmt.spec.js b/tests/list/jsfmt.spec.js deleted file mode 100644 index 935da6579..000000000 --- a/tests/list/jsfmt.spec.js +++ /dev/null @@ -1,2 +0,0 @@ -run_spec(__dirname, ["php"]); -run_spec(__dirname, ["php"], { phpVersion: "7.1" }); diff --git a/tests/list/jsfmt.spec.mjs b/tests/list/jsfmt.spec.mjs new file mode 100644 index 000000000..c0ec8a1fc --- /dev/null +++ b/tests/list/jsfmt.spec.mjs @@ -0,0 +1,2 @@ +run_spec(import.meta, ["php"]); +run_spec(import.meta, ["php"], { phpVersion: "7.1" }); diff --git a/tests/magic/__snapshots__/jsfmt.spec.js.snap b/tests/magic/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/magic/__snapshots__/jsfmt.spec.js.snap rename to tests/magic/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/magic/jsfmt.spec.js b/tests/magic/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/magic/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/magic/jsfmt.spec.mjs b/tests/magic/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/magic/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/markdown/__snapshots__/jsfmt.spec.js.snap b/tests/markdown/__snapshots__/jsfmt.spec.mjs.snap similarity index 99% rename from tests/markdown/__snapshots__/jsfmt.spec.js.snap rename to tests/markdown/__snapshots__/jsfmt.spec.mjs.snap index 2aedb2143..7c306ec51 100644 --- a/tests/markdown/__snapshots__/jsfmt.spec.js.snap +++ b/tests/markdown/__snapshots__/jsfmt.spec.mjs.snap @@ -103,6 +103,7 @@ $foo = "bar"; \`\`\` \`\`\`php + \`\`\` \`\`\`php diff --git a/tests/markdown/jsfmt.spec.js b/tests/markdown/jsfmt.spec.js deleted file mode 100644 index 4503e4a25..000000000 --- a/tests/markdown/jsfmt.spec.js +++ /dev/null @@ -1,5 +0,0 @@ -run_spec(__dirname, ["markdown"], { - plugins: global.STANDALONE ? [require("prettier/parser-markdown")] : [], - proseWrap: "always", - tabWidth: 4, -}); diff --git a/tests/markdown/jsfmt.spec.mjs b/tests/markdown/jsfmt.spec.mjs new file mode 100644 index 000000000..486660ae6 --- /dev/null +++ b/tests/markdown/jsfmt.spec.mjs @@ -0,0 +1,5 @@ +run_spec(import.meta, ["markdown"], { + plugins: global.STANDALONE ? ["prettier/parser-markdown"] : [], + proseWrap: "always", + tabWidth: 4, +}); diff --git a/tests/match/__snapshots__/jsfmt.spec.js.snap b/tests/match/__snapshots__/jsfmt.spec.js.snap deleted file mode 100644 index fd8eb0f48..000000000 --- a/tests/match/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,67 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`match.php 1`] = ` -====================================options===================================== -parsers: ["php"] -phpVersion: "8.0" -printWidth: 80 - | printWidth -=====================================input====================================== - implode(',',[1,2,3]), - false => $a || 'Empty', - null => null, - default => throw new \\InvalidArgumentException('Unknown Value'), -}; - -$boolStr = match($v) {true => 'true', false => 'false'}; - -$boolish = match($v) { - true, 1 => true, - false,0,'',null => false, - default => null -}; - -$a = match(true) { - test() => 'Good', - test2() => 'Two', - default => 'fail' -}; - -$nest = match(match($a) {true => 1, false => 2}) { - 1 => match($b) { - 'ok' => true, - 'fail' => false, - default => false - }, - 2 => 'null' -}; -=====================================output===================================== - implode(",", [1, 2, 3]), - false => $a || "Empty", - null => null, - default => throw new \\InvalidArgumentException("Unknown Value") -}; - -$boolStr = match ($v) { true => "true", false => "false" }; - -$boolish = match ($v) { - true, 1 => true, - false, 0, "", null => false, - default => null -}; - -$a = match (true) { test() => "Good", test2() => "Two", default => "fail" }; - -$nest = match (match ($a) { true => 1, false => 2 }) { - 1 => match ($b) { "ok" => true, "fail" => false, default => false }, - 2 => "null" -}; - -================================================================================ -`; diff --git a/tests/match/__snapshots__/jsfmt.spec.mjs.snap b/tests/match/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..2279ebfaf --- /dev/null +++ b/tests/match/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,323 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`match.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 +trailingCommaPHP: false + | printWidth +=====================================input====================================== + implode(',',[1,2,3]), + false => $a || 'Empty', + null => null, + default => throw new \\InvalidArgumentException('Unknown Value'), +}; + +$boolStr = match($v) {true => 'true', false => 'false'}; + +$boolish = match($v) { + true, 1 => true, + false,0,'',null => false, + default => null +}; + +$a = match(true) { + test() => 'Good', + test2() => 'Two', + default => 'fail' +}; + +$nest = match(match($a) {true => 1, false => 2}) { + 1 => match($b) { + 'ok' => true, + 'fail' => false, + default => false + }, + 2 => 'null' +}; + +$extraLongMatch = match($a) { + 'foo', 'foo2', 'foo3', 'foo4', + 'foo5', 'foo6', 'foo7', 'foo8', + 'foo9', 'foo10', 'foo11', 'foo12', + => ['bar'], + 'bar', 'bar2', 'bar3', 'bar4', + 'bar5', 'bar6', 'bar7', 'bar8', + 'bar9', 'bar10', 'bar11', 'bar12', + => 'some really long value in the return part of the match statement', + 'cd' => [], + default => [], +}; + +// Whitespace in match expressions is handled like in function/method arguments: +// - none above the first arm or below the last arm +// - empty lines are preserved between arms +// - multiple empty lines are collapsed into one +match ($a) { + + 'a' => 1, + + + 'b' => 2 + +}; + +match($really_really_really_really_really_really_really_really_long_variable_name) { +default => null +}; + +=====================================output===================================== + implode(",", [1, 2, 3]), + false => $a || "Empty", + null => null, + default => throw new \\InvalidArgumentException("Unknown Value") +}; + +$boolStr = match ($v) { + true => "true", + false => "false" +}; + +$boolish = match ($v) { + true, 1 => true, + false, 0, "", null => false, + default => null +}; + +$a = match (true) { + test() => "Good", + test2() => "Two", + default => "fail" +}; + +$nest = match ( + match ($a) { + true => 1, + false => 2 + } +) { + 1 => match ($b) { + "ok" => true, + "fail" => false, + default => false + }, + 2 => "null" +}; + +$extraLongMatch = match ($a) { + "foo", + "foo2", + "foo3", + "foo4", + "foo5", + "foo6", + "foo7", + "foo8", + "foo9", + "foo10", + "foo11", + "foo12" + => ["bar"], + "bar", + "bar2", + "bar3", + "bar4", + "bar5", + "bar6", + "bar7", + "bar8", + "bar9", + "bar10", + "bar11", + "bar12" + => "some really long value in the return part of the match statement", + "cd" => [], + default => [] +}; + +// Whitespace in match expressions is handled like in function/method arguments: +// - none above the first arm or below the last arm +// - empty lines are preserved between arms +// - multiple empty lines are collapsed into one +match ($a) { + "a" => 1, + + "b" => 2 +}; + +match ( + $really_really_really_really_really_really_really_really_long_variable_name +) { + default => null +}; + +================================================================================ +`; + +exports[`match.php 2`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== + implode(',',[1,2,3]), + false => $a || 'Empty', + null => null, + default => throw new \\InvalidArgumentException('Unknown Value'), +}; + +$boolStr = match($v) {true => 'true', false => 'false'}; + +$boolish = match($v) { + true, 1 => true, + false,0,'',null => false, + default => null +}; + +$a = match(true) { + test() => 'Good', + test2() => 'Two', + default => 'fail' +}; + +$nest = match(match($a) {true => 1, false => 2}) { + 1 => match($b) { + 'ok' => true, + 'fail' => false, + default => false + }, + 2 => 'null' +}; + +$extraLongMatch = match($a) { + 'foo', 'foo2', 'foo3', 'foo4', + 'foo5', 'foo6', 'foo7', 'foo8', + 'foo9', 'foo10', 'foo11', 'foo12', + => ['bar'], + 'bar', 'bar2', 'bar3', 'bar4', + 'bar5', 'bar6', 'bar7', 'bar8', + 'bar9', 'bar10', 'bar11', 'bar12', + => 'some really long value in the return part of the match statement', + 'cd' => [], + default => [], +}; + +// Whitespace in match expressions is handled like in function/method arguments: +// - none above the first arm or below the last arm +// - empty lines are preserved between arms +// - multiple empty lines are collapsed into one +match ($a) { + + 'a' => 1, + + + 'b' => 2 + +}; + +match($really_really_really_really_really_really_really_really_long_variable_name) { +default => null +}; + +=====================================output===================================== + implode(",", [1, 2, 3]), + false => $a || "Empty", + null => null, + default => throw new \\InvalidArgumentException("Unknown Value"), +}; + +$boolStr = match ($v) { + true => "true", + false => "false", +}; + +$boolish = match ($v) { + true, 1 => true, + false, 0, "", null => false, + default => null, +}; + +$a = match (true) { + test() => "Good", + test2() => "Two", + default => "fail", +}; + +$nest = match ( + match ($a) { + true => 1, + false => 2, + } +) { + 1 => match ($b) { + "ok" => true, + "fail" => false, + default => false, + }, + 2 => "null", +}; + +$extraLongMatch = match ($a) { + "foo", + "foo2", + "foo3", + "foo4", + "foo5", + "foo6", + "foo7", + "foo8", + "foo9", + "foo10", + "foo11", + "foo12" + => ["bar"], + "bar", + "bar2", + "bar3", + "bar4", + "bar5", + "bar6", + "bar7", + "bar8", + "bar9", + "bar10", + "bar11", + "bar12" + => "some really long value in the return part of the match statement", + "cd" => [], + default => [], +}; + +// Whitespace in match expressions is handled like in function/method arguments: +// - none above the first arm or below the last arm +// - empty lines are preserved between arms +// - multiple empty lines are collapsed into one +match ($a) { + "a" => 1, + + "b" => 2, +}; + +match ( + $really_really_really_really_really_really_really_really_long_variable_name +) { + default => null, +}; + +================================================================================ +`; diff --git a/tests/match/jsfmt.spec.js b/tests/match/jsfmt.spec.js deleted file mode 100644 index cc787638c..000000000 --- a/tests/match/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"], { phpVersion: "8.0" }); diff --git a/tests/match/jsfmt.spec.mjs b/tests/match/jsfmt.spec.mjs new file mode 100644 index 000000000..97399d8f1 --- /dev/null +++ b/tests/match/jsfmt.spec.mjs @@ -0,0 +1,8 @@ +run_spec(import.meta, ["php"], { + trailingCommaPHP: false, + phpVersion: "8.0", +}); +run_spec(import.meta, ["php"], { + trailingCommaPHP: true, + phpVersion: "8.0", +}); diff --git a/tests/match/match.php b/tests/match/match.php index ce35e7f39..907a13086 100644 --- a/tests/match/match.php +++ b/tests/match/match.php @@ -28,4 +28,34 @@ default => false }, 2 => 'null' -}; \ No newline at end of file +}; + +$extraLongMatch = match($a) { + 'foo', 'foo2', 'foo3', 'foo4', + 'foo5', 'foo6', 'foo7', 'foo8', + 'foo9', 'foo10', 'foo11', 'foo12', + => ['bar'], + 'bar', 'bar2', 'bar3', 'bar4', + 'bar5', 'bar6', 'bar7', 'bar8', + 'bar9', 'bar10', 'bar11', 'bar12', + => 'some really long value in the return part of the match statement', + 'cd' => [], + default => [], +}; + +// Whitespace in match expressions is handled like in function/method arguments: +// - none above the first arm or below the last arm +// - empty lines are preserved between arms +// - multiple empty lines are collapsed into one +match ($a) { + + 'a' => 1, + + + 'b' => 2 + +}; + +match($really_really_really_really_really_really_really_really_long_variable_name) { +default => null +}; diff --git a/tests/member_chain/__snapshots__/jsfmt.spec.js.snap b/tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap similarity index 90% rename from tests/member_chain/__snapshots__/jsfmt.spec.js.snap rename to tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap index eeaab35b3..4d8631650 100644 --- a/tests/member_chain/__snapshots__/jsfmt.spec.js.snap +++ b/tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`break-last-call.php 1`] = ` ====================================options===================================== @@ -34,7 +34,7 @@ function call($store) actionWith([ "response" => $response, "type" => $successType, - ]) + ]), ); }, function ($error) { @@ -42,9 +42,9 @@ function call($store) actionWith([ "type" => $failureType, "error" => $error->message || "Something bad happened", - ]) + ]), ); - } + }, ); } @@ -87,10 +87,10 @@ $superSupersuperSupersuperSupersuperSupersuperSuperLong->{$exampleOfOrderOfGette $superSupersuperSupersuperSupersuperSupersuperSuperLong::$exampleOfOrderOfGetterAndSetterReordered; $superSupersuperSupersuperSupersuperSupersuperSuperLong ::$exampleOfOrderOfGetterAndSetterReordered[0]; -$superSupersuperSupersuperSupersuperSupersuperSuperLong = (new SuperSuperSuperSuperSuperSuperLongClassName()) +$superSupersuperSupersuperSupersuperSupersuperSuperLong = new SuperSuperSuperSuperSuperSuperLongClassName() ->some_very_long_member_expression; new $superSupersuperSupersuperSupersuperSupersuperSuperLong->superSupersuperSupersuperSupersuperSupersuperSuperLong->superSupersuperSupersuperSupersuperSupersuperSuperLong(); -(new $superSupersuperSupersuperSupersuperSupersuperSuperLong->superSupersuperSupersuperSupersuperSupersuperSuperLong->superSupersuperSupersuperSupersuperSupersuperSuperLong()) +new $superSupersuperSupersuperSupersuperSupersuperSuperLong->superSupersuperSupersuperSupersuperSupersuperSuperLong->superSupersuperSupersuperSupersuperSupersuperSuperLong() ->superSupersuperSupersuperSupersuperSupersuperSuperLong; $test = $superSupersuperSupersuperSupersuperSupersuperSuperLong->exampleOfOrderOfGetterAndSetterReordered; @@ -110,6 +110,12 @@ printWidth: 80 $object->foo()->bar()->baz(); +$object->foo()->bar()->baz()->foo()->bar()->baz(); + +$object->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz(); + +$object->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz(); + foo()->bar()->baz(); foo()->bar->baz(); @@ -117,15 +123,34 @@ foo()->bar->baz(); =====================================output===================================== foo()->bar()->baz(); + +$object->foo()->bar()->baz()->foo()->bar()->baz(); + +$object->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz(); + $object ->foo() ->bar() - ->baz(); - -foo() + ->baz() + ->foo() + ->bar() + ->baz() + ->foo() + ->bar() + ->baz() + ->foo() + ->bar() + ->baz() + ->foo() + ->bar() + ->baz() + ->foo() ->bar() ->baz(); +foo()->bar()->baz(); + foo()->bar->baz(); ================================================================================ @@ -191,10 +216,7 @@ $object[$valid ($a ? $b : $c)->d()->e(); -($a ? $b : $c) - ->d() - ->e() - ->f(); +($a ? $b : $c)->d()->e()->f(); ($valid ? $helper->responseBody($this->currentUser) @@ -219,7 +241,7 @@ $object[ : $helper->responseBody($defaultUser) ]->map(); -(new TestClassWithReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName()) +new TestClassWithReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName() ->map() ->filter(); @@ -436,12 +458,8 @@ $var = Foo::keys($items)->filter(function ($x) { return $x > 2; })->map(function two(); -one() - ->two() - ->three(); -one() - ->two->three() - ->four->five(); +one()->two()->three(); +one()->two->three()->four->five(); Route::prefix("api") ->middleware("api") @@ -452,7 +470,7 @@ return tap( $this->forceFill([ "approver_id" => $user instanceof User ? $user->id : $user, "approved_at" => $this->freshTimestamp(), - ]) + ]), )->save(); return collect(parent::jsonSerialize()) @@ -476,9 +494,7 @@ $a->a()->b(); $a->a()->b(); $a->a()->b; $a->b->a(); -$a->b() - ->c() - ->d(); +$a->b()->c()->d(); $a->b->c->d; // should inline @@ -502,7 +518,7 @@ $a = $t ->once(); $this->loooooooooooong->lookup = (int) $this->getRequest()->getParam( - "some-param" + "some-param", ); $this->loooooooooooong->lookup = (int) $variable @@ -525,87 +541,39 @@ $aVariable = $theThing bar()(); bar( - "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong" + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong", )(); bar()( - "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong" + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong", ); bar( - "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong" + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong", )()()()()(); $foo->bar()(); $foo->bar( - "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong" + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong", )(); $foo->bar()( - "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong" + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong", ); $foo->bar( - "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong" + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLong", )()()()()(); -$brian->hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -$brian::$hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -$brian["hotel"] - ->orders() - ->ordered() - ->with("smith") - ->get(); -Foo::$hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -(new Foo())->hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -(clone $a)->hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); - -$var = $brian->hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -$var = $brian::$hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -$var = $brian["hotel"] - ->orders() - ->ordered() - ->with("smith") - ->get(); -$var = Foo::$hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -$var = (new Foo())->hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); -$var = (clone $a)->hotel - ->orders() - ->ordered() - ->with("smith") - ->get(); +$brian->hotel->orders()->ordered()->with("smith")->get(); +$brian::$hotel->orders()->ordered()->with("smith")->get(); +$brian["hotel"]->orders()->ordered()->with("smith")->get(); +Foo::$hotel->orders()->ordered()->with("smith")->get(); +new Foo()->hotel->orders()->ordered()->with("smith")->get(); +(clone $a)->hotel->orders()->ordered()->with("smith")->get(); + +$var = $brian->hotel->orders()->ordered()->with("smith")->get(); +$var = $brian::$hotel->orders()->ordered()->with("smith")->get(); +$var = $brian["hotel"]->orders()->ordered()->with("smith")->get(); +$var = Foo::$hotel->orders()->ordered()->with("smith")->get(); +$var = new Foo()->hotel->orders()->ordered()->with("smith")->get(); +$var = (clone $a)->hotel->orders()->ordered()->with("smith")->get(); $var = Foo::keys($items) ->filter(function ($x) { @@ -615,10 +583,10 @@ $var = Foo::keys($items) return $x * 2; }); -(new static(func_get_args()))->push($this)->each(function ($item) { +new static(func_get_args())->push($this)->each(function ($item) { VarDumper::dump($item); }); -(new static(func_get_args())) +new static(func_get_args()) ->offset(10) ->push($this) ->each(function ($item) { @@ -673,7 +641,7 @@ $wrapper ->find("SomewhatLongNodeName") ->prop( "longPropFunctionName", - "second argument that pushes this group past 80 characters" + "second argument that pushes this group past 80 characters", ) ->then(function () { doSomething(); @@ -751,6 +719,16 @@ $window->{call()} return $b; }); + +$window->call($foo->bar->baz)->first()->second(); +$window->call($foo->bar->baz->foo())->first()->second(); + +(new Foo())->call($foo->bar->baz)->first()->second(); +(new Foo())->call($foo->bar->baz->foo())->first()->second(); + +Foo::call($foo->bar->baz)->first()->second(); +Foo::call($foo->bar->baz->foo())->first()->second(); + =====================================output===================================== {call()} return $b; }); +$window->call($foo->bar->baz)->first()->second(); +$window + ->call($foo->bar->baz->foo()) + ->first() + ->second(); + +new Foo()->call($foo->bar->baz)->first()->second(); +new Foo() + ->call($foo->bar->baz->foo()) + ->first() + ->second(); + +Foo::call($foo->bar->baz)->first()->second(); +Foo::call($foo->bar->baz->foo()) + ->first() + ->second(); + ================================================================================ `; @@ -976,7 +971,7 @@ DB::table("identity")->insert([ ]); DB::table( - "identity" + "identity", )->insertReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName([ "ref" => $ref, "handle" => $handle, @@ -996,7 +991,7 @@ Logger::use_logger("albus")->info( [ "uuid" => $uuid, "requested_date" => $date, - ] + ], ); DBwithlongname::table("identity") @@ -1036,7 +1031,7 @@ $page = TableRegistry::insertReallyReallyReallyReallyReallyReallyReallyReallyRea $page = TableRegistry::insertReallyReallyReallyLongName("Pages")[0]; $page = TableRegistry::insertReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName( - "Pages" + "Pages", )[0]; $component = find(".org-lclp-edit-copy-url-banner__link")[0] @@ -1058,7 +1053,7 @@ static::viewFactory() $view ?: static::$defaultSimpleView, array_merge($data, [ "paginator" => $this, - ]) + ]), ) ->render(); static::viewFactory() @@ -1066,7 +1061,7 @@ static::viewFactory() $view ?: static::$defaultSimpleView, array_merge($data, [ "paginator" => $this, - ]) + ]), ) ->render(); self::viewFactory() @@ -1074,7 +1069,7 @@ self::viewFactory() $view ?: static::$defaultSimpleView, array_merge($data, [ "paginator" => $this, - ]) + ]), ) ->render(); parent::viewFactory() @@ -1082,7 +1077,7 @@ parent::viewFactory() $view ?: static::$defaultSimpleView, array_merge($data, [ "paginator" => $this, - ]) + ]), ) ->render(); @@ -1091,7 +1086,7 @@ Foo::viewFactory() $view ?: static::$defaultSimpleView, array_merge($data, [ "paginator" => $this, - ]) + ]), ) ->render(); diff --git a/tests/member_chain/break-multiple.php b/tests/member_chain/break-multiple.php index 642568abb..8bc7fbb7b 100644 --- a/tests/member_chain/break-multiple.php +++ b/tests/member_chain/break-multiple.php @@ -2,6 +2,12 @@ $object->foo()->bar()->baz(); +$object->foo()->bar()->baz()->foo()->bar()->baz(); + +$object->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz(); + +$object->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz()->foo()->bar()->baz(); + foo()->bar()->baz(); foo()->bar->baz(); diff --git a/tests/member_chain/jsfmt.spec.js b/tests/member_chain/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/member_chain/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/member_chain/jsfmt.spec.mjs b/tests/member_chain/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/member_chain/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/member_chain/offsetlookup.php b/tests/member_chain/offsetlookup.php index a619ac7cf..5b37bc39e 100644 --- a/tests/member_chain/offsetlookup.php +++ b/tests/member_chain/offsetlookup.php @@ -53,3 +53,13 @@ ->catch(function () { return $b; }); + + +$window->call($foo->bar->baz)->first()->second(); +$window->call($foo->bar->baz->foo())->first()->second(); + +(new Foo())->call($foo->bar->baz)->first()->second(); +(new Foo())->call($foo->bar->baz->foo())->first()->second(); + +Foo::call($foo->bar->baz)->first()->second(); +Foo::call($foo->bar->baz->foo())->first()->second(); diff --git a/tests/method/__snapshots__/jsfmt.spec.js.snap b/tests/method/__snapshots__/jsfmt.spec.mjs.snap similarity index 95% rename from tests/method/__snapshots__/jsfmt.spec.js.snap rename to tests/method/__snapshots__/jsfmt.spec.mjs.snap index ea3783724..2e31fde39 100644 --- a/tests/method/__snapshots__/jsfmt.spec.js.snap +++ b/tests/method/__snapshots__/jsfmt.spec.mjs.snap @@ -73,9 +73,7 @@ class Foo return "private"; } - public function emptyMethod() - { - } + public function emptyMethod() {} public function emptyMethodWithComment() { @@ -87,9 +85,7 @@ class Foo print "Inside \`aMemberFunc()\`"; } - function bMemberFunc() - { - } + function bMemberFunc() {} } ================================================================================ diff --git a/tests/method/jsfmt.spec.js b/tests/method/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/method/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/method/jsfmt.spec.mjs b/tests/method/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/method/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/namedarguments/__snapshots__/jsfmt.spec.js.snap b/tests/namedarguments/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/namedarguments/__snapshots__/jsfmt.spec.js.snap rename to tests/namedarguments/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/namedarguments/jsfmt.spec.js b/tests/namedarguments/jsfmt.spec.js deleted file mode 100644 index cc787638c..000000000 --- a/tests/namedarguments/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"], { phpVersion: "8.0" }); diff --git a/tests/namedarguments/jsfmt.spec.mjs b/tests/namedarguments/jsfmt.spec.mjs new file mode 100644 index 000000000..d22c24d29 --- /dev/null +++ b/tests/namedarguments/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"], { phpVersion: "8.0" }); diff --git a/tests/namespace/__snapshots__/jsfmt.spec.js.snap b/tests/namespace/__snapshots__/jsfmt.spec.mjs.snap similarity index 91% rename from tests/namespace/__snapshots__/jsfmt.spec.js.snap rename to tests/namespace/__snapshots__/jsfmt.spec.mjs.snap index aff323364..5bef8e44f 100644 --- a/tests/namespace/__snapshots__/jsfmt.spec.js.snap +++ b/tests/namespace/__snapshots__/jsfmt.spec.mjs.snap @@ -1,5 +1,29 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`keywords.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); -$class = (new Foo(['VeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue']))->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); -$class = (new PendingDispatch(new $this->class(...func_get_args())))->chain($this->chain); -$dumper = in_array(PHP_SAPI, ['cli', 'phpdbg']) ? new CliDumper : new HtmlDumper; -$class = new static('Error encoding model ['.get_class($model).'] with ID ['.$model->getKey().'] to JSON: '.$message); -$response = new \\Illuminate\\Http\\JsonResponse(new JsonResponseTestJsonSerializeObject); -$result = (new Pipeline(new \\Illuminate\\Container\\Container)) - ->send('foo') - ->through([new PipelineTestPipeOne]) - ->then(function ($piped) { - return $piped; - }); - -$var = new Foo( -<<<'EOD' -Example of string -spanning multiple lines -using nowdoc syntax. -EOD - , - $arg -); - -$var = new Foo( - $arg, - <<<'EOD' -Example of string -spanning multiple lines -using nowdoc syntax. -EOD -); - -$var = new Foo( - $arg, - <<<'EOD' -Example of string -spanning multiple lines -using nowdoc syntax. -EOD - , - $arg -); - -$var = new Foo( - <<num = $num; - } - - use SomeTrait; -}; - -=====================================output===================================== -veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); -$class = (new Foo([ - "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => - "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue", -]))->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); -$class = (new PendingDispatch(new $this->class(...func_get_args())))->chain( - $this->chain -); -$dumper = in_array(PHP_SAPI, ["cli", "phpdbg"]) - ? new CliDumper() - : new HtmlDumper(); -$class = new static( - "Error encoding model [" . - get_class($model) . - "] with ID [" . - $model->getKey() . - "] to JSON: " . - $message -); -$response = new \\Illuminate\\Http\\JsonResponse( - new JsonResponseTestJsonSerializeObject() -); -$result = (new Pipeline(new \\Illuminate\\Container\\Container())) - ->send("foo") - ->through([new PipelineTestPipeOne()]) - ->then(function ($piped) { - return $piped; - }); - -$var = new Foo( - <<<'EOD' -Example of string -spanning multiple lines -using nowdoc syntax. -EOD - , - $arg -); - -$var = new Foo( - $arg, - <<<'EOD' -Example of string -spanning multiple lines -using nowdoc syntax. -EOD -); - -$var = new Foo( - $arg, - <<<'EOD' -Example of string -spanning multiple lines -using nowdoc syntax. -EOD - , - $arg -); - -$var = new Foo( - <<num = $num; - } - - use SomeTrait; -}; - -================================================================================ -`; diff --git a/tests/new/__snapshots__/jsfmt.spec.mjs.snap b/tests/new/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..177c147da --- /dev/null +++ b/tests/new/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,874 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`new.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = (new Foo(['VeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue']))->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = (new PendingDispatch(new $this->class(...func_get_args())))->chain($this->chain); +$dumper = in_array(PHP_SAPI, ['cli', 'phpdbg']) ? new CliDumper : new HtmlDumper; +$class = new static('Error encoding model ['.get_class($model).'] with ID ['.$model->getKey().'] to JSON: '.$message); +$response = new \\Illuminate\\Http\\JsonResponse(new JsonResponseTestJsonSerializeObject); +$result = (new Pipeline(new \\Illuminate\\Container\\Container)) + ->send('foo') + ->through([new PipelineTestPipeOne]) + ->then(function ($piped) { + return $piped; + }); + +$var = new Foo( +<<<'EOD' +Example of string +spanning multiple lines +using nowdoc syntax. +EOD + , + $arg +); + +$var = new Foo( + $arg, + <<<'EOD' +Example of string +spanning multiple lines +using nowdoc syntax. +EOD +); + +$var = new Foo( + $arg, + <<<'EOD' +Example of string +spanning multiple lines +using nowdoc syntax. +EOD + , + $arg +); + +$var = new Foo( + <<num = $num; + } + + use SomeTrait; +}; + +$a = new (b('c')['d']); +$client = new (config('longstringvariable','longerstringvariable')(['name'=>$myLongClassname['name']])); + +=====================================output===================================== +veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = (new Foo([ + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue", +]))->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = (new PendingDispatch(new $this->class(...func_get_args())))->chain( + $this->chain, +); +$dumper = in_array(PHP_SAPI, ["cli", "phpdbg"]) + ? new CliDumper() + : new HtmlDumper(); +$class = new static( + "Error encoding model [" . + get_class($model) . + "] with ID [" . + $model->getKey() . + "] to JSON: " . + $message, +); +$response = new \\Illuminate\\Http\\JsonResponse( + new JsonResponseTestJsonSerializeObject(), +); +$result = (new Pipeline(new \\Illuminate\\Container\\Container())) + ->send("foo") + ->through([new PipelineTestPipeOne()]) + ->then(function ($piped) { + return $piped; + }); + +$var = new Foo( + <<<'EOD' + Example of string + spanning multiple lines + using nowdoc syntax. + EOD + , + $arg, +); + +$var = new Foo( + $arg, + <<<'EOD' + Example of string + spanning multiple lines + using nowdoc syntax. + EOD + , +); + +$var = new Foo( + $arg, + <<<'EOD' + Example of string + spanning multiple lines + using nowdoc syntax. + EOD + , + $arg, +); + +$var = new Foo( + <<num = $num; + } + + use SomeTrait; +}; + +$a = new (b("c")["d"])(); +$client = new (config("longstringvariable", "longerstringvariable")([ + "name" => $myLongClassname["name"], +]))(); + +================================================================================ +`; + +exports[`new.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = (new Foo(['VeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue']))->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = (new PendingDispatch(new $this->class(...func_get_args())))->chain($this->chain); +$dumper = in_array(PHP_SAPI, ['cli', 'phpdbg']) ? new CliDumper : new HtmlDumper; +$class = new static('Error encoding model ['.get_class($model).'] with ID ['.$model->getKey().'] to JSON: '.$message); +$response = new \\Illuminate\\Http\\JsonResponse(new JsonResponseTestJsonSerializeObject); +$result = (new Pipeline(new \\Illuminate\\Container\\Container)) + ->send('foo') + ->through([new PipelineTestPipeOne]) + ->then(function ($piped) { + return $piped; + }); + +$var = new Foo( +<<<'EOD' +Example of string +spanning multiple lines +using nowdoc syntax. +EOD + , + $arg +); + +$var = new Foo( + $arg, + <<<'EOD' +Example of string +spanning multiple lines +using nowdoc syntax. +EOD +); + +$var = new Foo( + $arg, + <<<'EOD' +Example of string +spanning multiple lines +using nowdoc syntax. +EOD + , + $arg +); + +$var = new Foo( + <<num = $num; + } + + use SomeTrait; +}; + +$a = new (b('c')['d']); +$client = new (config('longstringvariable','longerstringvariable')(['name'=>$myLongClassname['name']])); + +=====================================output===================================== +veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = new Foo([ + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue", +])->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMethod(); +$class = new PendingDispatch(new $this->class(...func_get_args()))->chain( + $this->chain, +); +$dumper = in_array(PHP_SAPI, ["cli", "phpdbg"]) + ? new CliDumper() + : new HtmlDumper(); +$class = new static( + "Error encoding model [" . + get_class($model) . + "] with ID [" . + $model->getKey() . + "] to JSON: " . + $message, +); +$response = new \\Illuminate\\Http\\JsonResponse( + new JsonResponseTestJsonSerializeObject(), +); +$result = new Pipeline(new \\Illuminate\\Container\\Container()) + ->send("foo") + ->through([new PipelineTestPipeOne()]) + ->then(function ($piped) { + return $piped; + }); + +$var = new Foo( + <<<'EOD' + Example of string + spanning multiple lines + using nowdoc syntax. + EOD + , + $arg, +); + +$var = new Foo( + $arg, + <<<'EOD' + Example of string + spanning multiple lines + using nowdoc syntax. + EOD + , +); + +$var = new Foo( + $arg, + <<<'EOD' + Example of string + spanning multiple lines + using nowdoc syntax. + EOD + , + $arg, +); + +$var = new Foo( + <<num = $num; + } + + use SomeTrait; +}; + +$a = new (b("c")["d"])(); +$client = new (config("longstringvariable", "longerstringvariable")([ + "name" => $myLongClassname["name"], +]))(); + +================================================================================ +`; diff --git a/tests/new/jsfmt.spec.js b/tests/new/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/new/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/new/jsfmt.spec.mjs b/tests/new/jsfmt.spec.mjs new file mode 100644 index 000000000..0692003b1 --- /dev/null +++ b/tests/new/jsfmt.spec.mjs @@ -0,0 +1,2 @@ +run_spec(import.meta, ["php"], {phpVersion: "8.3"}); +run_spec(import.meta, ["php"]); diff --git a/tests/new/new.php b/tests/new/new.php index 1533fb40a..a4a16e1f1 100644 --- a/tests/new/new.php +++ b/tests/new/new.php @@ -187,3 +187,6 @@ public function __construct($num) use SomeTrait; }; + +$a = new (b('c')['d']); +$client = new (config('longstringvariable','longerstringvariable')(['name'=>$myLongClassname['name']])); diff --git a/tests/newline/__snapshots__/jsfmt.spec.js.snap b/tests/newline/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/newline/__snapshots__/jsfmt.spec.js.snap rename to tests/newline/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/newline/jsfmt.spec.js b/tests/newline/jsfmt.spec.js deleted file mode 100644 index e79d21a9b..000000000 --- a/tests/newline/jsfmt.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -run_spec(__dirname, ["php"], { endOfLine: "cr" }); -run_spec(__dirname, ["php"], { endOfLine: "crlf" }); -run_spec(__dirname, ["php"], { endOfLine: "lf" }); diff --git a/tests/newline/jsfmt.spec.mjs b/tests/newline/jsfmt.spec.mjs new file mode 100644 index 000000000..4096c5dc5 --- /dev/null +++ b/tests/newline/jsfmt.spec.mjs @@ -0,0 +1,3 @@ +run_spec(import.meta, ["php"], { endOfLine: "cr" }); +run_spec(import.meta, ["php"], { endOfLine: "crlf" }); +run_spec(import.meta, ["php"], { endOfLine: "lf" }); diff --git a/tests/nowdoc/__snapshots__/jsfmt.spec.js.snap b/tests/nowdoc/__snapshots__/jsfmt.spec.mjs.snap similarity index 99% rename from tests/nowdoc/__snapshots__/jsfmt.spec.js.snap rename to tests/nowdoc/__snapshots__/jsfmt.spec.mjs.snap index e319852be..3a9942819 100644 --- a/tests/nowdoc/__snapshots__/jsfmt.spec.js.snap +++ b/tests/nowdoc/__snapshots__/jsfmt.spec.mjs.snap @@ -1,8 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`nowdoc.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== @@ -1412,8 +1413,7 @@ string string string EOD - ) { - } + ) {} public function test1( $var, $var = <<<'EOD' @@ -1421,8 +1421,7 @@ string string string EOD - ) { - } + ) {} public function test2( $var = <<<'EOD' string @@ -1431,8 +1430,7 @@ string EOD , $var - ) { - } + ) {} } declare(ticks=1) { @@ -3486,8 +3484,7 @@ class Foo string string EOD - ) { - } + ) {} public function test1( $var, $var = <<<'EOD' @@ -3495,8 +3492,7 @@ class Foo string string EOD - ) { - } + ) {} public function test2( $var = <<<'EOD' string @@ -3505,8 +3501,7 @@ class Foo EOD , $var - ) { - } + ) {} } declare(ticks=1) { @@ -4152,6 +4147,7 @@ EOD; exports[`single.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== diff --git a/tests/nowdoc/jsfmt.spec.js b/tests/nowdoc/jsfmt.spec.js deleted file mode 100644 index e2d819801..000000000 --- a/tests/nowdoc/jsfmt.spec.js +++ /dev/null @@ -1,2 +0,0 @@ -run_spec(__dirname, ["php"]); -run_spec(__dirname, ["php"], { phpVersion: "7.3" }); diff --git a/tests/nowdoc/jsfmt.spec.mjs b/tests/nowdoc/jsfmt.spec.mjs new file mode 100644 index 000000000..8c7e30c0e --- /dev/null +++ b/tests/nowdoc/jsfmt.spec.mjs @@ -0,0 +1,2 @@ +run_spec(import.meta, ["php"], { phpVersion: "7.0" }); +run_spec(import.meta, ["php"], { phpVersion: "7.3" }); diff --git a/tests/nullsafepropertylookup/__snapshots__/jsfmt.spec.js.snap b/tests/nullsafepropertylookup/__snapshots__/jsfmt.spec.js.snap deleted file mode 100644 index 649435ad4..000000000 --- a/tests/nullsafepropertylookup/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,50 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`offsets.php 1`] = ` -====================================options===================================== -parsers: ["php"] -phpVersion: "8.0" -printWidth: 80 - | printWidth -=====================================input====================================== -foo; -// variable -$obj?->$var; -// variable variable -$obj?->$$var; -// literal with identifier -$obj?->{foo}; -// literal with variable -$obj?->{$var}; -// literal with call -$obj?->{call()}; -// encapsed (offset type) -$obj?->foo_{'test' . 'bar'}; -// variable with literal with call -$obj?->\${call()}; - -=====================================output===================================== -foo; -// variable -$obj?->$var; -// variable variable -$obj?->$$var; -// literal with identifier -$obj?->{foo}; -// literal with variable -$obj?->{$var}; -// literal with call -$obj?->{call()}; -// encapsed (offset type) -$obj?->foo_["test" . "bar"]; -// variable with literal with call -$obj?->\${call()}; - -================================================================================ -`; diff --git a/tests/nullsafepropertylookup/__snapshots__/jsfmt.spec.mjs.snap b/tests/nullsafepropertylookup/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..2d90ad71b --- /dev/null +++ b/tests/nullsafepropertylookup/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`offsets.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 + | printWidth +=====================================input====================================== +foo; +// variable +$obj?->$var; +// variable variable +$obj?->$$var; +// literal with identifier +$obj?->{foo}; +// literal with variable +$obj?->{$var}; +// literal with call +$obj?->{call()}; +// encapsed (offset type) +$obj?->foo_{'test' . 'bar'}; +// variable with literal with call +$obj?->\${call()}; + +// long methods names chaining +// all nullsafe +$obj?->aaaaaaaaaaaaaaaaaaaaaaaa()?->ccccccccccccccccccccccccccccc()?->ccccccccccccccccccccc(); +// first nullsafe +$obj?->aaaaaaaaaaaaaaaaaaaaaaaa()->ccccccccccccccccccccccccccccc()->ccccccccccccccccccccc(); +// middle nullsafe +$obj->aaaaaaaaaaaaaaaaaaaaaaaa()?->ccccccccccccccccccccccccccccc()->ccccccccccccccccccccc(); +// last nullsafe +$obj->aaaaaaaaaaaaaaaaaaaaaaaa()->ccccccccccccccccccccccccccccc()?->ccccccccccccccccccccc(); + +=====================================output===================================== +foo; +// variable +$obj?->$var; +// variable variable +$obj?->$$var; +// literal with identifier +$obj?->{foo}; +// literal with variable +$obj?->{$var}; +// literal with call +$obj?->{call()}; +// encapsed (offset type) +$obj?->foo_["test" . "bar"]; +// variable with literal with call +$obj?->\${call()}; + +// long methods names chaining +// all nullsafe +$obj?->aaaaaaaaaaaaaaaaaaaaaaaa() + ?->ccccccccccccccccccccccccccccc() + ?->ccccccccccccccccccccc(); +// first nullsafe +$obj?->aaaaaaaaaaaaaaaaaaaaaaaa() + ->ccccccccccccccccccccccccccccc() + ->ccccccccccccccccccccc(); +// middle nullsafe +$obj->aaaaaaaaaaaaaaaaaaaaaaaa() + ?->ccccccccccccccccccccccccccccc() + ->ccccccccccccccccccccc(); +// last nullsafe +$obj->aaaaaaaaaaaaaaaaaaaaaaaa() + ->ccccccccccccccccccccccccccccc() + ?->ccccccccccccccccccccc(); + +================================================================================ +`; + +exports[`reserved-keyword.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 + | printWidth +=====================================input====================================== +metaData?->abstract; + +// keyword: class +echo $record->learner->currentEnrollment?->class->grade->code; + + +=====================================output===================================== +metaData?->abstract; + +// keyword: class +echo $record->learner->currentEnrollment?->class->grade->code; + +================================================================================ +`; diff --git a/tests/nullsafepropertylookup/jsfmt.spec.js b/tests/nullsafepropertylookup/jsfmt.spec.js deleted file mode 100644 index cc787638c..000000000 --- a/tests/nullsafepropertylookup/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"], { phpVersion: "8.0" }); diff --git a/tests/nullsafepropertylookup/jsfmt.spec.mjs b/tests/nullsafepropertylookup/jsfmt.spec.mjs new file mode 100644 index 000000000..d22c24d29 --- /dev/null +++ b/tests/nullsafepropertylookup/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"], { phpVersion: "8.0" }); diff --git a/tests/nullsafepropertylookup/offsets.php b/tests/nullsafepropertylookup/offsets.php index ea94a0794..c56f9d646 100644 --- a/tests/nullsafepropertylookup/offsets.php +++ b/tests/nullsafepropertylookup/offsets.php @@ -16,3 +16,13 @@ $obj?->foo_{'test' . 'bar'}; // variable with literal with call $obj?->${call()}; + +// long methods names chaining +// all nullsafe +$obj?->aaaaaaaaaaaaaaaaaaaaaaaa()?->ccccccccccccccccccccccccccccc()?->ccccccccccccccccccccc(); +// first nullsafe +$obj?->aaaaaaaaaaaaaaaaaaaaaaaa()->ccccccccccccccccccccccccccccc()->ccccccccccccccccccccc(); +// middle nullsafe +$obj->aaaaaaaaaaaaaaaaaaaaaaaa()?->ccccccccccccccccccccccccccccc()->ccccccccccccccccccccc(); +// last nullsafe +$obj->aaaaaaaaaaaaaaaaaaaaaaaa()->ccccccccccccccccccccccccccccc()?->ccccccccccccccccccccc(); diff --git a/tests/nullsafepropertylookup/reserved-keyword.php b/tests/nullsafepropertylookup/reserved-keyword.php new file mode 100644 index 000000000..a12045b73 --- /dev/null +++ b/tests/nullsafepropertylookup/reserved-keyword.php @@ -0,0 +1,8 @@ +metaData?->abstract; + +// keyword: class +echo $record->learner->currentEnrollment?->class->grade->code; + diff --git a/tests/number/__snapshots__/jsfmt.spec.js.snap b/tests/number/__snapshots__/jsfmt.spec.mjs.snap similarity index 95% rename from tests/number/__snapshots__/jsfmt.spec.js.snap rename to tests/number/__snapshots__/jsfmt.spec.mjs.snap index b97c23794..f044abc68 100644 --- a/tests/number/__snapshots__/jsfmt.spec.js.snap +++ b/tests/number/__snapshots__/jsfmt.spec.mjs.snap @@ -114,6 +114,8 @@ $discount = 135_00; 0xCAFE_F00D; // hexadecimal 0b0101_1111; // binary 0137_041; // octal +0o123; // explicit octal, added in 8.1 +0O123; // explicit octal, added in 8.1 =====================================output===================================== "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", "key3" => "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", - ] + ], ) { return $arg; } @@ -211,7 +211,7 @@ function bar2( $arg = "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . - "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", ) { return $arg; } @@ -219,7 +219,7 @@ function bar2( function bar3( $arg = "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ? "1" - : "2" + : "2", ) { return $arg; } @@ -227,7 +227,7 @@ function bar3( function bar4( string $arg = "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ? "1" - : "2" + : "2", ) { return $arg; } @@ -237,7 +237,7 @@ function bar5( "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString" === "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ? "1" - : "2" + : "2", ) { return $arg; } @@ -245,9 +245,8 @@ function bar5( function foo( $arg = 'string string -string' -) { -} +string', +) {} function foo( $arg = 'string @@ -255,18 +254,16 @@ string string', $arg = 'string string -string' -) { -} +string', +) {} function foo( $a, $b = 'string string string', - $c -) { -} + $c, +) {} ================================================================================ `; @@ -322,104 +319,44 @@ class Foo extends ArrayIterator { ($var), ('other-key') => ($other_var)]; -$arr = ([('key') => ($var), ('other-key') => ($other_var)]); - -[$var, $other_var] = $arr; -[($var), ($other_var)] = $arr; -[('key') => ($var), ('other-key') => ($other_var)] = $arr; - -$var = array(1, 2, 3)[1]; -$var = (array(1, 2, 3))[1]; -$var = [1, 2, 3][1]; -$var = ([1, 2, 3])[1]; -$var = array(new stdClass())[0]; -$var = (array((new stdClass())))[0]; -$var = [new stdClass()][0]; -$var = ([(new stdClass())])[0]; - -=====================================output===================================== - $var, "other-key" => $other_var]; -$arr = ["key" => $var, "other-key" => $other_var]; - -[$var, $other_var] = $arr; -[$var, $other_var] = $arr; -["key" => $var, "other-key" => $other_var] = $arr; - -$var = [1, 2, 3][1]; -$var = [1, 2, 3][1]; -$var = [1, 2, 3][1]; -$var = [1, 2, 3][1]; -$var = [new stdClass()][0]; -$var = [new stdClass()][0]; -$var = [new stdClass()][0]; -$var = [new stdClass()][0]; - -================================================================================ -`; - -exports[`assign.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - 'value']); - -($var = $var ? $var : function() { return 0; }); - -for ($i = 1; $i <= 10; $i++) { - echo $i; -} - -for (($i = 1); ($i <= 10); ($i++)) { - echo $i; -} -for (($i = 1), ($j = 0); ($i <= 10); ($j += $i), print ($i), ($i++)); - -if ($a = 1) {} - -while ($var = 1) {} -while ($var = current($array) !== FALSE) {} -while (($var = current($array)) !== FALSE) {} - -$var = $var || $var = new MyClass(); -$var = $var || ($var = new MyClass()); - -if (true) $var = $var; -if (true) ($var = $var); -if (true) { ($var = $var); } else if (false) ($var = $var); -if (true) { ($var = $var); } else if (false) { ($var = $var); } else ($var = $var); - -if (true) { - $var = $var; - ($var = $var); -} - -while ($i <= 10) $i = 1; -while ($i <= 10) ($i = 1); - -do { - echo $i; -} while ($i = 0); - -for ($i = 1; $i <= 10; $i++) $i = 1; -for ($i = 1; $i <= 10; $i++) ($i = 1); - -foreach ($arr as &$value) $value = $value * 2; -foreach ($arr as &$value) ($value = $value * 2); - -switch ($i = 1) { - case 0: - echo "i equals 0"; - break; - case 1: - echo "i equals 1"; - break; - case 2: - echo "i equals 2"; - break; -} - -switch (($i = 1)) { - case 0: - echo "i equals 0"; - break; - case 1: - echo "i equals 1"; - break; - case 2: - echo "i equals 2"; - break; -} - -=====================================output===================================== - "value"]; - -$var = $var - ? $var - : function () { - return 0; - }; - -for ($i = 1; $i <= 10; $i++) { - echo $i; -} - -for ($i = 1; $i <= 10; $i++) { - echo $i; -} -for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); - -if ($a = 1) { -} - -while ($var = 1) { -} -while ($var = current($array) !== false) { -} -while (($var = current($array)) !== false) { -} - -$var = $var || ($var = new MyClass()); -$var = $var || ($var = new MyClass()); - -if (true) { - $var = $var; -} -if (true) { - $var = $var; -} -if (true) { - $var = $var; -} elseif (false) { - $var = $var; -} -if (true) { - $var = $var; -} elseif (false) { - $var = $var; -} else { - $var = $var; -} - -if (true) { - $var = $var; - $var = $var; -} - -while ($i <= 10) { - $i = 1; -} -while ($i <= 10) { - $i = 1; -} - -do { - echo $i; -} while ($i = 0); - -for ($i = 1; $i <= 10; $i++) { - $i = 1; -} -for ($i = 1; $i <= 10; $i++) { - $i = 1; -} - -foreach ($arr as &$value) { - $value = $value * 2; -} -foreach ($arr as &$value) { - $value = $value * 2; -} - -switch ($i = 1) { - case 0: - echo "i equals 0"; - break; - case 1: - echo "i equals 1"; - break; - case 2: - echo "i equals 2"; - break; -} - -switch ($i = 1) { - case 0: - echo "i equals 0"; - break; - case 1: - echo "i equals 1"; - break; - case 2: - echo "i equals 2"; - break; -} - -================================================================================ -`; - -exports[`assignref.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - 0) {} -if (($foo = &test1()) && test2($foo) > 0) {} - -call(($a =& $b)); - -=====================================output===================================== - 0) { -} -if ($foo = &test1() && test2($foo) > 0) { -} - -call($a = &$b); - -================================================================================ -`; - -exports[`bin.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -> 20 >> 30; -$var = (10 >> 20) >> 30; -$var = 10 >> (20 >> 30); - -$var = 10 ^ 20 ^ 30; -$var = (10 ^ 20) ^ 30; -$var = 10 ^ (20 ^ 30); - -$var = 10 | 20 | 30; -$var = (10 | 20) | 30; -$var = 10 | (20 | 30); - -$var = false || true; -$var = (false || true); -$var = false or true; -$var = (false or true); -$var = true && false; -$var = (true && false); -$var = true and false; -$var = (true and false); - -$var = $var || $var(); -$var = ($var || $var)(); -$var = $var && $var(); -$var = ($var && $var)(); -$var = call($var || $var); -$var = call(($var || $var)); -$var = call($var && $var); -$var = call(($var && $var)); - -$var = +($var || $var); -$var = -($var || $var); -$var = ~($var || $var); - -$var = ($var || $var)->foo; -$var = ($var || $var)->foo(); -$var = ($var || $var)[1]; - -$var = $var || $var && $var; -$var = ($var || $var) && $var; -$var = $var || ($var && $var); - -$var = $var & ($var || 'test'); -$var = ($var || 'test') & $var; -$var = $var & ($var . 'test'); -$var = ($var . 'test') & $var; -$var = ($var & $var) || 'test'; -$var = $var || ('test' & $var); - -$var = ($var || $var) % 100; -$var = ($var + $var) % 100; -$var = 100 % ($var || $var); -$var = 100 % ($var + $var); -$var = $var || ($var % 100); -$var = $var + ($var % 100); -$var = (100 % $var) || $var; -$var = (100 % $var) + $var; - -$var = ($var + $var) >> 1; -$var = (($var - 1) >> $var) & $var; -$var = $var > $var ? 0 : ($var - $var) >> $var; -$var = (($var - $var) >> $var) + 1; - -if ($var < 1 << ($var + $var)) {} - -$var = $var < $var ? 0 : ((($var - 1) >> $var) << $var); -$var = 1 - (2 * ($var[3] >> 7)); -$var = ((($var[3] << 1) & 0xff) | ($var[2] >> 7)) - 127; -$var = (($var[2] & 0x7f) << 16) | ($var[1] << 8) | $var[0]; - -$var = 2 / 3 * 10 / 2 + 2; - -$var = (($var / $var) * $var - $var / 2) * call($var); -$var = (($var / $var) * $var - $var / 2) * call($var); - -$var = $var % 10 - 5; -$var = $var * $var % 10; -$var = $var % 10 > 5; -$var = $var % 10 == 0; - -$var = $var + $var / $var; -$var = $var / $var + $var; - -$var = $var * $var % $var; -$var = $var / $var % $var; -$var = $var % $var * $var; -$var = $var % $var / $var; - -$var = $var % $var % $var; - -$var = $var << $var >> $var; -$var = $var >> $var << $var; -$var = $var >> $var >> $var; -$var = $var + $var >> $var; -$var = ($var + $var) >> $var; -$var = $var + ($var >> $var); - -$var = $var | $var & $var; -$var = $var & $var | $var; -$var = $var ^ $var ^ $var; -$var = $var & $var & $var; -$var = $var | $var | $var; -$var = $var & $var >> $var; -$var = $var << $var | $var; - -$var = $var ? 'foo' : 'bar' . 'test'; -$var = ($var ? 'foo' : 'bar') . 'test'; -$var = $var ? 'foo' : ('bar' . 'test'); - -call(($var + $var)); - -$var = call(($var + $var)); - -$var = $var + $var ** 2; -$var = ($var + $var) ** 2; -$var = $var + ($var ** 2); -$var = (+$var) ** 2; -$var = +$var ** 2; - -$var = $foo instanceof Foo; -$var = $foo instanceof Foo || $foo instanceof Foo; -$var = ($foo instanceof Foo) || ($foo instanceof Foo); -$var = (($foo) instanceof Foo); - -$var = !$var; -$var = !($var); -$var = (!($var)); -$var = !!$var; -$var = !!($var); -$var = !(!($var)); -$var = (!(!($var))); -$var = !!!$var; -$var = !!!($var); -$var = !!(!($var)); -$var = !(!(!($var))); -$var = (!(!(!($var)))); - -$var = !$var || !$var; -$var = (!($var) || !($var)); -$var = !(!($var) || !($var)); - -$var = $var + $var * $var; -$var = ($var + $var) * $var; - -$var = @foo() || @foo(); -$var = @(foo() || foo()); - -($var += ($var += ($var += $var))); -($var -= ($var -= ($var -= $var))); -($var *= ($var *= ($var *= $var))); -($var **= ($var **= ($var **= $var))); -($var /= ($var /= ($var /= $var))); -($var .= ($var .= ($var .= $var))); -($var %= ($var %= ($var %= $var))); -($var &= ($var &= ($var &= $var))); -($var |= ($var |= ($var |= $var))); -($var ^= ($var ^= ($var ^= $var))); -($var <<= ($var <<= ($var <<= $var))); -($var >>= ($var >>= ($var >>= $var))); - -$var = $var | $var | $var; -$var = $var | ($var | $var); -$var = ($var | $var) | $var; -$var = $var & $var & $var; -$var = $var & ($var & $var); -$var = ($var & $var) & $var; - -$var = $var ^ $var | $var; -$var = ($var ^ $var) | $var; -$var = $var | $var ^ $var; -$var = $var | ($var ^ $var); -$var = ($var | $var) ^ $var; - -$var = $var & $var | $var; -$var = ($var & $var) | $var; -$var = $var | $var & $var; -$var = $var | ($var & $var); -$var = ($var | $var) & $var; - -$var = $var == $var || false; -$var = ($var == $var) || false; -$var = $var == ($var || false); - -$var = false || $var == $var; -$var = false || ($var == $var); -$var = ($var || false) == $var; - -$var = 'string' . true ? '1' : '2'; -$var = 'string' . (true ? '1' : '2'); - -$var = 'string' . (100 + 100); -$var = (100 + 100) . 'string'; -$var = 'string' . ($var || 100); -$var = ($var || 100) . 'string'; -$var = 'string' . ($var * 100); -$var = ($var * 100) . 'string'; -$var = 'string' . !$var; -$var = !$var . 'string'; -$var = 'string' . ($var | 100); -$var = ($var | 100) . 'string'; - -$var = $var . $var % $var; -$var = ($var . $var) % $var; -$var = $var % $var . $var; -$var = $var % ($var . $var); - -$var = '100' - '100' - '100'; -$var = ('100' - '100') - '100'; -$var = '100' - ('100' - '100'); - -if (false || true) {}; -if ((false || true)) {}; -if (false or true) {}; -if ((false or true)) {}; -if (true && false) {}; -if ((true && false)) {}; -if (true and false) {}; -if ((true and false)) {}; - -if (!$foo or $bar == -1) {} -if ((!$foo or $bar == -1)) {} -if ((!$foo or $bar) == -1) {} -if (!$foo or ($bar == -1)) {} - -do {} while ($foo and $bar); -while ($foo or $bar < 10) {} -for ($foo or $bar;;) {} -switch ($foo or $bar) {} - -$a ** $b ** $c; -($a ** $b) ** $c; -$a->b ** $c; -(-$a) ** $b; -$a ** -$b; --($a**$b); -($a * $b) ** $c; -$a ** ($b * $c); -($a % $b) ** $c; - -$var = $var + $var ?? ''; -$var = $var + ($var ?? ''); -$var = ($var + $var) ?? ''; -$var = $var ?? null + 1; -$var = ($var ?? null) + 1; -$var = $var && ($var ?? true); -$var = ($var ?? true) && $var; -$var = $var && ($var ?? null) === true; -$var = ($var ?? null) === true && $var; - -$findAll = $cachesNames === []; -$findAll = ($cachesNames === []); - -$isNamespaced = strpos($fixture, '\\\\') !== false; -$isNamespaced = (strpos($fixture, '\\\\') !== false); - -$var = $a['apply_time'] > $b['apply_time'] ? -1 : +1; -$var = ($a['apply_time'] > $b['apply_time']) ? -1 : +1; - -$var = $page > 0 || $page == 0 && $this->forcePageParam; -$var = $page > 0 || ($page == 0 && $this->forcePageParam); - -@foo() || @foo(); -(@foo()) || (@foo()); -$var = @foo() || @foo(); -$var = (@foo() || @foo()); - -@$i / 0; -@($i) / 0; - -$var = "a" . (@$b ? 'bar' : "baz"); - -$a = (false && foo()); -$b = (true || foo()); -$c = (false and foo()); -$d = (true or foo()); - -$f = false or true; -$h = true and false; - -$my_file = call('non_existent_file') or die("Failed opening file: error was '$php_errormsg'"); -($my_file = call('non_existent_file')) or die("Failed opening file: error was '$php_errormsg'"); - -$my_file = call('non_existent_file') and die("Failed opening file: error was '$php_errormsg'"); -($my_file = call('non_existent_file')) and die("Failed opening file: error was '$php_errormsg'"); - -$var = $obj->foo ?? "default"; -$var = $foo ? $bar ?? $foo : $baz; -$var = $foo ?? ($bar ?? $baz); -$var = ($foo ?? $baz) || $baz; -$var = $foo ?? $baz || $baz; -$var = ($foo && $baz) ?? $baz; -$var = $foo && ($baz ?? $baz); - -$result = 2 ** $number - 1; -$result = (2 ** $number) - 1; -$result = 2 ** ($number - 1); - -=====================================output===================================== -> 20) >> 30; -$var = (10 >> 20) >> 30; -$var = 10 >> (20 >> 30); - -$var = 10 ^ 20 ^ 30; -$var = 10 ^ 20 ^ 30; -$var = 10 ^ (20 ^ 30); - -$var = 10 | 20 | 30; -$var = 10 | 20 | 30; -$var = 10 | (20 | 30); - -$var = false || true; -$var = false || true; -($var = false) or true; -$var = (false or true); -$var = true && false; -$var = true && false; -($var = true) and false; -$var = (true and false); - -$var = $var || $var(); -$var = ($var || $var)(); -$var = $var && $var(); -$var = ($var && $var)(); -$var = call($var || $var); -$var = call($var || $var); -$var = call($var && $var); -$var = call($var && $var); - -$var = +($var || $var); -$var = -($var || $var); -$var = ~($var || $var); - -$var = ($var || $var)->foo; -$var = ($var || $var)->foo(); -$var = ($var || $var)[1]; - -$var = $var || ($var && $var); -$var = ($var || $var) && $var; -$var = $var || ($var && $var); - -$var = $var & ($var || "test"); -$var = ($var || "test") & $var; -$var = $var & ($var . "test"); -$var = ($var . "test") & $var; -$var = $var & $var || "test"; -$var = $var || "test" & $var; - -$var = ($var || $var) % 100; -$var = ($var + $var) % 100; -$var = 100 % ($var || $var); -$var = 100 % ($var + $var); -$var = $var || $var % 100; -$var = $var + ($var % 100); -$var = 100 % $var || $var; -$var = (100 % $var) + $var; - -$var = $var + $var >> 1; -$var = ($var - 1 >> $var) & $var; -$var = $var > $var ? 0 : $var - $var >> $var; -$var = ($var - $var >> $var) + 1; - -if ($var < 1 << $var + $var) { -} - -$var = $var < $var ? 0 : ($var - 1 >> $var) << $var; -$var = 1 - 2 * ($var[3] >> 7); -$var = ((($var[3] << 1) & 0xff) | ($var[2] >> 7)) - 127; -$var = (($var[2] & 0x7f) << 16) | ($var[1] << 8) | $var[0]; - -$var = ((2 / 3) * 10) / 2 + 2; - -$var = (($var / $var) * $var - $var / 2) * call($var); -$var = (($var / $var) * $var - $var / 2) * call($var); - -$var = ($var % 10) - 5; -$var = ($var * $var) % 10; -$var = $var % 10 > 5; -$var = $var % 10 == 0; - -$var = $var + $var / $var; -$var = $var / $var + $var; - -$var = ($var * $var) % $var; -$var = ($var / $var) % $var; -$var = ($var % $var) * $var; -$var = ($var % $var) / $var; - -$var = ($var % $var) % $var; - -$var = ($var << $var) >> $var; -$var = ($var >> $var) << $var; -$var = ($var >> $var) >> $var; -$var = $var + $var >> $var; -$var = $var + $var >> $var; -$var = $var + ($var >> $var); - -$var = $var | ($var & $var); -$var = ($var & $var) | $var; -$var = $var ^ $var ^ $var; -$var = $var & $var & $var; -$var = $var | $var | $var; -$var = $var & ($var >> $var); -$var = ($var << $var) | $var; - -$var = $var ? "foo" : "bar" . "test"; -$var = ($var ? "foo" : "bar") . "test"; -$var = $var ? "foo" : "bar" . "test"; - -call($var + $var); - -$var = call($var + $var); - -$var = $var + $var ** 2; -$var = ($var + $var) ** 2; -$var = $var + $var ** 2; -$var = (+$var) ** 2; -$var = (+$var) ** 2; - -$var = $foo instanceof Foo; -$var = $foo instanceof Foo || $foo instanceof Foo; -$var = $foo instanceof Foo || $foo instanceof Foo; -$var = $foo instanceof Foo; - -$var = !$var; -$var = !$var; -$var = !$var; -$var = !!$var; -$var = !!$var; -$var = !!$var; -$var = !!$var; -$var = !!!$var; -$var = !!!$var; -$var = !!!$var; -$var = !!!$var; -$var = !!!$var; - -$var = !$var || !$var; -$var = !$var || !$var; -$var = !(!$var || !$var); - -$var = $var + $var * $var; -$var = ($var + $var) * $var; - -$var = @foo() || @foo(); -$var = @(foo() || foo()); - -$var += $var += $var += $var; -$var -= $var -= $var -= $var; -$var *= $var *= $var *= $var; -$var **= $var **= $var **= $var; -$var /= $var /= $var /= $var; -$var .= $var .= $var .= $var; -$var %= $var %= $var %= $var; -$var &= $var &= $var &= $var; -$var |= $var |= $var |= $var; -$var ^= $var ^= $var ^= $var; -$var <<= $var <<= $var <<= $var; -$var >>= $var >>= $var >>= $var; - -$var = $var | $var | $var; -$var = $var | ($var | $var); -$var = $var | $var | $var; -$var = $var & $var & $var; -$var = $var & ($var & $var); -$var = $var & $var & $var; - -$var = ($var ^ $var) | $var; -$var = ($var ^ $var) | $var; -$var = $var | ($var ^ $var); -$var = $var | ($var ^ $var); -$var = ($var | $var) ^ $var; - -$var = ($var & $var) | $var; -$var = ($var & $var) | $var; -$var = $var | ($var & $var); -$var = $var | ($var & $var); -$var = ($var | $var) & $var; - -$var = $var == $var || false; -$var = $var == $var || false; -$var = $var == ($var || false); - -$var = false || $var == $var; -$var = false || $var == $var; -$var = ($var || false) == $var; - -$var = "string" . true ? "1" : "2"; -$var = "string" . (true ? "1" : "2"); - -$var = "string" . (100 + 100); -$var = 100 + 100 . "string"; -$var = "string" . ($var || 100); -$var = ($var || 100) . "string"; -$var = "string" . $var * 100; -$var = $var * 100 . "string"; -$var = "string" . !$var; -$var = !$var . "string"; -$var = "string" . ($var | 100); -$var = ($var | 100) . "string"; - -$var = $var . $var % $var; -$var = ($var . $var) % $var; -$var = $var % $var . $var; -$var = $var % ($var . $var); - -$var = "100" - "100" - "100"; -$var = "100" - "100" - "100"; -$var = "100" - ("100" - "100"); - -if (false || true) { -} -if (false || true) { -} -if (false or true) { -} -if (false or true) { -} -if (true && false) { -} -if (true && false) { -} -if (true and false) { -} -if (true and false) { -} - -if (!$foo or $bar == -1) { -} -if (!$foo or $bar == -1) { -} -if ((!$foo or $bar) == -1) { -} -if (!$foo or $bar == -1) { -} - -do { -} while ($foo and $bar); -while ($foo or $bar < 10) { -} -for ($foo or $bar; ; ) { -} -switch ($foo or $bar) { -} - -$a ** ($b ** $c); -($a ** $b) ** $c; -$a->b ** $c; -(-$a) ** $b; -$a ** -$b; --($a ** $b); -($a * $b) ** $c; -$a ** ($b * $c); -($a % $b) ** $c; - -$var = $var + $var ?? ""; -$var = $var + ($var ?? ""); -$var = $var + $var ?? ""; -$var = $var ?? null + 1; -$var = ($var ?? null) + 1; -$var = $var && ($var ?? true); -$var = ($var ?? true) && $var; -$var = $var && ($var ?? null) === true; -$var = ($var ?? null) === true && $var; - -$findAll = $cachesNames === []; -$findAll = $cachesNames === []; - -$isNamespaced = strpos($fixture, "\\\\") !== false; -$isNamespaced = strpos($fixture, "\\\\") !== false; - -$var = $a["apply_time"] > $b["apply_time"] ? -1 : +1; -$var = $a["apply_time"] > $b["apply_time"] ? -1 : +1; - -$var = $page > 0 || ($page == 0 && $this->forcePageParam); -$var = $page > 0 || ($page == 0 && $this->forcePageParam); - -@foo() || @foo(); -@foo() || @foo(); -$var = @foo() || @foo(); -$var = @foo() || @foo(); - -@$i / 0; -@$i / 0; - -$var = "a" . (@$b ? "bar" : "baz"); - -$a = false && foo(); -$b = true || foo(); -$c = (false and foo()); -$d = (true or foo()); - -($f = false) or true; -($h = true) and false; - -($my_file = call("non_existent_file")) or - die("Failed opening file: error was '$php_errormsg'"); -($my_file = call("non_existent_file")) or - die("Failed opening file: error was '$php_errormsg'"); - -($my_file = call("non_existent_file")) and - die("Failed opening file: error was '$php_errormsg'"); -($my_file = call("non_existent_file")) and - die("Failed opening file: error was '$php_errormsg'"); - -$var = $obj->foo ?? "default"; -$var = $foo ? $bar ?? $foo : $baz; -$var = $foo ?? ($bar ?? $baz); -$var = ($foo ?? $baz) || $baz; -$var = $foo ?? $baz || $baz; -$var = $foo && $baz ?? $baz; -$var = $foo && ($baz ?? $baz); - -$result = 2 ** $number - 1; -$result = 2 ** $number - 1; -$result = 2 ** ($number - 1); - -================================================================================ -`; - -exports[`block.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -c()); -} - -=====================================output===================================== -c(); -} - -================================================================================ -`; - -exports[`break.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -call(); -$var = ($foo)->call(); -$var = ($foo->call()); -$var = $foo->call()->call(); -$var = ($foo)->call()->call(); -$var = (($foo)->call())->call(); -$var = ((($foo)->call())->call()); - -$var = call((call())); -$var = call(...(call())); -$var = (call((call()))); -$var = (call((call()), (call()))); - -$var = $func(); -$var = ($func)(); -$var = ($func()); -$var = (($func)()); - -$var = $this->$name(); -$var = ($this)->$name(); -$var = ($this->$name()); -$var = (($this)->$name()); - -$var = Foo::call(); -$var = (Foo::call()); - -$var = (array("Foo", "bar"))(); -$var = (array(new Foo, "baz"))(); -$var = ((string) 1234)(); -$var = "Foo::bar"(); -$var = ("Foo::bar")(); - -call(($a), (($b)), ((($c)))); -call($a = $b); -call(($a = $b)); -call($a = new Foo()); -call(($a = new Foo())); -call($a = (new Foo())); -call(($a = (new Foo()))); -$foo->call(($a = (new Foo()))); -Foo::call(($a = (new Foo()))); - -=====================================output===================================== -call(); -$var = $foo->call(); -$var = $foo->call(); -$var = $foo->call()->call(); -$var = $foo->call()->call(); -$var = $foo->call()->call(); -$var = $foo->call()->call(); - -$var = call(call()); -$var = call(...call()); -$var = call(call()); -$var = call(call(), call()); - -$var = $func(); -$var = $func(); -$var = $func(); -$var = $func(); - -$var = $this->$name(); -$var = $this->$name(); -$var = $this->$name(); -$var = $this->$name(); - -$var = Foo::call(); -$var = Foo::call(); - -$var = (["Foo", "bar"])(); -$var = ([new Foo(), "baz"])(); -$var = ((string) 1234)(); -$var = ("Foo::bar")(); -$var = ("Foo::bar")(); - -call($a, $b, $c); -call($a = $b); -call($a = $b); -call($a = new Foo()); -call($a = new Foo()); -call($a = new Foo()); -call($a = new Foo()); -$foo->call($a = new Foo()); -Foo::call($a = new Foo()); - -================================================================================ -`; - -exports[`cast.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - 'foo'))); -$var = ((object) (['1' => 'foo'])); -$var = ((object) 'ciao')->scalar; -$var = ((object) array('test'))->{'0'}; -$var = (((object) array('test'))->{'0'}); -$var = (array) new B(); -$var = (array) (new B()); -$var = ((array) (new B())); -$var = ((array) (new B()))['foo']; -$var = ((string) 1234)[1]; -$var = ((string) 123)(); -$var = ((string) (123))(); -$var = "test"[0]; -$var = (array) "test"[0]; -$var = ((array) "test")[0]; -$var = [(int) 'key' => (int) '1']; -$var = [((int) 'key') => ((int) '1')]; -$var = ([((int) 'key') => ((int) '1')]); -$var = (int) $raw['data'] + $value; -$var = ((int) $raw['data']) + $value; -$var = (bool) $var ? 1 : 2; -$var = (bool) ($var ? 1 : 2); -$var = (bool) $var + 1 ? 1 : 2; -$var = ((bool) $var) + 1 ? 1 : 2; -$var = (bool) ($var + 1) ? 1 : 2; -$var = ((bool) $var) ? 1 : 2; -$var = ((bool) $var) ? (bool) 1 : (bool) 2; -$var = ((bool) $var) ? ((bool) 1) : ((bool) 2); -$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; -$var = ((bool) $var) ? ((bool) 1 + 2) : ((bool) 2 + 3); -$var = ((bool) $var) ? (bool) $var ? 1 : 2 : (bool) $var ? 1 : 2; -$var = ((bool) $var) ? ((bool) $var) ? 1 : 2 : ((bool) $var) ? 1 : 2; -$var = ((bool) $var) ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2); -$var = (bool) ($var ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2)); -$var = (bool) $var->foo; -$var = (bool) ($var->foo); -$var = ((bool) $var->foo); -$var = ((object) $var)->foo; -$var = ((object) $var)[0]; -$var = (int) 'test' + (int) 'test'; -$var = ((int) 'test') + ((int) 'test'); -$var = ((int) 'test') * ((int) 'test'); -$var = ((int) 'test') | ((int) 'test'); -$var = ((int) 'test') % ((int) 'test'); -$var = @((int) 'test'); -$var = @((int) call()); -$var = (int) (int) 1; -$var = (int) ((int) 1); -$var = call((int) $var, (int) call(), (int) $minutes * 60); -$var = call(((int) $var), ((int) call()), (int) ($minutes * 60)); -$var = $var + (int) $minutes * 60; -$var = $var + (int) ($minutes * 60); - -return (int) $var; -return ((int) $var); - -if ((int) 1 === 1) {} -if (1 === (int) 1) {} -if (((int) 1) === 1) {} -if (1 === ((int) 1)) {} -if ((int) 1 === (int) 1) {} -if (((int) 1) === (int) 1) {} -if ((int) 1 === ((int) 1)) {} -if (((int) (1)) === ((int) 1)) {} - -$var = (bool) call(); -$var = $var || (bool) call(); -$var = (bool) call() || $var; - -$var = (int) $var === 1; -$var = ((int) $var) === 1; -$var = (int) ($var === 1); - -$this->apc->put($this->prefix.$key, $value, (int) ($minutes * 60)); - -$timeout = (int) ($server->timeout / 1000) + (($server->timeout % 1000 > 0) ? 1 : 0); - -=====================================output===================================== - "foo"]); -$var = ((object) ["1" => "foo"]); -$var = ((object) "ciao")->scalar; -$var = ((object) ["test"])->{'0'}; -$var = ((object) ["test"])->{'0'}; -$var = (array) new B(); -$var = (array) new B(); -$var = ((array) new B()); -$var = ((array) new B())["foo"]; -$var = ((string) 1234)[1]; -$var = ((string) 123)(); -$var = ((string) 123)(); -$var = "test"[0]; -$var = (array) "test"[0]; -$var = ((array) "test")[0]; -$var = [(int) "key" => (int) "1"]; -$var = [((int) "key") => ((int) "1")]; -$var = [((int) "key") => ((int) "1")]; -$var = (int) $raw["data"] + $value; -$var = ((int) $raw["data"]) + $value; -$var = (bool) $var ? 1 : 2; -$var = (bool) ($var ? 1 : 2); -$var = (bool) $var + 1 ? 1 : 2; -$var = ((bool) $var) + 1 ? 1 : 2; -$var = (bool) ($var + 1) ? 1 : 2; -$var = ((bool) $var) ? 1 : 2; -$var = ((bool) $var) ? (bool) 1 : (bool) 2; -$var = ((bool) $var) ? ((bool) 1) : ((bool) 2); -$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; -$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; -$var = (((bool) $var) ? ((bool) $var ? 1 : 2) : (bool) $var) ? 1 : 2; -$var = (((bool) $var) ? (((bool) $var) ? 1 : 2) : ((bool) $var)) ? 1 : 2; -$var = ((bool) $var) ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2); -$var = (bool) ($var ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2)); -$var = (bool) $var->foo; -$var = (bool) $var->foo; -$var = ((bool) $var->foo); -$var = ((object) $var)->foo; -$var = ((object) $var)[0]; -$var = (int) "test" + (int) "test"; -$var = ((int) "test") + ((int) "test"); -$var = ((int) "test") * ((int) "test"); -$var = ((int) "test") | ((int) "test"); -$var = ((int) "test") % ((int) "test"); -$var = @((int) "test"); -$var = @((int) call()); -$var = (int) (int) 1; -$var = (int) ((int) 1); -$var = call((int) $var, (int) call(), (int) $minutes * 60); -$var = call(((int) $var), ((int) call()), (int) ($minutes * 60)); -$var = $var + (int) $minutes * 60; -$var = $var + (int) ($minutes * 60); - -return (int) $var; -return (int) $var; - -if ((int) 1 === 1) { -} -if (1 === (int) 1) { -} -if (((int) 1) === 1) { -} -if (1 === ((int) 1)) { -} -if ((int) 1 === (int) 1) { -} -if (((int) 1) === (int) 1) { -} -if ((int) 1 === ((int) 1)) { -} -if (((int) 1) === ((int) 1)) { -} - -$var = (bool) call(); -$var = $var || (bool) call(); -$var = (bool) call() || $var; - -$var = (int) $var === 1; -$var = ((int) $var) === 1; -$var = (int) ($var === 1); - -$this->apc->put($this->prefix . $key, $value, (int) ($minutes * 60)); - -$timeout = - (int) ($server->timeout / 1000) + ($server->timeout % 1000 > 0 ? 1 : 0); - -================================================================================ -`; - -exports[`clone.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -foo; -$var = (clone $a->foo); -$var = (clone $a)->foo(); - -$var = (clone foo())->bar()->foo(); -$var = ((clone foo())->bar())->foo(); -$var = (((clone foo())->bar())->foo()); -$var = (((clone foo())->bar())->foo())[0]; -$var = ((((clone foo())->bar())->foo())[0])[1]; -$var = (((clone foo())->bar())->foo())->baz(); -$var = (clone $foo())->bar; -$var = (clone $bar->y)->x; -$var = (clone $foo)[0]; -$var = (clone $foo)[0]['string']; - -$var = clone $a->b; -$var = clone $a->b(); -$var = (clone $a)->b(); -$var = ((clone $a)->b()); - -$var = (clone ($var)); -$var = (clone($var)); -$var = (clone($var->foo)); -$var = (clone($var->foo))->foo; - -=====================================output===================================== -foo; -$var = clone $a->foo; -$var = (clone $a)->foo(); - -$var = (clone foo())->bar()->foo(); -$var = (clone foo())->bar()->foo(); -$var = (clone foo())->bar()->foo(); -$var = (clone foo())->bar()->foo()[0]; -$var = (clone foo())->bar()->foo()[0][1]; -$var = (clone foo()) - ->bar() - ->foo() - ->baz(); -$var = (clone $foo())->bar; -$var = (clone $bar->y)->x; -$var = (clone $foo)[0]; -$var = (clone $foo)[0]["string"]; - -$var = clone $a->b; -$var = clone $a->b(); -$var = (clone $a)->b(); -$var = (clone $a)->b(); - -$var = clone $var; -$var = clone $var; -$var = clone $var->foo; -$var = (clone $var->foo)->foo; - -================================================================================ -`; - -exports[`closure.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - $b)) { - echo "a is bigger than b"; -} elseif (($a == $b)) { - echo "a is equal to b"; -} else { - echo "a is smaller than b"; -} - -while (($i <= 10)) { - echo $i++; -} - -do { - echo $i; -} while (($i > 0)); - -switch (($i)) { - case (0): - echo "i equals 0"; - break; - case ((1)): - echo "i equals 1"; - break; - case ('test' . ( 1 > 2 ? 'foo' : 'bar')): - echo "i equals 2"; - break; -} - -switch (($i + 1)) { - case (0): - echo "i equals 0"; - break; - case (1 + 2): - echo "i equals 1"; - break; - case (1 + ( 1 > 2 ? 1 : 3)): - echo "i equals 2"; - break; -} - -while (++$i) { - switch ($i) { - case 5: - echo "At 5
\\n"; - break (2); /* Exit only the switch. */ - case 10: - echo "At 10; quitting
\\n"; - break ((4)); /* Exit the switch and the while. */ - default: - break; - } -} - -while ($i++ < 5) { - echo "Outer
\\n"; - while (1) { - echo "Middle
\\n"; - while (1) { - echo "Inner
\\n"; - continue (3); - } - echo "This never gets output.
\\n"; - continue ((2)); - } - echo "Neither does this.
\\n"; -} - -if ($var = 1) {} -if (($var = 1)) {} -if ($var = 1) {} else if ($var = 1) {} else {} -if (($var = 1)) {} else if (($var = 1)) {} else {} -do {} while ($var = 1); -do {} while (($var = 1)); -while ($var = 1) {} -while (($var = 1)) {} -for ($i = 1; $i <= 10; $i++) {} -for (($i = 1); ($i <= 10); ($i++)) {} -foreach (($arr = [1, 2, 3]) as $value) {} -foreach (($arr) as $value) {} -foreach (($arr) as $key => $value) {} -foreach (($arr = [1, 2, 3]) as $key => $value) {} -switch ($var = 1) {} -switch (($var = 1)) {} - -while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) {} -while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) {} - -if (($foo = $bar) && count($foo) > 0) {} -if( false !== ($file = readdir($dh)) && 0 !== strpos($file,'.')){} -while (($a = foo()) !== 5) {} -while( false !== ($file = readdir($dh))){} -do {} while( false !== ($file = readdir($dh))); - -=====================================output===================================== - $b) { - echo "a is bigger than b"; -} elseif ($a == $b) { - echo "a is equal to b"; -} else { - echo "a is smaller than b"; -} - -while ($i <= 10) { - echo $i++; -} - -do { - echo $i; -} while ($i > 0); - -switch ($i) { - case 0: - echo "i equals 0"; - break; - case 1: - echo "i equals 1"; - break; - case "test" . (1 > 2 ? "foo" : "bar"): - echo "i equals 2"; - break; -} - -switch ($i + 1) { - case 0: - echo "i equals 0"; - break; - case 1 + 2: - echo "i equals 1"; - break; - case 1 + (1 > 2 ? 1 : 3): - echo "i equals 2"; - break; -} - -while (++$i) { - switch ($i) { - case 5: - echo "At 5
\\n"; - break 2; /* Exit only the switch. */ - case 10: - echo "At 10; quitting
\\n"; - break 4; /* Exit the switch and the while. */ - default: - break; - } -} - -while ($i++ < 5) { - echo "Outer
\\n"; - while (1) { - echo "Middle
\\n"; - while (1) { - echo "Inner
\\n"; - continue 3; - } - echo "This never gets output.
\\n"; - continue 2; - } - echo "Neither does this.
\\n"; -} - -if ($var = 1) { -} -if ($var = 1) { -} -if ($var = 1) { -} elseif ($var = 1) { -} else { -} -if ($var = 1) { -} elseif ($var = 1) { -} else { -} -do { -} while ($var = 1); -do { -} while ($var = 1); -while ($var = 1) { -} -while ($var = 1) { -} -for ($i = 1; $i <= 10; $i++) { -} -for ($i = 1; $i <= 10; $i++) { -} -foreach ($arr = [1, 2, 3] as $value) { -} -foreach ($arr as $value) { -} -foreach ($arr as $key => $value) { -} -foreach ($arr = [1, 2, 3] as $key => $value) { -} -switch ($var = 1) { -} -switch ($var = 1) { -} - -while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) { -} -while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { -} - -if (($foo = $bar) && count($foo) > 0) { -} -if (false !== ($file = readdir($dh)) && 0 !== strpos($file, ".")) { -} -while (($a = foo()) !== 5) { -} -while (false !== ($file = readdir($dh))) { -} -do { -} while (false !== ($file = readdir($dh))); - -================================================================================ -`; - -exports[`declare.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -c()); - -=====================================output===================================== -c(); - -================================================================================ -`; - -exports[`echo.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -bar; -($var->bar); - -$var->bar(); -($var->bar()); - -$var::bar(); -($var::bar()); - -$var = $var->bar; -$var = ($var->bar); -$var = $var->bar->foo; -$var = ($var->bar)->foo; -$var = ($var->bar->foo); -$var = (($var->bar)->foo); - -$var = $var::foo(); -$var = ($var::foo()); -$var = $var::foo()::bar(); -$var = ($var::foo())::bar(); -$var = ($var::foo()::bar()); -$var = (($var::foo())::bar()); - -$var = $var->bar(); -$var = ($var->bar()); -$var = $var->bar()->foo(); -$var = ($var->bar())->foo(); -$var = ($var->bar()->foo()); -$var = (($var->bar())->foo()); - -$var = ((object) ($var->bar())->foo()); -$var = (object) (($var->bar())->foo()); - -$var = $var[0]; -$var = $var[0][1]; -$var = ($var[0]); -$var = ($var[0][1]); -$var = $var[0]->foo; -$var = ($var[0])->foo; -$var = ($var[0][1])->foo; -$var = ($var[0])[1]->foo; -$var = (($var[0])[1])->foo; -$var = $var[0]::foo; -$var = ($var[0])::foo; -$var = ($var[0][1])::foo; -$var = ($var[0])[1]::foo; -$var = (($var[0])[1])::foo; -$var = $var[0]->foo(); -$var = ($var[0])->foo(); -$var = ($var[0][1])->foo(); -$var = ($var[0])[1]->foo(); -$var = (($var[0])[1])->foo(); -$var = $var[0]::foo(); -$var = ($var[0])::foo(); -$var = ($var[0][1])::foo(); -$var = ($var[0])[1]::foo(); -$var = (($var[0])[1])::foo(); - -$var = $var[0]->foo()->baz; -$var = ((($var[0])->foo())->baz); - -$var = (new Foo())->bar; -$var = (new Foo())::bar; -$var = (new Foo())->bar(); -$var = (new Foo())::bar(); -$var = (new Foo())[1]; - -$var = $var->bar()(); -$var = ($var->bar())(); -$var = ($var->bar()()); -$var = (($var->bar())()); - -$var = $var::bar()(); -$var = ($var::bar())(); -$var = ($var::bar()()); -$var = (($var::bar())()); - -$var = ($var)->bar; -$var = (($var)->bar); -$var = ($var)->bar(); -$var = (($var)->bar()); - -$var = (function () { - return $this->foo; -})->bindTo($var, A::class)(); -$var = (((function () { - return $this->foo; -})))->bindTo($var, A::class)(); - -=====================================output===================================== -bar; -$var->bar; - -$var->bar(); -$var->bar(); - -$var::bar(); -$var::bar(); - -$var = $var->bar; -$var = $var->bar; -$var = $var->bar->foo; -$var = $var->bar->foo; -$var = $var->bar->foo; -$var = $var->bar->foo; - -$var = $var::foo(); -$var = $var::foo(); -$var = $var::foo()::bar(); -$var = $var::foo()::bar(); -$var = $var::foo()::bar(); -$var = $var::foo()::bar(); - -$var = $var->bar(); -$var = $var->bar(); -$var = $var->bar()->foo(); -$var = $var->bar()->foo(); -$var = $var->bar()->foo(); -$var = $var->bar()->foo(); - -$var = ((object) $var->bar()->foo()); -$var = (object) $var->bar()->foo(); - -$var = $var[0]; -$var = $var[0][1]; -$var = $var[0]; -$var = $var[0][1]; -$var = $var[0]->foo; -$var = $var[0]->foo; -$var = $var[0][1]->foo; -$var = $var[0][1]->foo; -$var = $var[0][1]->foo; -$var = $var[0]::foo; -$var = $var[0]::foo; -$var = $var[0][1]::foo; -$var = $var[0][1]::foo; -$var = $var[0][1]::foo; -$var = $var[0]->foo(); -$var = $var[0]->foo(); -$var = $var[0][1]->foo(); -$var = $var[0][1]->foo(); -$var = $var[0][1]->foo(); -$var = $var[0]::foo(); -$var = $var[0]::foo(); -$var = $var[0][1]::foo(); -$var = $var[0][1]::foo(); -$var = $var[0][1]::foo(); - -$var = $var[0]->foo()->baz; -$var = $var[0]->foo()->baz; - -$var = (new Foo())->bar; -$var = (new Foo())::bar; -$var = (new Foo())->bar(); -$var = (new Foo())::bar(); -$var = (new Foo())[1]; - -$var = $var->bar()(); -$var = $var->bar()(); -$var = $var->bar()(); -$var = $var->bar()(); - -$var = $var::bar()(); -$var = $var::bar()(); -$var = $var::bar()(); -$var = $var::bar()(); - -$var = $var->bar; -$var = $var->bar; -$var = $var->bar(); -$var = $var->bar(); - -$var = (function () { - return $this->foo; -})->bindTo($var, A::class)(); -$var = (function () { - return $this->foo; -})->bindTo($var, A::class)(); - -================================================================================ -`; - -exports[`namespace.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -c()); - -=====================================output===================================== -c(); - -================================================================================ -`; - -exports[`new.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - 'bar') -)) -?> - 'bar') -)))) -?> - 'bar'] -)) -?> -c(); -$var = (new class { - public function log($msg) - { - echo $msg; - } -}); -$var = (new foo())->bar(); -$var = (new foo())->bar()->foo(); -$var = ((new foo())->bar())->foo(); -$var = (((new foo())->bar())->foo()); -$var = (((new foo())->bar())->foo())[0]; -$var = ((((new foo())->bar())->foo())[0])[1]; -$var = (((new foo())->bar())->foo())->baz(); -$var = (new $foo())->bar; -$var = (new $bar->y)->x; -$var = (new foo)[0]; -$var = (new foo)[0]['string']; - -$var = new $a->b; -$var = new $a->b(); -$var = (new $a)->b(); -$var = ((new $a)->b()); - -(new class {})->foo; -(new class {})->foo(); -(new class {})(); -(new class {})['foo']; - -$var = (new class {})->foo; - -=====================================output===================================== - "bar"] -); ?> - "bar", -]); ?> - "bar", -]); ?> -c(); -$var = new class { - public function log($msg) - { - echo $msg; - } -}; -$var = (new foo())->bar(); -$var = (new foo())->bar()->foo(); -$var = (new foo())->bar()->foo(); -$var = (new foo())->bar()->foo(); -$var = (new foo())->bar()->foo()[0]; -$var = (new foo())->bar()->foo()[0][1]; -$var = (new foo()) - ->bar() - ->foo() - ->baz(); -$var = (new $foo())->bar; -$var = (new $bar->y())->x; -$var = (new foo())[0]; -$var = (new foo())[0]["string"]; -$var = new $a->b(); -$var = new $a->b(); -$var = (new $a())->b(); -$var = (new $a())->b(); -(new class {})->foo; -(new class {})->foo(); -(new class {})(); -(new class {})["foo"]; -$var = (new class {})->foo; - - -================================================================================ -`; - -exports[`parens.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -b++; -($a->b++); -++$a->b; -(++$a)->b; - -($a->b++)->call(); -($a->b++)[1]; -($var++)(); -$var = call($var->_uuidCounter++); - -(--$a->b)->call(); -(--$a->b)[1]; -(--$var)(); -$var = call(--$var->_uuidCounter); - -=====================================output===================================== -b++; -$a->b++; -++$a->b; -(++$a)->b; - -($a->b++)->call(); -($a->b++)[1]; -($var++)(); -$var = call($var->_uuidCounter++); - -(--$a->b)->call(); -(--$a->b)[1]; -(--$var)(); -$var = call(--$var->_uuidCounter); - -================================================================================ -`; - -exports[`print.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -" : print "$string_message\\n"; -$var = $var ? (print "$string_message
") : (print "$string_message\\n"); -$var = $var ? (print ("$string_message
")) : (print ("$string_message\\n")); - -print 1 . print(2) + 3; // 511 -print 1 . (print(2)) + 3; // 214 - -print ($var || $var) && $var; -print (($var || $var) && $var); - -=====================================output===================================== -" : print "$string_message\\n"; -$var = $var ? print "$string_message
" : print "$string_message\\n"; -$var = $var ? print "$string_message
" : print "$string_message\\n"; - -print 1 . (print 2 + 3); // 511 -print 1 . (print 2) + 3; // 214 - -print ($var || $var) && $var; -print ($var || $var) && $var; - -================================================================================ -`; - -exports[`program.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -c()); - -=====================================output===================================== -c(); - -================================================================================ -`; - -exports[`retif.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -prop; -($var ? $var : $var)->prop(); -($var ? $var : $var)[1]; -($var ? $var : $var)->d(); -($var ? $var : $var)->d()->e(); -($var ? $var : $var)->d()->e()->f(); -($var - ? $var->responseBody($var->currentUser) - : $var->responseBody($var->defaultUser)) -->map(); -($var - ? $var.responseBody($var->currentUser) - : $var.responseBody($var->defaultUser)) -->map()->filter(); -($var - ? $var.responseBody($var->currentUser) - : $var.responseBody($var)) -->map(); -$var[$var - ? $var->responseBody($var->currentUser) - : $var->responseBody($var)] -->map(); - -$var = $var . $var ? "()" : ""; -$var = ($var . $var) ? "()" : ""; -$var = $var . ($var ? "()" : ""); -$var = +($var ? 1 : 2); -$var = +(+$var ? 1 : 2); -$var = +($var++ ? 1 : 2); -$var = ((true ? 'true' : false) ? (true ? 'true' : false) : (true ? 'true' : false)); -$var = $var ? $var1 ? 1 : 2 : $var2 ? 3 : 4; - -$var = $var ?: $var ?: $var ?: 'string'; -$var = ($var ?: $var) ?: $var ?: 'string'; -$var = (($var ?: $var) ?: $var) ?: 'string'; -$var = ((($var ?: $var) ?: $var) ?: 'string'); -$var = ($var ?: ($var ?: $var)) ?: 'string'; -$var = ($var ?: (($var ?: $var) ?: 'string')); -$var = ($var ?: ($var ?: ($var ?: 'string'))); - -$var = ($foo and $bar) ? true : false; -$var = ($foo or $bar) ? true : false; -$var = ($foo xor $bar) ? true : false; -$var = ($foo = "bar") ? true : false; - -$var = ($foo && $bar) ? true : false; -$var = ($foo || $bar) ? true : false; -$var = (!$foo) ? true : false; -$var = (new $foo) ? true : false; - -=====================================output===================================== -prop; -($var ? $var : $var)->prop(); -($var ? $var : $var)[1]; -($var ? $var : $var)->d(); -($var ? $var : $var)->d()->e(); -($var ? $var : $var) - ->d() - ->e() - ->f(); -($var - ? $var->responseBody($var->currentUser) - : $var->responseBody($var->defaultUser) -)->map(); -($var - ? $var . responseBody($var->currentUser) - : $var . responseBody($var->defaultUser) -) - ->map() - ->filter(); -($var - ? $var . responseBody($var->currentUser) - : $var . responseBody($var) -)->map(); -$var[ - $var ? $var->responseBody($var->currentUser) : $var->responseBody($var) -]->map(); - -$var = $var . $var ? "()" : ""; -$var = $var . $var ? "()" : ""; -$var = $var . ($var ? "()" : ""); -$var = +($var ? 1 : 2); -$var = +(+$var ? 1 : 2); -$var = +($var++ ? 1 : 2); -$var = (true - ? "true" - : false) - ? (true - ? "true" - : false) - : (true - ? "true" - : false); -$var = ($var ? ($var1 ? 1 : 2) : $var2) ? 3 : 4; - -$var = $var ?: $var ?: $var ?: "string"; -$var = $var ?: $var ?: $var ?: "string"; -$var = $var ?: $var ?: $var ?: "string"; -$var = $var ?: $var ?: $var ?: "string"; -$var = $var ?: ($var ?: $var) ?: "string"; -$var = $var ?: ($var ?: $var ?: "string"); -$var = $var ?: ($var ?: ($var ?: "string")); - -$var = ($foo and $bar) ? true : false; -$var = ($foo or $bar) ? true : false; -$var = ($foo xor $bar) ? true : false; -$var = ($foo = "bar") ? true : false; - -$var = $foo && $bar ? true : false; -$var = $foo || $bar ? true : false; -$var = !$foo ? true : false; -$var = new $foo() ? true : false; - -================================================================================ -`; - -exports[`return.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -customer->paymentService ?? null); - - -=====================================output===================================== -customer->paymentService ?? null; - -================================================================================ -`; - -exports[`silent.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -stream, $message) || ($newline && (false === @fwrite($this->stream, PHP_EOL)))) { - // should never happen - throw new RuntimeException('Unable to write output.'); -} - -try { - if (($fp = @fopen($filename, "r")) == false) { - throw new Exception; - } else { - do_file_stuff(); - } -} catch (Exception $e) { - handle_exception(); -} - -@list($width, $height) = getimagesize($file); -// Todo https://github.com/glayzzle/php-parser/issues/356 -// @(list($width, $height) = getimagesize($file)); - -@$var += 10; -// Todo https://github.com/glayzzle/php-parser/issues/356 -// @($var += 10); - -echo @(1 / 0); - -@$i / 0; -@($i / 0); - -=====================================output===================================== -stream, $message) || - ($newline && false === @fwrite($this->stream, PHP_EOL)) -) { - // should never happen - throw new RuntimeException("Unable to write output."); -} - -try { - if (($fp = @fopen($filename, "r")) == false) { - throw new Exception(); - } else { - do_file_stuff(); - } -} catch (Exception $e) { - handle_exception(); -} - -@list($width, $height) = getimagesize($file); -// Todo https://github.com/glayzzle/php-parser/issues/356 -// @(list($width, $height) = getimagesize($file)); - -@$var += 10; -// Todo https://github.com/glayzzle/php-parser/issues/356 -// @($var += 10); - -echo @(1 / 0); - -@$i / 0; -@($i / 0); - -================================================================================ -`; - -exports[`throw.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - throw new \\RuntimeException('In arrow function'); -$value = $a ? $a : throw new \\InvalidArgumentException('In ternary'); -=====================================output===================================== - throw new \\RuntimeException("In arrow function"); -$value = $a ? $a : throw new \\InvalidArgumentException("In ternary"); - -================================================================================ -`; - -exports[`unary.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -bar); - -$var = +$var || +$var; -$var = (+$var) || (+$var); -$var = ((+$var) || (+$var)); - -$var = -(+($var)); - -$var = ~(+$var); - -$var = ~$var += 1; -$var = ~($var += 1); - -(+$a->b)->call(); -(+$a->b)[1]; -(+$var)(); -$var = call(+$var->_uuidCounter); - -if (!$token = $this->getToken()) {} -if (!($token = $this->getToken())) {} - -=====================================output===================================== -bar; - -$var = +$var || +$var; -$var = +$var || +$var; -$var = +$var || +$var; - -$var = -+$var; - -$var = ~+$var; - -$var = ~($var += 1); -$var = ~($var += 1); - -(+$a->b)->call(); -(+$a->b)[1]; -(+$var)(); -$var = call(+$var->_uuidCounter); - -if (!($token = $this->getToken())) { -} -if (!($token = $this->getToken())) { -} - -================================================================================ -`; - -exports[`unnecessary.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -b; - !(yield $var); - yield (yield $var); - } - - $var = yield; - $var = yield $var; - $var += yield $var; - $var = (yield $var); - $var += (yield $var); - $var = yield $key => $var; - $var = (yield $key => $var); - $var = !yield $var; - $var = !(yield $var); - $var = yield (yield $var); - $var = yield 1 ? 1 : 1; - $var = (yield 1) ? 1 : 1; - $var = yield 1 ? yield 1 : yield 1; - $var = (yield 1) ? (yield 1) : (yield 1); - $var = yield $var->b; - $var = (yield $var)->b; - $var = yield $var->b(); - $var = (yield $var)->b(); - $var = yield $var[1]; - $var = (yield $var)[1]; - - call(yield $var); - - return yield from nine_ten(); - - foreach($SubTrav as $SubItem) yield $SubItem; -} - -=====================================output===================================== -b; - !(yield $var); - yield (yield $var); - } - - $var = yield; - $var = (yield $var); - $var += (yield $var); - $var = (yield $var); - $var += (yield $var); - $var = (yield $key => $var); - $var = (yield $key => $var); - $var = !(yield $var); - $var = !(yield $var); - $var = (yield (yield $var)); - $var = (yield 1 ? 1 : 1); - $var = (yield 1) ? 1 : 1; - $var = (yield 1 ? yield 1 : yield 1); - $var = (yield 1) ? yield 1 : yield 1; - $var = (yield $var->b); - $var = (yield $var)->b; - $var = (yield $var->b()); - $var = (yield $var)->b(); - $var = (yield $var[1]); - $var = (yield $var)[1]; - - call(yield $var); - - return yield from nine_ten(); - - foreach ($SubTrav as $SubItem) { - yield $SubItem; - } -} - -================================================================================ -`; diff --git a/tests/parens/__snapshots__/jsfmt.spec.mjs.snap b/tests/parens/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..ccb74dd00 --- /dev/null +++ b/tests/parens/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,7192 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`array.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== + ($var), ('other-key') => ($other_var)]; +$arr = ([('key') => ($var), ('other-key') => ($other_var)]); + +[$var, $other_var] = $arr; +[($var), ($other_var)] = $arr; +[('key') => ($var), ('other-key') => ($other_var)] = $arr; + +$var = array(1, 2, 3)[1]; +$var = (array(1, 2, 3))[1]; +$var = [1, 2, 3][1]; +$var = ([1, 2, 3])[1]; +$var = array(new stdClass())[0]; +$var = (array((new stdClass())))[0]; +$var = [new stdClass()][0]; +$var = ([(new stdClass())])[0]; + +=====================================output===================================== + $var, "other-key" => $other_var]; +$arr = ["key" => $var, "other-key" => $other_var]; + +[$var, $other_var] = $arr; +[$var, $other_var] = $arr; +["key" => $var, "other-key" => $other_var] = $arr; + +$var = [1, 2, 3][1]; +$var = [1, 2, 3][1]; +$var = [1, 2, 3][1]; +$var = [1, 2, 3][1]; +$var = [new stdClass()][0]; +$var = [new stdClass()][0]; +$var = [new stdClass()][0]; +$var = [new stdClass()][0]; + +================================================================================ +`; + +exports[`array.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + ($var), ('other-key') => ($other_var)]; +$arr = ([('key') => ($var), ('other-key') => ($other_var)]); + +[$var, $other_var] = $arr; +[($var), ($other_var)] = $arr; +[('key') => ($var), ('other-key') => ($other_var)] = $arr; + +$var = array(1, 2, 3)[1]; +$var = (array(1, 2, 3))[1]; +$var = [1, 2, 3][1]; +$var = ([1, 2, 3])[1]; +$var = array(new stdClass())[0]; +$var = (array((new stdClass())))[0]; +$var = [new stdClass()][0]; +$var = ([(new stdClass())])[0]; + +=====================================output===================================== + $var, "other-key" => $other_var]; +$arr = ["key" => $var, "other-key" => $other_var]; + +[$var, $other_var] = $arr; +[$var, $other_var] = $arr; +["key" => $var, "other-key" => $other_var] = $arr; + +$var = [1, 2, 3][1]; +$var = [1, 2, 3][1]; +$var = [1, 2, 3][1]; +$var = [1, 2, 3][1]; +$var = [new stdClass()][0]; +$var = [new stdClass()][0]; +$var = [new stdClass()][0]; +$var = [new stdClass()][0]; + +================================================================================ +`; + +exports[`assign.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== + 'value']); + +($var = $var ? $var : function() { return 0; }); + +for ($i = 1; $i <= 10; $i++) { + echo $i; +} + +for (($i = 1); ($i <= 10); ($i++)) { + echo $i; +} +for (($i = 1), ($j = 0); ($i <= 10); ($j += $i), print ($i), ($i++)); + +if ($a = 1) {} + +while ($var = 1) {} +while ($var = current($array) !== FALSE) {} +while (($var = current($array)) !== FALSE) {} + +$var = $var || $var = new MyClass(); +$var = $var || ($var = new MyClass()); + +if (true) $var = $var; +if (true) ($var = $var); +if (true) { ($var = $var); } else if (false) ($var = $var); +if (true) { ($var = $var); } else if (false) { ($var = $var); } else ($var = $var); + +if (true) { + $var = $var; + ($var = $var); +} + +while ($i <= 10) $i = 1; +while ($i <= 10) ($i = 1); + +do { + echo $i; +} while ($i = 0); + +for ($i = 1; $i <= 10; $i++) $i = 1; +for ($i = 1; $i <= 10; $i++) ($i = 1); + +foreach ($arr as &$value) $value = $value * 2; +foreach ($arr as &$value) ($value = $value * 2); + +switch ($i = 1) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +switch (($i = 1)) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +=====================================output===================================== + "value"]; + +$var = $var + ? $var + : function () { + return 0; + }; + +for ($i = 1; $i <= 10; $i++) { + echo $i; +} + +for ($i = 1; $i <= 10; $i++) { + echo $i; +} +for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); + +if ($a = 1) { +} + +while ($var = 1) { +} +while ($var = current($array) !== false) { +} +while (($var = current($array)) !== false) { +} + +$var = $var || ($var = new MyClass()); +$var = $var || ($var = new MyClass()); + +if (true) { + $var = $var; +} +if (true) { + $var = $var; +} +if (true) { + $var = $var; +} elseif (false) { + $var = $var; +} +if (true) { + $var = $var; +} elseif (false) { + $var = $var; +} else { + $var = $var; +} + +if (true) { + $var = $var; + $var = $var; +} + +while ($i <= 10) { + $i = 1; +} +while ($i <= 10) { + $i = 1; +} + +do { + echo $i; +} while ($i = 0); + +for ($i = 1; $i <= 10; $i++) { + $i = 1; +} +for ($i = 1; $i <= 10; $i++) { + $i = 1; +} + +foreach ($arr as &$value) { + $value = $value * 2; +} +foreach ($arr as &$value) { + $value = $value * 2; +} + +switch ($i = 1) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +switch ($i = 1) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +================================================================================ +`; + +exports[`assign.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + 'value']); + +($var = $var ? $var : function() { return 0; }); + +for ($i = 1; $i <= 10; $i++) { + echo $i; +} + +for (($i = 1); ($i <= 10); ($i++)) { + echo $i; +} +for (($i = 1), ($j = 0); ($i <= 10); ($j += $i), print ($i), ($i++)); + +if ($a = 1) {} + +while ($var = 1) {} +while ($var = current($array) !== FALSE) {} +while (($var = current($array)) !== FALSE) {} + +$var = $var || $var = new MyClass(); +$var = $var || ($var = new MyClass()); + +if (true) $var = $var; +if (true) ($var = $var); +if (true) { ($var = $var); } else if (false) ($var = $var); +if (true) { ($var = $var); } else if (false) { ($var = $var); } else ($var = $var); + +if (true) { + $var = $var; + ($var = $var); +} + +while ($i <= 10) $i = 1; +while ($i <= 10) ($i = 1); + +do { + echo $i; +} while ($i = 0); + +for ($i = 1; $i <= 10; $i++) $i = 1; +for ($i = 1; $i <= 10; $i++) ($i = 1); + +foreach ($arr as &$value) $value = $value * 2; +foreach ($arr as &$value) ($value = $value * 2); + +switch ($i = 1) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +switch (($i = 1)) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +=====================================output===================================== + "value"]; + +$var = $var + ? $var + : function () { + return 0; + }; + +for ($i = 1; $i <= 10; $i++) { + echo $i; +} + +for ($i = 1; $i <= 10; $i++) { + echo $i; +} +for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); + +if ($a = 1) { +} + +while ($var = 1) { +} +while ($var = current($array) !== false) { +} +while (($var = current($array)) !== false) { +} + +$var = $var || ($var = new MyClass()); +$var = $var || ($var = new MyClass()); + +if (true) { + $var = $var; +} +if (true) { + $var = $var; +} +if (true) { + $var = $var; +} elseif (false) { + $var = $var; +} +if (true) { + $var = $var; +} elseif (false) { + $var = $var; +} else { + $var = $var; +} + +if (true) { + $var = $var; + $var = $var; +} + +while ($i <= 10) { + $i = 1; +} +while ($i <= 10) { + $i = 1; +} + +do { + echo $i; +} while ($i = 0); + +for ($i = 1; $i <= 10; $i++) { + $i = 1; +} +for ($i = 1; $i <= 10; $i++) { + $i = 1; +} + +foreach ($arr as &$value) { + $value = $value * 2; +} +foreach ($arr as &$value) { + $value = $value * 2; +} + +switch ($i = 1) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +switch ($i = 1) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case 2: + echo "i equals 2"; + break; +} + +================================================================================ +`; + +exports[`assignref.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== + 0) {} +if (($foo = &test1()) && test2($foo) > 0) {} + +call(($a =& $b)); + +=====================================output===================================== + 0) { +} +if ($foo = &test1() && test2($foo) > 0) { +} + +call($a = &$b); + +================================================================================ +`; + +exports[`assignref.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + 0) {} +if (($foo = &test1()) && test2($foo) > 0) {} + +call(($a =& $b)); + +=====================================output===================================== + 0) { +} +if ($foo = &test1() && test2($foo) > 0) { +} + +call($a = &$b); + +================================================================================ +`; + +exports[`bin.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +> 20 >> 30; +$var = (10 >> 20) >> 30; +$var = 10 >> (20 >> 30); + +$var = 10 ^ 20 ^ 30; +$var = (10 ^ 20) ^ 30; +$var = 10 ^ (20 ^ 30); + +$var = 10 | 20 | 30; +$var = (10 | 20) | 30; +$var = 10 | (20 | 30); + +$var = false || true; +$var = (false || true); +$var = false or true; +$var = (false or true); +$var = true && false; +$var = (true && false); +$var = true and false; +$var = (true and false); + +$var = $var || $var(); +$var = ($var || $var)(); +$var = $var && $var(); +$var = ($var && $var)(); +$var = call($var || $var); +$var = call(($var || $var)); +$var = call($var && $var); +$var = call(($var && $var)); + +$var = +($var || $var); +$var = -($var || $var); +$var = ~($var || $var); + +$var = ($var || $var)->foo; +$var = ($var || $var)->foo(); +$var = ($var || $var)[1]; + +$var = $var || $var && $var; +$var = ($var || $var) && $var; +$var = $var || ($var && $var); + +$var = $var & ($var || 'test'); +$var = ($var || 'test') & $var; +$var = $var & ($var . 'test'); +$var = ($var . 'test') & $var; +$var = ($var & $var) || 'test'; +$var = $var || ('test' & $var); + +$var = ($var || $var) % 100; +$var = ($var + $var) % 100; +$var = 100 % ($var || $var); +$var = 100 % ($var + $var); +$var = $var || ($var % 100); +$var = $var + ($var % 100); +$var = (100 % $var) || $var; +$var = (100 % $var) + $var; + +$var = ($var + $var) >> 1; +$var = (($var - 1) >> $var) & $var; +$var = $var > $var ? 0 : ($var - $var) >> $var; +$var = (($var - $var) >> $var) + 1; + +if ($var < 1 << ($var + $var)) {} + +$var = $var < $var ? 0 : ((($var - 1) >> $var) << $var); +$var = 1 - (2 * ($var[3] >> 7)); +$var = ((($var[3] << 1) & 0xff) | ($var[2] >> 7)) - 127; +$var = (($var[2] & 0x7f) << 16) | ($var[1] << 8) | $var[0]; + +$var = 2 / 3 * 10 / 2 + 2; + +$var = (($var / $var) * $var - $var / 2) * call($var); +$var = (($var / $var) * $var - $var / 2) * call($var); + +$var = $var % 10 - 5; +$var = $var * $var % 10; +$var = $var % 10 > 5; +$var = $var % 10 == 0; + +$var = $var + $var / $var; +$var = $var / $var + $var; + +$var = $var * $var % $var; +$var = $var / $var % $var; +$var = $var % $var * $var; +$var = $var % $var / $var; + +$var = $var % $var % $var; + +$var = $var << $var >> $var; +$var = $var >> $var << $var; +$var = $var >> $var >> $var; +$var = $var + $var >> $var; +$var = ($var + $var) >> $var; +$var = $var + ($var >> $var); + +$var = $var | $var & $var; +$var = $var & $var | $var; +$var = $var ^ $var ^ $var; +$var = $var & $var & $var; +$var = $var | $var | $var; +$var = $var & $var >> $var; +$var = $var << $var | $var; + +$var = $var ? 'foo' : 'bar' . 'test'; +$var = ($var ? 'foo' : 'bar') . 'test'; +$var = $var ? 'foo' : ('bar' . 'test'); + +call(($var + $var)); + +$var = call(($var + $var)); + +$var = $var + $var ** 2; +$var = ($var + $var) ** 2; +$var = $var + ($var ** 2); +$var = (+$var) ** 2; +$var = +$var ** 2; + +$var = $foo instanceof Foo; +$var = $foo instanceof Foo || $foo instanceof Foo; +$var = ($foo instanceof Foo) || ($foo instanceof Foo); +$var = (($foo) instanceof Foo); + +$var = !$var; +$var = !($var); +$var = (!($var)); +$var = !!$var; +$var = !!($var); +$var = !(!($var)); +$var = (!(!($var))); +$var = !!!$var; +$var = !!!($var); +$var = !!(!($var)); +$var = !(!(!($var))); +$var = (!(!(!($var)))); + +$var = !$var || !$var; +$var = (!($var) || !($var)); +$var = !(!($var) || !($var)); + +$var = $var + $var * $var; +$var = ($var + $var) * $var; + +$var = @foo() || @foo(); +$var = @(foo() || foo()); + +($var += ($var += ($var += $var))); +($var -= ($var -= ($var -= $var))); +($var *= ($var *= ($var *= $var))); +($var **= ($var **= ($var **= $var))); +($var /= ($var /= ($var /= $var))); +($var .= ($var .= ($var .= $var))); +($var %= ($var %= ($var %= $var))); +($var &= ($var &= ($var &= $var))); +($var |= ($var |= ($var |= $var))); +($var ^= ($var ^= ($var ^= $var))); +($var <<= ($var <<= ($var <<= $var))); +($var >>= ($var >>= ($var >>= $var))); + +$var = $var | $var | $var; +$var = $var | ($var | $var); +$var = ($var | $var) | $var; +$var = $var & $var & $var; +$var = $var & ($var & $var); +$var = ($var & $var) & $var; + +$var = $var ^ $var | $var; +$var = ($var ^ $var) | $var; +$var = $var | $var ^ $var; +$var = $var | ($var ^ $var); +$var = ($var | $var) ^ $var; + +$var = $var & $var | $var; +$var = ($var & $var) | $var; +$var = $var | $var & $var; +$var = $var | ($var & $var); +$var = ($var | $var) & $var; + +$var = $var == $var || false; +$var = ($var == $var) || false; +$var = $var == ($var || false); + +$var = false || $var == $var; +$var = false || ($var == $var); +$var = ($var || false) == $var; + +$var = 'string' . true ? '1' : '2'; +$var = 'string' . (true ? '1' : '2'); + +$var = 'string' . (100 + 100); +$var = (100 + 100) . 'string'; +$var = 'string' . ($var || 100); +$var = ($var || 100) . 'string'; +$var = 'string' . ($var * 100); +$var = ($var * 100) . 'string'; +$var = 'string' . !$var; +$var = !$var . 'string'; +$var = 'string' . ($var | 100); +$var = ($var | 100) . 'string'; + +$var = $var . $var % $var; +$var = ($var . $var) % $var; +$var = $var % $var . $var; +$var = $var % ($var . $var); + +$var = '100' - '100' - '100'; +$var = ('100' - '100') - '100'; +$var = '100' - ('100' - '100'); + +if (false || true) {}; +if ((false || true)) {}; +if (false or true) {}; +if ((false or true)) {}; +if (true && false) {}; +if ((true && false)) {}; +if (true and false) {}; +if ((true and false)) {}; + +if (!$foo or $bar == -1) {} +if ((!$foo or $bar == -1)) {} +if ((!$foo or $bar) == -1) {} +if (!$foo or ($bar == -1)) {} + +do {} while ($foo and $bar); +while ($foo or $bar < 10) {} +for ($foo or $bar;;) {} +switch ($foo or $bar) {} + +$a ** $b ** $c; +($a ** $b) ** $c; +$a->b ** $c; +(-$a) ** $b; +$a ** -$b; +-($a**$b); +($a * $b) ** $c; +$a ** ($b * $c); +($a % $b) ** $c; + +$var = $var + $var ?? ''; +$var = $var + ($var ?? ''); +$var = ($var + $var) ?? ''; +$var = $var ?? null + 1; +$var = ($var ?? null) + 1; +$var = $var && ($var ?? true); +$var = ($var ?? true) && $var; +$var = $var && ($var ?? null) === true; +$var = ($var ?? null) === true && $var; + +$findAll = $cachesNames === []; +$findAll = ($cachesNames === []); + +$isNamespaced = strpos($fixture, '\\\\') !== false; +$isNamespaced = (strpos($fixture, '\\\\') !== false); + +$var = $a['apply_time'] > $b['apply_time'] ? -1 : +1; +$var = ($a['apply_time'] > $b['apply_time']) ? -1 : +1; + +$var = $page > 0 || $page == 0 && $this->forcePageParam; +$var = $page > 0 || ($page == 0 && $this->forcePageParam); + +@foo() || @foo(); +(@foo()) || (@foo()); +$var = @foo() || @foo(); +$var = (@foo() || @foo()); + +@$i / 0; +@($i) / 0; + +$var = "a" . (@$b ? 'bar' : "baz"); + +$a = (false && foo()); +$b = (true || foo()); +$c = (false and foo()); +$d = (true or foo()); + +$f = false or true; +$h = true and false; + +$my_file = call('non_existent_file') or die("Failed opening file: error was '$php_errormsg'"); +($my_file = call('non_existent_file')) or die("Failed opening file: error was '$php_errormsg'"); + +$my_file = call('non_existent_file') and die("Failed opening file: error was '$php_errormsg'"); +($my_file = call('non_existent_file')) and die("Failed opening file: error was '$php_errormsg'"); + +$var = $obj->foo ?? "default"; +$var = $foo ? $bar ?? $foo : $baz; +$var = $foo ?? ($bar ?? $baz); +$var = ($foo ?? $baz) || $baz; +$var = $foo ?? $baz || $baz; +$var = ($foo && $baz) ?? $baz; +$var = $foo && ($baz ?? $baz); + +$result = 2 ** $number - 1; +$result = (2 ** $number) - 1; +$result = 2 ** ($number - 1); + +=====================================output===================================== +> 20) >> 30; +$var = (10 >> 20) >> 30; +$var = 10 >> (20 >> 30); + +$var = 10 ^ 20 ^ 30; +$var = 10 ^ 20 ^ 30; +$var = 10 ^ (20 ^ 30); + +$var = 10 | 20 | 30; +$var = 10 | 20 | 30; +$var = 10 | (20 | 30); + +$var = false || true; +$var = false || true; +($var = false) or true; +$var = (false or true); +$var = true && false; +$var = true && false; +($var = true) and false; +$var = (true and false); + +$var = $var || $var(); +$var = ($var || $var)(); +$var = $var && $var(); +$var = ($var && $var)(); +$var = call($var || $var); +$var = call($var || $var); +$var = call($var && $var); +$var = call($var && $var); + +$var = +($var || $var); +$var = -($var || $var); +$var = ~($var || $var); + +$var = ($var || $var)->foo; +$var = ($var || $var)->foo(); +$var = ($var || $var)[1]; + +$var = $var || ($var && $var); +$var = ($var || $var) && $var; +$var = $var || ($var && $var); + +$var = $var & ($var || "test"); +$var = ($var || "test") & $var; +$var = $var & ($var . "test"); +$var = ($var . "test") & $var; +$var = $var & $var || "test"; +$var = $var || "test" & $var; + +$var = ($var || $var) % 100; +$var = ($var + $var) % 100; +$var = 100 % ($var || $var); +$var = 100 % ($var + $var); +$var = $var || $var % 100; +$var = $var + ($var % 100); +$var = 100 % $var || $var; +$var = (100 % $var) + $var; + +$var = $var + $var >> 1; +$var = ($var - 1 >> $var) & $var; +$var = $var > $var ? 0 : $var - $var >> $var; +$var = ($var - $var >> $var) + 1; + +if ($var < 1 << $var + $var) { +} + +$var = $var < $var ? 0 : ($var - 1 >> $var) << $var; +$var = 1 - 2 * ($var[3] >> 7); +$var = ((($var[3] << 1) & 0xff) | ($var[2] >> 7)) - 127; +$var = (($var[2] & 0x7f) << 16) | ($var[1] << 8) | $var[0]; + +$var = ((2 / 3) * 10) / 2 + 2; + +$var = (($var / $var) * $var - $var / 2) * call($var); +$var = (($var / $var) * $var - $var / 2) * call($var); + +$var = ($var % 10) - 5; +$var = ($var * $var) % 10; +$var = $var % 10 > 5; +$var = $var % 10 == 0; + +$var = $var + $var / $var; +$var = $var / $var + $var; + +$var = ($var * $var) % $var; +$var = ($var / $var) % $var; +$var = ($var % $var) * $var; +$var = ($var % $var) / $var; + +$var = ($var % $var) % $var; + +$var = ($var << $var) >> $var; +$var = ($var >> $var) << $var; +$var = ($var >> $var) >> $var; +$var = $var + $var >> $var; +$var = $var + $var >> $var; +$var = $var + ($var >> $var); + +$var = $var | ($var & $var); +$var = ($var & $var) | $var; +$var = $var ^ $var ^ $var; +$var = $var & $var & $var; +$var = $var | $var | $var; +$var = $var & ($var >> $var); +$var = ($var << $var) | $var; + +$var = $var ? "foo" : "bar" . "test"; +$var = ($var ? "foo" : "bar") . "test"; +$var = $var ? "foo" : "bar" . "test"; + +call($var + $var); + +$var = call($var + $var); + +$var = $var + $var ** 2; +$var = ($var + $var) ** 2; +$var = $var + $var ** 2; +$var = (+$var) ** 2; +$var = (+$var) ** 2; + +$var = $foo instanceof Foo; +$var = $foo instanceof Foo || $foo instanceof Foo; +$var = $foo instanceof Foo || $foo instanceof Foo; +$var = $foo instanceof Foo; + +$var = !$var; +$var = !$var; +$var = !$var; +$var = !!$var; +$var = !!$var; +$var = !!$var; +$var = !!$var; +$var = !!!$var; +$var = !!!$var; +$var = !!!$var; +$var = !!!$var; +$var = !!!$var; + +$var = !$var || !$var; +$var = !$var || !$var; +$var = !(!$var || !$var); + +$var = $var + $var * $var; +$var = ($var + $var) * $var; + +$var = @foo() || @foo(); +$var = @(foo() || foo()); + +$var += $var += $var += $var; +$var -= $var -= $var -= $var; +$var *= $var *= $var *= $var; +$var **= $var **= $var **= $var; +$var /= $var /= $var /= $var; +$var .= $var .= $var .= $var; +$var %= $var %= $var %= $var; +$var &= $var &= $var &= $var; +$var |= $var |= $var |= $var; +$var ^= $var ^= $var ^= $var; +$var <<= $var <<= $var <<= $var; +$var >>= $var >>= $var >>= $var; + +$var = $var | $var | $var; +$var = $var | ($var | $var); +$var = $var | $var | $var; +$var = $var & $var & $var; +$var = $var & ($var & $var); +$var = $var & $var & $var; + +$var = ($var ^ $var) | $var; +$var = ($var ^ $var) | $var; +$var = $var | ($var ^ $var); +$var = $var | ($var ^ $var); +$var = ($var | $var) ^ $var; + +$var = ($var & $var) | $var; +$var = ($var & $var) | $var; +$var = $var | ($var & $var); +$var = $var | ($var & $var); +$var = ($var | $var) & $var; + +$var = $var == $var || false; +$var = $var == $var || false; +$var = $var == ($var || false); + +$var = false || $var == $var; +$var = false || $var == $var; +$var = ($var || false) == $var; + +$var = "string" . true ? "1" : "2"; +$var = "string" . (true ? "1" : "2"); + +$var = "string" . (100 + 100); +$var = 100 + 100 . "string"; +$var = "string" . ($var || 100); +$var = ($var || 100) . "string"; +$var = "string" . $var * 100; +$var = $var * 100 . "string"; +$var = "string" . !$var; +$var = !$var . "string"; +$var = "string" . ($var | 100); +$var = ($var | 100) . "string"; + +$var = $var . $var % $var; +$var = ($var . $var) % $var; +$var = $var % $var . $var; +$var = $var % ($var . $var); + +$var = "100" - "100" - "100"; +$var = "100" - "100" - "100"; +$var = "100" - ("100" - "100"); + +if (false || true) { +} +if (false || true) { +} +if (false or true) { +} +if (false or true) { +} +if (true && false) { +} +if (true && false) { +} +if (true and false) { +} +if (true and false) { +} + +if (!$foo or $bar == -1) { +} +if (!$foo or $bar == -1) { +} +if ((!$foo or $bar) == -1) { +} +if (!$foo or $bar == -1) { +} + +do { +} while ($foo and $bar); +while ($foo or $bar < 10) { +} +for ($foo or $bar; ; ) { +} +switch ($foo or $bar) { +} + +$a ** ($b ** $c); +($a ** $b) ** $c; +$a->b ** $c; +(-$a) ** $b; +$a ** -$b; +-($a ** $b); +($a * $b) ** $c; +$a ** ($b * $c); +($a % $b) ** $c; + +$var = $var + $var ?? ""; +$var = $var + ($var ?? ""); +$var = $var + $var ?? ""; +$var = $var ?? null + 1; +$var = ($var ?? null) + 1; +$var = $var && ($var ?? true); +$var = ($var ?? true) && $var; +$var = $var && ($var ?? null) === true; +$var = ($var ?? null) === true && $var; + +$findAll = $cachesNames === []; +$findAll = $cachesNames === []; + +$isNamespaced = strpos($fixture, "\\\\") !== false; +$isNamespaced = strpos($fixture, "\\\\") !== false; + +$var = $a["apply_time"] > $b["apply_time"] ? -1 : +1; +$var = $a["apply_time"] > $b["apply_time"] ? -1 : +1; + +$var = $page > 0 || ($page == 0 && $this->forcePageParam); +$var = $page > 0 || ($page == 0 && $this->forcePageParam); + +@foo() || @foo(); +@foo() || @foo(); +$var = @foo() || @foo(); +$var = @foo() || @foo(); + +@$i / 0; +@$i / 0; + +$var = "a" . (@$b ? "bar" : "baz"); + +$a = false && foo(); +$b = true || foo(); +$c = (false and foo()); +$d = (true or foo()); + +($f = false) or true; +($h = true) and false; + +($my_file = call("non_existent_file")) or + die("Failed opening file: error was '$php_errormsg'"); +($my_file = call("non_existent_file")) or + die("Failed opening file: error was '$php_errormsg'"); + +($my_file = call("non_existent_file")) and + die("Failed opening file: error was '$php_errormsg'"); +($my_file = call("non_existent_file")) and + die("Failed opening file: error was '$php_errormsg'"); + +$var = $obj->foo ?? "default"; +$var = $foo ? $bar ?? $foo : $baz; +$var = $foo ?? ($bar ?? $baz); +$var = ($foo ?? $baz) || $baz; +$var = $foo ?? $baz || $baz; +$var = $foo && $baz ?? $baz; +$var = $foo && ($baz ?? $baz); + +$result = 2 ** $number - 1; +$result = 2 ** $number - 1; +$result = 2 ** ($number - 1); + +================================================================================ +`; + +exports[`bin.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +> 20 >> 30; +$var = (10 >> 20) >> 30; +$var = 10 >> (20 >> 30); + +$var = 10 ^ 20 ^ 30; +$var = (10 ^ 20) ^ 30; +$var = 10 ^ (20 ^ 30); + +$var = 10 | 20 | 30; +$var = (10 | 20) | 30; +$var = 10 | (20 | 30); + +$var = false || true; +$var = (false || true); +$var = false or true; +$var = (false or true); +$var = true && false; +$var = (true && false); +$var = true and false; +$var = (true and false); + +$var = $var || $var(); +$var = ($var || $var)(); +$var = $var && $var(); +$var = ($var && $var)(); +$var = call($var || $var); +$var = call(($var || $var)); +$var = call($var && $var); +$var = call(($var && $var)); + +$var = +($var || $var); +$var = -($var || $var); +$var = ~($var || $var); + +$var = ($var || $var)->foo; +$var = ($var || $var)->foo(); +$var = ($var || $var)[1]; + +$var = $var || $var && $var; +$var = ($var || $var) && $var; +$var = $var || ($var && $var); + +$var = $var & ($var || 'test'); +$var = ($var || 'test') & $var; +$var = $var & ($var . 'test'); +$var = ($var . 'test') & $var; +$var = ($var & $var) || 'test'; +$var = $var || ('test' & $var); + +$var = ($var || $var) % 100; +$var = ($var + $var) % 100; +$var = 100 % ($var || $var); +$var = 100 % ($var + $var); +$var = $var || ($var % 100); +$var = $var + ($var % 100); +$var = (100 % $var) || $var; +$var = (100 % $var) + $var; + +$var = ($var + $var) >> 1; +$var = (($var - 1) >> $var) & $var; +$var = $var > $var ? 0 : ($var - $var) >> $var; +$var = (($var - $var) >> $var) + 1; + +if ($var < 1 << ($var + $var)) {} + +$var = $var < $var ? 0 : ((($var - 1) >> $var) << $var); +$var = 1 - (2 * ($var[3] >> 7)); +$var = ((($var[3] << 1) & 0xff) | ($var[2] >> 7)) - 127; +$var = (($var[2] & 0x7f) << 16) | ($var[1] << 8) | $var[0]; + +$var = 2 / 3 * 10 / 2 + 2; + +$var = (($var / $var) * $var - $var / 2) * call($var); +$var = (($var / $var) * $var - $var / 2) * call($var); + +$var = $var % 10 - 5; +$var = $var * $var % 10; +$var = $var % 10 > 5; +$var = $var % 10 == 0; + +$var = $var + $var / $var; +$var = $var / $var + $var; + +$var = $var * $var % $var; +$var = $var / $var % $var; +$var = $var % $var * $var; +$var = $var % $var / $var; + +$var = $var % $var % $var; + +$var = $var << $var >> $var; +$var = $var >> $var << $var; +$var = $var >> $var >> $var; +$var = $var + $var >> $var; +$var = ($var + $var) >> $var; +$var = $var + ($var >> $var); + +$var = $var | $var & $var; +$var = $var & $var | $var; +$var = $var ^ $var ^ $var; +$var = $var & $var & $var; +$var = $var | $var | $var; +$var = $var & $var >> $var; +$var = $var << $var | $var; + +$var = $var ? 'foo' : 'bar' . 'test'; +$var = ($var ? 'foo' : 'bar') . 'test'; +$var = $var ? 'foo' : ('bar' . 'test'); + +call(($var + $var)); + +$var = call(($var + $var)); + +$var = $var + $var ** 2; +$var = ($var + $var) ** 2; +$var = $var + ($var ** 2); +$var = (+$var) ** 2; +$var = +$var ** 2; + +$var = $foo instanceof Foo; +$var = $foo instanceof Foo || $foo instanceof Foo; +$var = ($foo instanceof Foo) || ($foo instanceof Foo); +$var = (($foo) instanceof Foo); + +$var = !$var; +$var = !($var); +$var = (!($var)); +$var = !!$var; +$var = !!($var); +$var = !(!($var)); +$var = (!(!($var))); +$var = !!!$var; +$var = !!!($var); +$var = !!(!($var)); +$var = !(!(!($var))); +$var = (!(!(!($var)))); + +$var = !$var || !$var; +$var = (!($var) || !($var)); +$var = !(!($var) || !($var)); + +$var = $var + $var * $var; +$var = ($var + $var) * $var; + +$var = @foo() || @foo(); +$var = @(foo() || foo()); + +($var += ($var += ($var += $var))); +($var -= ($var -= ($var -= $var))); +($var *= ($var *= ($var *= $var))); +($var **= ($var **= ($var **= $var))); +($var /= ($var /= ($var /= $var))); +($var .= ($var .= ($var .= $var))); +($var %= ($var %= ($var %= $var))); +($var &= ($var &= ($var &= $var))); +($var |= ($var |= ($var |= $var))); +($var ^= ($var ^= ($var ^= $var))); +($var <<= ($var <<= ($var <<= $var))); +($var >>= ($var >>= ($var >>= $var))); + +$var = $var | $var | $var; +$var = $var | ($var | $var); +$var = ($var | $var) | $var; +$var = $var & $var & $var; +$var = $var & ($var & $var); +$var = ($var & $var) & $var; + +$var = $var ^ $var | $var; +$var = ($var ^ $var) | $var; +$var = $var | $var ^ $var; +$var = $var | ($var ^ $var); +$var = ($var | $var) ^ $var; + +$var = $var & $var | $var; +$var = ($var & $var) | $var; +$var = $var | $var & $var; +$var = $var | ($var & $var); +$var = ($var | $var) & $var; + +$var = $var == $var || false; +$var = ($var == $var) || false; +$var = $var == ($var || false); + +$var = false || $var == $var; +$var = false || ($var == $var); +$var = ($var || false) == $var; + +$var = 'string' . true ? '1' : '2'; +$var = 'string' . (true ? '1' : '2'); + +$var = 'string' . (100 + 100); +$var = (100 + 100) . 'string'; +$var = 'string' . ($var || 100); +$var = ($var || 100) . 'string'; +$var = 'string' . ($var * 100); +$var = ($var * 100) . 'string'; +$var = 'string' . !$var; +$var = !$var . 'string'; +$var = 'string' . ($var | 100); +$var = ($var | 100) . 'string'; + +$var = $var . $var % $var; +$var = ($var . $var) % $var; +$var = $var % $var . $var; +$var = $var % ($var . $var); + +$var = '100' - '100' - '100'; +$var = ('100' - '100') - '100'; +$var = '100' - ('100' - '100'); + +if (false || true) {}; +if ((false || true)) {}; +if (false or true) {}; +if ((false or true)) {}; +if (true && false) {}; +if ((true && false)) {}; +if (true and false) {}; +if ((true and false)) {}; + +if (!$foo or $bar == -1) {} +if ((!$foo or $bar == -1)) {} +if ((!$foo or $bar) == -1) {} +if (!$foo or ($bar == -1)) {} + +do {} while ($foo and $bar); +while ($foo or $bar < 10) {} +for ($foo or $bar;;) {} +switch ($foo or $bar) {} + +$a ** $b ** $c; +($a ** $b) ** $c; +$a->b ** $c; +(-$a) ** $b; +$a ** -$b; +-($a**$b); +($a * $b) ** $c; +$a ** ($b * $c); +($a % $b) ** $c; + +$var = $var + $var ?? ''; +$var = $var + ($var ?? ''); +$var = ($var + $var) ?? ''; +$var = $var ?? null + 1; +$var = ($var ?? null) + 1; +$var = $var && ($var ?? true); +$var = ($var ?? true) && $var; +$var = $var && ($var ?? null) === true; +$var = ($var ?? null) === true && $var; + +$findAll = $cachesNames === []; +$findAll = ($cachesNames === []); + +$isNamespaced = strpos($fixture, '\\\\') !== false; +$isNamespaced = (strpos($fixture, '\\\\') !== false); + +$var = $a['apply_time'] > $b['apply_time'] ? -1 : +1; +$var = ($a['apply_time'] > $b['apply_time']) ? -1 : +1; + +$var = $page > 0 || $page == 0 && $this->forcePageParam; +$var = $page > 0 || ($page == 0 && $this->forcePageParam); + +@foo() || @foo(); +(@foo()) || (@foo()); +$var = @foo() || @foo(); +$var = (@foo() || @foo()); + +@$i / 0; +@($i) / 0; + +$var = "a" . (@$b ? 'bar' : "baz"); + +$a = (false && foo()); +$b = (true || foo()); +$c = (false and foo()); +$d = (true or foo()); + +$f = false or true; +$h = true and false; + +$my_file = call('non_existent_file') or die("Failed opening file: error was '$php_errormsg'"); +($my_file = call('non_existent_file')) or die("Failed opening file: error was '$php_errormsg'"); + +$my_file = call('non_existent_file') and die("Failed opening file: error was '$php_errormsg'"); +($my_file = call('non_existent_file')) and die("Failed opening file: error was '$php_errormsg'"); + +$var = $obj->foo ?? "default"; +$var = $foo ? $bar ?? $foo : $baz; +$var = $foo ?? ($bar ?? $baz); +$var = ($foo ?? $baz) || $baz; +$var = $foo ?? $baz || $baz; +$var = ($foo && $baz) ?? $baz; +$var = $foo && ($baz ?? $baz); + +$result = 2 ** $number - 1; +$result = (2 ** $number) - 1; +$result = 2 ** ($number - 1); + +=====================================output===================================== +> 20) >> 30; +$var = (10 >> 20) >> 30; +$var = 10 >> (20 >> 30); + +$var = 10 ^ 20 ^ 30; +$var = 10 ^ 20 ^ 30; +$var = 10 ^ (20 ^ 30); + +$var = 10 | 20 | 30; +$var = 10 | 20 | 30; +$var = 10 | (20 | 30); + +$var = false || true; +$var = false || true; +($var = false) or true; +$var = (false or true); +$var = true && false; +$var = true && false; +($var = true) and false; +$var = (true and false); + +$var = $var || $var(); +$var = ($var || $var)(); +$var = $var && $var(); +$var = ($var && $var)(); +$var = call($var || $var); +$var = call($var || $var); +$var = call($var && $var); +$var = call($var && $var); + +$var = +($var || $var); +$var = -($var || $var); +$var = ~($var || $var); + +$var = ($var || $var)->foo; +$var = ($var || $var)->foo(); +$var = ($var || $var)[1]; + +$var = $var || ($var && $var); +$var = ($var || $var) && $var; +$var = $var || ($var && $var); + +$var = $var & ($var || "test"); +$var = ($var || "test") & $var; +$var = $var & ($var . "test"); +$var = ($var . "test") & $var; +$var = $var & $var || "test"; +$var = $var || "test" & $var; + +$var = ($var || $var) % 100; +$var = ($var + $var) % 100; +$var = 100 % ($var || $var); +$var = 100 % ($var + $var); +$var = $var || $var % 100; +$var = $var + ($var % 100); +$var = 100 % $var || $var; +$var = (100 % $var) + $var; + +$var = $var + $var >> 1; +$var = ($var - 1 >> $var) & $var; +$var = $var > $var ? 0 : $var - $var >> $var; +$var = ($var - $var >> $var) + 1; + +if ($var < 1 << $var + $var) { +} + +$var = $var < $var ? 0 : ($var - 1 >> $var) << $var; +$var = 1 - 2 * ($var[3] >> 7); +$var = ((($var[3] << 1) & 0xff) | ($var[2] >> 7)) - 127; +$var = (($var[2] & 0x7f) << 16) | ($var[1] << 8) | $var[0]; + +$var = ((2 / 3) * 10) / 2 + 2; + +$var = (($var / $var) * $var - $var / 2) * call($var); +$var = (($var / $var) * $var - $var / 2) * call($var); + +$var = ($var % 10) - 5; +$var = ($var * $var) % 10; +$var = $var % 10 > 5; +$var = $var % 10 == 0; + +$var = $var + $var / $var; +$var = $var / $var + $var; + +$var = ($var * $var) % $var; +$var = ($var / $var) % $var; +$var = ($var % $var) * $var; +$var = ($var % $var) / $var; + +$var = ($var % $var) % $var; + +$var = ($var << $var) >> $var; +$var = ($var >> $var) << $var; +$var = ($var >> $var) >> $var; +$var = $var + $var >> $var; +$var = $var + $var >> $var; +$var = $var + ($var >> $var); + +$var = $var | ($var & $var); +$var = ($var & $var) | $var; +$var = $var ^ $var ^ $var; +$var = $var & $var & $var; +$var = $var | $var | $var; +$var = $var & ($var >> $var); +$var = ($var << $var) | $var; + +$var = $var ? "foo" : "bar" . "test"; +$var = ($var ? "foo" : "bar") . "test"; +$var = $var ? "foo" : "bar" . "test"; + +call($var + $var); + +$var = call($var + $var); + +$var = $var + $var ** 2; +$var = ($var + $var) ** 2; +$var = $var + $var ** 2; +$var = (+$var) ** 2; +$var = (+$var) ** 2; + +$var = $foo instanceof Foo; +$var = $foo instanceof Foo || $foo instanceof Foo; +$var = $foo instanceof Foo || $foo instanceof Foo; +$var = $foo instanceof Foo; + +$var = !$var; +$var = !$var; +$var = !$var; +$var = !!$var; +$var = !!$var; +$var = !!$var; +$var = !!$var; +$var = !!!$var; +$var = !!!$var; +$var = !!!$var; +$var = !!!$var; +$var = !!!$var; + +$var = !$var || !$var; +$var = !$var || !$var; +$var = !(!$var || !$var); + +$var = $var + $var * $var; +$var = ($var + $var) * $var; + +$var = @foo() || @foo(); +$var = @(foo() || foo()); + +$var += $var += $var += $var; +$var -= $var -= $var -= $var; +$var *= $var *= $var *= $var; +$var **= $var **= $var **= $var; +$var /= $var /= $var /= $var; +$var .= $var .= $var .= $var; +$var %= $var %= $var %= $var; +$var &= $var &= $var &= $var; +$var |= $var |= $var |= $var; +$var ^= $var ^= $var ^= $var; +$var <<= $var <<= $var <<= $var; +$var >>= $var >>= $var >>= $var; + +$var = $var | $var | $var; +$var = $var | ($var | $var); +$var = $var | $var | $var; +$var = $var & $var & $var; +$var = $var & ($var & $var); +$var = $var & $var & $var; + +$var = ($var ^ $var) | $var; +$var = ($var ^ $var) | $var; +$var = $var | ($var ^ $var); +$var = $var | ($var ^ $var); +$var = ($var | $var) ^ $var; + +$var = ($var & $var) | $var; +$var = ($var & $var) | $var; +$var = $var | ($var & $var); +$var = $var | ($var & $var); +$var = ($var | $var) & $var; + +$var = $var == $var || false; +$var = $var == $var || false; +$var = $var == ($var || false); + +$var = false || $var == $var; +$var = false || $var == $var; +$var = ($var || false) == $var; + +$var = "string" . true ? "1" : "2"; +$var = "string" . (true ? "1" : "2"); + +$var = "string" . (100 + 100); +$var = 100 + 100 . "string"; +$var = "string" . ($var || 100); +$var = ($var || 100) . "string"; +$var = "string" . $var * 100; +$var = $var * 100 . "string"; +$var = "string" . !$var; +$var = !$var . "string"; +$var = "string" . ($var | 100); +$var = ($var | 100) . "string"; + +$var = $var . $var % $var; +$var = ($var . $var) % $var; +$var = $var % $var . $var; +$var = $var % ($var . $var); + +$var = "100" - "100" - "100"; +$var = "100" - "100" - "100"; +$var = "100" - ("100" - "100"); + +if (false || true) { +} +if (false || true) { +} +if (false or true) { +} +if (false or true) { +} +if (true && false) { +} +if (true && false) { +} +if (true and false) { +} +if (true and false) { +} + +if (!$foo or $bar == -1) { +} +if (!$foo or $bar == -1) { +} +if ((!$foo or $bar) == -1) { +} +if (!$foo or $bar == -1) { +} + +do { +} while ($foo and $bar); +while ($foo or $bar < 10) { +} +for ($foo or $bar; ; ) { +} +switch ($foo or $bar) { +} + +$a ** ($b ** $c); +($a ** $b) ** $c; +$a->b ** $c; +(-$a) ** $b; +$a ** -$b; +-($a ** $b); +($a * $b) ** $c; +$a ** ($b * $c); +($a % $b) ** $c; + +$var = $var + $var ?? ""; +$var = $var + ($var ?? ""); +$var = $var + $var ?? ""; +$var = $var ?? null + 1; +$var = ($var ?? null) + 1; +$var = $var && ($var ?? true); +$var = ($var ?? true) && $var; +$var = $var && ($var ?? null) === true; +$var = ($var ?? null) === true && $var; + +$findAll = $cachesNames === []; +$findAll = $cachesNames === []; + +$isNamespaced = strpos($fixture, "\\\\") !== false; +$isNamespaced = strpos($fixture, "\\\\") !== false; + +$var = $a["apply_time"] > $b["apply_time"] ? -1 : +1; +$var = $a["apply_time"] > $b["apply_time"] ? -1 : +1; + +$var = $page > 0 || ($page == 0 && $this->forcePageParam); +$var = $page > 0 || ($page == 0 && $this->forcePageParam); + +@foo() || @foo(); +@foo() || @foo(); +$var = @foo() || @foo(); +$var = @foo() || @foo(); + +@$i / 0; +@$i / 0; + +$var = "a" . (@$b ? "bar" : "baz"); + +$a = false && foo(); +$b = true || foo(); +$c = (false and foo()); +$d = (true or foo()); + +($f = false) or true; +($h = true) and false; + +($my_file = call("non_existent_file")) or + die("Failed opening file: error was '$php_errormsg'"); +($my_file = call("non_existent_file")) or + die("Failed opening file: error was '$php_errormsg'"); + +($my_file = call("non_existent_file")) and + die("Failed opening file: error was '$php_errormsg'"); +($my_file = call("non_existent_file")) and + die("Failed opening file: error was '$php_errormsg'"); + +$var = $obj->foo ?? "default"; +$var = $foo ? $bar ?? $foo : $baz; +$var = $foo ?? ($bar ?? $baz); +$var = ($foo ?? $baz) || $baz; +$var = $foo ?? $baz || $baz; +$var = $foo && $baz ?? $baz; +$var = $foo && ($baz ?? $baz); + +$result = 2 ** $number - 1; +$result = 2 ** $number - 1; +$result = 2 ** ($number - 1); + +================================================================================ +`; + +exports[`block.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +c()); +} + +=====================================output===================================== +c(); +} + +================================================================================ +`; + +exports[`block.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +c()); +} + +=====================================output===================================== +c(); +} + +================================================================================ +`; + +exports[`break.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +call(); +$var = ($foo)->call(); +$var = ($foo->call()); +$var = $foo->call()->call(); +$var = ($foo)->call()->call(); +$var = (($foo)->call())->call(); +$var = ((($foo)->call())->call()); + +$var = call((call())); +$var = call(...(call())); +$var = (call((call()))); +$var = (call((call()), (call()))); + +$var = $func(); +$var = ($func)(); +$var = ($func()); +$var = (($func)()); + +$var = $this->$name(); +$var = ($this)->$name(); +$var = ($this->$name()); +$var = (($this)->$name()); + +$var = Foo::call(); +$var = (Foo::call()); + +$var = (array("Foo", "bar"))(); +$var = (array(new Foo, "baz"))(); +$var = ((string) 1234)(); +$var = "Foo::bar"(); +$var = ("Foo::bar")(); + +call(($a), (($b)), ((($c)))); +call($a = $b); +call(($a = $b)); +call($a = new Foo()); +call(($a = new Foo())); +call($a = (new Foo())); +call(($a = (new Foo()))); +$foo->call(($a = (new Foo()))); +Foo::call(($a = (new Foo()))); + +=====================================output===================================== +call(); +$var = $foo->call(); +$var = $foo->call(); +$var = $foo->call()->call(); +$var = $foo->call()->call(); +$var = $foo->call()->call(); +$var = $foo->call()->call(); + +$var = call(call()); +$var = call(...call()); +$var = call(call()); +$var = call(call(), call()); + +$var = $func(); +$var = $func(); +$var = $func(); +$var = $func(); + +$var = $this->$name(); +$var = $this->$name(); +$var = $this->$name(); +$var = $this->$name(); + +$var = Foo::call(); +$var = Foo::call(); + +$var = (["Foo", "bar"])(); +$var = ([new Foo(), "baz"])(); +$var = ((string) 1234)(); +$var = ("Foo::bar")(); +$var = ("Foo::bar")(); + +call($a, $b, $c); +call($a = $b); +call($a = $b); +call($a = new Foo()); +call($a = new Foo()); +call($a = new Foo()); +call($a = new Foo()); +$foo->call($a = new Foo()); +Foo::call($a = new Foo()); + +================================================================================ +`; + +exports[`call.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +call(); +$var = ($foo)->call(); +$var = ($foo->call()); +$var = $foo->call()->call(); +$var = ($foo)->call()->call(); +$var = (($foo)->call())->call(); +$var = ((($foo)->call())->call()); + +$var = call((call())); +$var = call(...(call())); +$var = (call((call()))); +$var = (call((call()), (call()))); + +$var = $func(); +$var = ($func)(); +$var = ($func()); +$var = (($func)()); + +$var = $this->$name(); +$var = ($this)->$name(); +$var = ($this->$name()); +$var = (($this)->$name()); + +$var = Foo::call(); +$var = (Foo::call()); + +$var = (array("Foo", "bar"))(); +$var = (array(new Foo, "baz"))(); +$var = ((string) 1234)(); +$var = "Foo::bar"(); +$var = ("Foo::bar")(); + +call(($a), (($b)), ((($c)))); +call($a = $b); +call(($a = $b)); +call($a = new Foo()); +call(($a = new Foo())); +call($a = (new Foo())); +call(($a = (new Foo()))); +$foo->call(($a = (new Foo()))); +Foo::call(($a = (new Foo()))); + +=====================================output===================================== +call(); +$var = $foo->call(); +$var = $foo->call(); +$var = $foo->call()->call(); +$var = $foo->call()->call(); +$var = $foo->call()->call(); +$var = $foo->call()->call(); + +$var = call(call()); +$var = call(...call()); +$var = call(call()); +$var = call(call(), call()); + +$var = $func(); +$var = $func(); +$var = $func(); +$var = $func(); + +$var = $this->$name(); +$var = $this->$name(); +$var = $this->$name(); +$var = $this->$name(); + +$var = Foo::call(); +$var = Foo::call(); + +$var = (["Foo", "bar"])(); +$var = ([new Foo(), "baz"])(); +$var = ((string) 1234)(); +$var = ("Foo::bar")(); +$var = ("Foo::bar")(); + +call($a, $b, $c); +call($a = $b); +call($a = $b); +call($a = new Foo()); +call($a = new Foo()); +call($a = new Foo()); +call($a = new Foo()); +$foo->call($a = new Foo()); +Foo::call($a = new Foo()); + +================================================================================ +`; + +exports[`cast.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== + 'foo'))); +$var = ((object) (['1' => 'foo'])); +$var = ((object) 'ciao')->scalar; +$var = ((object) array('test'))->{'0'}; +$var = (((object) array('test'))->{'0'}); +$var = (array) new B(); +$var = (array) (new B()); +$var = ((array) (new B())); +$var = ((array) (new B()))['foo']; +$var = ((string) 1234)[1]; +$var = ((string) 123)(); +$var = ((string) (123))(); +$var = "test"[0]; +$var = (array) "test"[0]; +$var = ((array) "test")[0]; +$var = [(int) 'key' => (int) '1']; +$var = [((int) 'key') => ((int) '1')]; +$var = ([((int) 'key') => ((int) '1')]); +$var = (int) $raw['data'] + $value; +$var = ((int) $raw['data']) + $value; +$var = (bool) $var ? 1 : 2; +$var = (bool) ($var ? 1 : 2); +$var = (bool) $var + 1 ? 1 : 2; +$var = ((bool) $var) + 1 ? 1 : 2; +$var = (bool) ($var + 1) ? 1 : 2; +$var = ((bool) $var) ? 1 : 2; +$var = ((bool) $var) ? (bool) 1 : (bool) 2; +$var = ((bool) $var) ? ((bool) 1) : ((bool) 2); +$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; +$var = ((bool) $var) ? ((bool) 1 + 2) : ((bool) 2 + 3); +$var = ((bool) $var) ? (bool) $var ? 1 : 2 : (bool) $var ? 1 : 2; +$var = ((bool) $var) ? ((bool) $var) ? 1 : 2 : ((bool) $var) ? 1 : 2; +$var = ((bool) $var) ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2); +$var = (bool) ($var ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2)); +$var = (bool) $var->foo; +$var = (bool) ($var->foo); +$var = ((bool) $var->foo); +$var = ((object) $var)->foo; +$var = ((object) $var)[0]; +$var = (int) 'test' + (int) 'test'; +$var = ((int) 'test') + ((int) 'test'); +$var = ((int) 'test') * ((int) 'test'); +$var = ((int) 'test') | ((int) 'test'); +$var = ((int) 'test') % ((int) 'test'); +$var = @((int) 'test'); +$var = @((int) call()); +$var = (int) (int) 1; +$var = (int) ((int) 1); +$var = call((int) $var, (int) call(), (int) $minutes * 60); +$var = call(((int) $var), ((int) call()), (int) ($minutes * 60)); +$var = $var + (int) $minutes * 60; +$var = $var + (int) ($minutes * 60); + +return (int) $var; +return ((int) $var); + +if ((int) 1 === 1) {} +if (1 === (int) 1) {} +if (((int) 1) === 1) {} +if (1 === ((int) 1)) {} +if ((int) 1 === (int) 1) {} +if (((int) 1) === (int) 1) {} +if ((int) 1 === ((int) 1)) {} +if (((int) (1)) === ((int) 1)) {} + +$var = (bool) call(); +$var = $var || (bool) call(); +$var = (bool) call() || $var; + +$var = (int) $var === 1; +$var = ((int) $var) === 1; +$var = (int) ($var === 1); + +$this->apc->put($this->prefix.$key, $value, (int) ($minutes * 60)); + +$timeout = (int) ($server->timeout / 1000) + (($server->timeout % 1000 > 0) ? 1 : 0); + +=====================================output===================================== + "foo"]); +$var = ((object) ["1" => "foo"]); +$var = ((object) "ciao")->scalar; +$var = ((object) ["test"])->{'0'}; +$var = ((object) ["test"])->{'0'}; +$var = (array) new B(); +$var = (array) new B(); +$var = ((array) new B()); +$var = ((array) new B())["foo"]; +$var = ((string) 1234)[1]; +$var = ((string) 123)(); +$var = ((string) 123)(); +$var = "test"[0]; +$var = (array) "test"[0]; +$var = ((array) "test")[0]; +$var = [(int) "key" => (int) "1"]; +$var = [((int) "key") => ((int) "1")]; +$var = [((int) "key") => ((int) "1")]; +$var = (int) $raw["data"] + $value; +$var = ((int) $raw["data"]) + $value; +$var = (bool) $var ? 1 : 2; +$var = (bool) ($var ? 1 : 2); +$var = (bool) $var + 1 ? 1 : 2; +$var = ((bool) $var) + 1 ? 1 : 2; +$var = (bool) ($var + 1) ? 1 : 2; +$var = ((bool) $var) ? 1 : 2; +$var = ((bool) $var) ? (bool) 1 : (bool) 2; +$var = ((bool) $var) ? ((bool) 1) : ((bool) 2); +$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; +$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; +$var = (((bool) $var) ? ((bool) $var ? 1 : 2) : (bool) $var) ? 1 : 2; +$var = (((bool) $var) ? (((bool) $var) ? 1 : 2) : ((bool) $var)) ? 1 : 2; +$var = ((bool) $var) ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2); +$var = (bool) ($var ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2)); +$var = (bool) $var->foo; +$var = (bool) $var->foo; +$var = ((bool) $var->foo); +$var = ((object) $var)->foo; +$var = ((object) $var)[0]; +$var = (int) "test" + (int) "test"; +$var = ((int) "test") + ((int) "test"); +$var = ((int) "test") * ((int) "test"); +$var = ((int) "test") | ((int) "test"); +$var = ((int) "test") % ((int) "test"); +$var = @((int) "test"); +$var = @((int) call()); +$var = (int) (int) 1; +$var = (int) ((int) 1); +$var = call((int) $var, (int) call(), (int) $minutes * 60); +$var = call(((int) $var), ((int) call()), (int) ($minutes * 60)); +$var = $var + (int) $minutes * 60; +$var = $var + (int) ($minutes * 60); + +return (int) $var; +return (int) $var; + +if ((int) 1 === 1) { +} +if (1 === (int) 1) { +} +if (((int) 1) === 1) { +} +if (1 === ((int) 1)) { +} +if ((int) 1 === (int) 1) { +} +if (((int) 1) === (int) 1) { +} +if ((int) 1 === ((int) 1)) { +} +if (((int) 1) === ((int) 1)) { +} + +$var = (bool) call(); +$var = $var || (bool) call(); +$var = (bool) call() || $var; + +$var = (int) $var === 1; +$var = ((int) $var) === 1; +$var = (int) ($var === 1); + +$this->apc->put($this->prefix . $key, $value, (int) ($minutes * 60)); + +$timeout = + (int) ($server->timeout / 1000) + ($server->timeout % 1000 > 0 ? 1 : 0); + +================================================================================ +`; + +exports[`cast.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + 'foo'))); +$var = ((object) (['1' => 'foo'])); +$var = ((object) 'ciao')->scalar; +$var = ((object) array('test'))->{'0'}; +$var = (((object) array('test'))->{'0'}); +$var = (array) new B(); +$var = (array) (new B()); +$var = ((array) (new B())); +$var = ((array) (new B()))['foo']; +$var = ((string) 1234)[1]; +$var = ((string) 123)(); +$var = ((string) (123))(); +$var = "test"[0]; +$var = (array) "test"[0]; +$var = ((array) "test")[0]; +$var = [(int) 'key' => (int) '1']; +$var = [((int) 'key') => ((int) '1')]; +$var = ([((int) 'key') => ((int) '1')]); +$var = (int) $raw['data'] + $value; +$var = ((int) $raw['data']) + $value; +$var = (bool) $var ? 1 : 2; +$var = (bool) ($var ? 1 : 2); +$var = (bool) $var + 1 ? 1 : 2; +$var = ((bool) $var) + 1 ? 1 : 2; +$var = (bool) ($var + 1) ? 1 : 2; +$var = ((bool) $var) ? 1 : 2; +$var = ((bool) $var) ? (bool) 1 : (bool) 2; +$var = ((bool) $var) ? ((bool) 1) : ((bool) 2); +$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; +$var = ((bool) $var) ? ((bool) 1 + 2) : ((bool) 2 + 3); +$var = ((bool) $var) ? (bool) $var ? 1 : 2 : (bool) $var ? 1 : 2; +$var = ((bool) $var) ? ((bool) $var) ? 1 : 2 : ((bool) $var) ? 1 : 2; +$var = ((bool) $var) ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2); +$var = (bool) ($var ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2)); +$var = (bool) $var->foo; +$var = (bool) ($var->foo); +$var = ((bool) $var->foo); +$var = ((object) $var)->foo; +$var = ((object) $var)[0]; +$var = (int) 'test' + (int) 'test'; +$var = ((int) 'test') + ((int) 'test'); +$var = ((int) 'test') * ((int) 'test'); +$var = ((int) 'test') | ((int) 'test'); +$var = ((int) 'test') % ((int) 'test'); +$var = @((int) 'test'); +$var = @((int) call()); +$var = (int) (int) 1; +$var = (int) ((int) 1); +$var = call((int) $var, (int) call(), (int) $minutes * 60); +$var = call(((int) $var), ((int) call()), (int) ($minutes * 60)); +$var = $var + (int) $minutes * 60; +$var = $var + (int) ($minutes * 60); + +return (int) $var; +return ((int) $var); + +if ((int) 1 === 1) {} +if (1 === (int) 1) {} +if (((int) 1) === 1) {} +if (1 === ((int) 1)) {} +if ((int) 1 === (int) 1) {} +if (((int) 1) === (int) 1) {} +if ((int) 1 === ((int) 1)) {} +if (((int) (1)) === ((int) 1)) {} + +$var = (bool) call(); +$var = $var || (bool) call(); +$var = (bool) call() || $var; + +$var = (int) $var === 1; +$var = ((int) $var) === 1; +$var = (int) ($var === 1); + +$this->apc->put($this->prefix.$key, $value, (int) ($minutes * 60)); + +$timeout = (int) ($server->timeout / 1000) + (($server->timeout % 1000 > 0) ? 1 : 0); + +=====================================output===================================== + "foo"]); +$var = ((object) ["1" => "foo"]); +$var = ((object) "ciao")->scalar; +$var = ((object) ["test"])->{'0'}; +$var = ((object) ["test"])->{'0'}; +$var = (array) new B(); +$var = (array) new B(); +$var = ((array) new B()); +$var = ((array) new B())["foo"]; +$var = ((string) 1234)[1]; +$var = ((string) 123)(); +$var = ((string) 123)(); +$var = "test"[0]; +$var = (array) "test"[0]; +$var = ((array) "test")[0]; +$var = [(int) "key" => (int) "1"]; +$var = [((int) "key") => ((int) "1")]; +$var = [((int) "key") => ((int) "1")]; +$var = (int) $raw["data"] + $value; +$var = ((int) $raw["data"]) + $value; +$var = (bool) $var ? 1 : 2; +$var = (bool) ($var ? 1 : 2); +$var = (bool) $var + 1 ? 1 : 2; +$var = ((bool) $var) + 1 ? 1 : 2; +$var = (bool) ($var + 1) ? 1 : 2; +$var = ((bool) $var) ? 1 : 2; +$var = ((bool) $var) ? (bool) 1 : (bool) 2; +$var = ((bool) $var) ? ((bool) 1) : ((bool) 2); +$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; +$var = ((bool) $var) ? (bool) 1 + 2 : (bool) 2 + 3; +$var = (((bool) $var) ? ((bool) $var ? 1 : 2) : (bool) $var) ? 1 : 2; +$var = (((bool) $var) ? (((bool) $var) ? 1 : 2) : ((bool) $var)) ? 1 : 2; +$var = ((bool) $var) ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2); +$var = (bool) ($var ? (bool) ($var ? 1 : 2) : (bool) ($var ? 1 : 2)); +$var = (bool) $var->foo; +$var = (bool) $var->foo; +$var = ((bool) $var->foo); +$var = ((object) $var)->foo; +$var = ((object) $var)[0]; +$var = (int) "test" + (int) "test"; +$var = ((int) "test") + ((int) "test"); +$var = ((int) "test") * ((int) "test"); +$var = ((int) "test") | ((int) "test"); +$var = ((int) "test") % ((int) "test"); +$var = @((int) "test"); +$var = @((int) call()); +$var = (int) (int) 1; +$var = (int) ((int) 1); +$var = call((int) $var, (int) call(), (int) $minutes * 60); +$var = call(((int) $var), ((int) call()), (int) ($minutes * 60)); +$var = $var + (int) $minutes * 60; +$var = $var + (int) ($minutes * 60); + +return (int) $var; +return (int) $var; + +if ((int) 1 === 1) { +} +if (1 === (int) 1) { +} +if (((int) 1) === 1) { +} +if (1 === ((int) 1)) { +} +if ((int) 1 === (int) 1) { +} +if (((int) 1) === (int) 1) { +} +if ((int) 1 === ((int) 1)) { +} +if (((int) 1) === ((int) 1)) { +} + +$var = (bool) call(); +$var = $var || (bool) call(); +$var = (bool) call() || $var; + +$var = (int) $var === 1; +$var = ((int) $var) === 1; +$var = (int) ($var === 1); + +$this->apc->put($this->prefix . $key, $value, (int) ($minutes * 60)); + +$timeout = + (int) ($server->timeout / 1000) + ($server->timeout % 1000 > 0 ? 1 : 0); + +================================================================================ +`; + +exports[`clone.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +foo; +$var = (clone $a->foo); +$var = (clone $a)->foo(); + +$var = (clone foo())->bar()->foo(); +$var = ((clone foo())->bar())->foo(); +$var = (((clone foo())->bar())->foo()); +$var = (((clone foo())->bar())->foo())[0]; +$var = ((((clone foo())->bar())->foo())[0])[1]; +$var = (((clone foo())->bar())->foo())->baz(); +$var = (clone $foo())->bar; +$var = (clone $bar->y)->x; +$var = (clone $foo)[0]; +$var = (clone $foo)[0]['string']; + +$var = clone $a->b; +$var = clone $a->b(); +$var = (clone $a)->b(); +$var = ((clone $a)->b()); + +$var = (clone ($var)); +$var = (clone($var)); +$var = (clone($var->foo)); +$var = (clone($var->foo))->foo; + +=====================================output===================================== +foo; +$var = clone $a->foo; +$var = (clone $a)->foo(); + +$var = (clone foo())->bar()->foo(); +$var = (clone foo())->bar()->foo(); +$var = (clone foo())->bar()->foo(); +$var = (clone foo())->bar()->foo()[0]; +$var = (clone foo())->bar()->foo()[0][1]; +$var = (clone foo())->bar()->foo()->baz(); +$var = (clone $foo())->bar; +$var = (clone $bar->y)->x; +$var = (clone $foo)[0]; +$var = (clone $foo)[0]["string"]; + +$var = clone $a->b; +$var = clone $a->b(); +$var = (clone $a)->b(); +$var = (clone $a)->b(); + +$var = clone $var; +$var = clone $var; +$var = clone $var->foo; +$var = (clone $var->foo)->foo; + +================================================================================ +`; + +exports[`clone.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +foo; +$var = (clone $a->foo); +$var = (clone $a)->foo(); + +$var = (clone foo())->bar()->foo(); +$var = ((clone foo())->bar())->foo(); +$var = (((clone foo())->bar())->foo()); +$var = (((clone foo())->bar())->foo())[0]; +$var = ((((clone foo())->bar())->foo())[0])[1]; +$var = (((clone foo())->bar())->foo())->baz(); +$var = (clone $foo())->bar; +$var = (clone $bar->y)->x; +$var = (clone $foo)[0]; +$var = (clone $foo)[0]['string']; + +$var = clone $a->b; +$var = clone $a->b(); +$var = (clone $a)->b(); +$var = ((clone $a)->b()); + +$var = (clone ($var)); +$var = (clone($var)); +$var = (clone($var->foo)); +$var = (clone($var->foo))->foo; + +=====================================output===================================== +foo; +$var = clone $a->foo; +$var = (clone $a)->foo(); + +$var = (clone foo())->bar()->foo(); +$var = (clone foo())->bar()->foo(); +$var = (clone foo())->bar()->foo(); +$var = (clone foo())->bar()->foo()[0]; +$var = (clone foo())->bar()->foo()[0][1]; +$var = (clone foo())->bar()->foo()->baz(); +$var = (clone $foo())->bar; +$var = (clone $bar->y)->x; +$var = (clone $foo)[0]; +$var = (clone $foo)[0]["string"]; + +$var = clone $a->b; +$var = clone $a->b(); +$var = (clone $a)->b(); +$var = (clone $a)->b(); + +$var = clone $var; +$var = clone $var; +$var = clone $var->foo; +$var = (clone $var->foo)->foo; + +================================================================================ +`; + +exports[`closure.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== + $b)) { + echo "a is bigger than b"; +} elseif (($a == $b)) { + echo "a is equal to b"; +} else { + echo "a is smaller than b"; +} + +while (($i <= 10)) { + echo $i++; +} + +do { + echo $i; +} while (($i > 0)); + +switch (($i)) { + case (0): + echo "i equals 0"; + break; + case ((1)): + echo "i equals 1"; + break; + case ('test' . ( 1 > 2 ? 'foo' : 'bar')): + echo "i equals 2"; + break; +} + +switch (($i + 1)) { + case (0): + echo "i equals 0"; + break; + case (1 + 2): + echo "i equals 1"; + break; + case (1 + ( 1 > 2 ? 1 : 3)): + echo "i equals 2"; + break; +} + +while (++$i) { + switch ($i) { + case 5: + echo "At 5
\\n"; + break (2); /* Exit only the switch. */ + case 10: + echo "At 10; quitting
\\n"; + break ((4)); /* Exit the switch and the while. */ + default: + break; + } +} + +while ($i++ < 5) { + echo "Outer
\\n"; + while (1) { + echo "Middle
\\n"; + while (1) { + echo "Inner
\\n"; + continue (3); + } + echo "This never gets output.
\\n"; + continue ((2)); + } + echo "Neither does this.
\\n"; +} + +if ($var = 1) {} +if (($var = 1)) {} +if ($var = 1) {} else if ($var = 1) {} else {} +if (($var = 1)) {} else if (($var = 1)) {} else {} +do {} while ($var = 1); +do {} while (($var = 1)); +while ($var = 1) {} +while (($var = 1)) {} +for ($i = 1; $i <= 10; $i++) {} +for (($i = 1); ($i <= 10); ($i++)) {} +foreach (($arr = [1, 2, 3]) as $value) {} +foreach (($arr) as $value) {} +foreach (($arr) as $key => $value) {} +foreach (($arr = [1, 2, 3]) as $key => $value) {} +switch ($var = 1) {} +switch (($var = 1)) {} + +while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) {} +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) {} + +if (($foo = $bar) && count($foo) > 0) {} +if( false !== ($file = readdir($dh)) && 0 !== strpos($file,'.')){} +while (($a = foo()) !== 5) {} +while( false !== ($file = readdir($dh))){} +do {} while( false !== ($file = readdir($dh))); + +=====================================output===================================== + $b) { + echo "a is bigger than b"; +} elseif ($a == $b) { + echo "a is equal to b"; +} else { + echo "a is smaller than b"; +} + +while ($i <= 10) { + echo $i++; +} + +do { + echo $i; +} while ($i > 0); + +switch ($i) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case "test" . (1 > 2 ? "foo" : "bar"): + echo "i equals 2"; + break; +} + +switch ($i + 1) { + case 0: + echo "i equals 0"; + break; + case 1 + 2: + echo "i equals 1"; + break; + case 1 + (1 > 2 ? 1 : 3): + echo "i equals 2"; + break; +} + +while (++$i) { + switch ($i) { + case 5: + echo "At 5
\\n"; + break 2; /* Exit only the switch. */ + case 10: + echo "At 10; quitting
\\n"; + break 4; /* Exit the switch and the while. */ + default: + break; + } +} + +while ($i++ < 5) { + echo "Outer
\\n"; + while (1) { + echo "Middle
\\n"; + while (1) { + echo "Inner
\\n"; + continue 3; + } + echo "This never gets output.
\\n"; + continue 2; + } + echo "Neither does this.
\\n"; +} + +if ($var = 1) { +} +if ($var = 1) { +} +if ($var = 1) { +} elseif ($var = 1) { +} else { +} +if ($var = 1) { +} elseif ($var = 1) { +} else { +} +do { +} while ($var = 1); +do { +} while ($var = 1); +while ($var = 1) { +} +while ($var = 1) { +} +for ($i = 1; $i <= 10; $i++) { +} +for ($i = 1; $i <= 10; $i++) { +} +foreach ($arr = [1, 2, 3] as $value) { +} +foreach ($arr as $value) { +} +foreach ($arr as $key => $value) { +} +foreach ($arr = [1, 2, 3] as $key => $value) { +} +switch ($var = 1) { +} +switch ($var = 1) { +} + +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { +} +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { +} + +if (($foo = $bar) && count($foo) > 0) { +} +if (false !== ($file = readdir($dh)) && 0 !== strpos($file, ".")) { +} +while (($a = foo()) !== 5) { +} +while (false !== ($file = readdir($dh))) { +} +do { +} while (false !== ($file = readdir($dh))); + +================================================================================ +`; + +exports[`control-structures.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + $b)) { + echo "a is bigger than b"; +} elseif (($a == $b)) { + echo "a is equal to b"; +} else { + echo "a is smaller than b"; +} + +while (($i <= 10)) { + echo $i++; +} + +do { + echo $i; +} while (($i > 0)); + +switch (($i)) { + case (0): + echo "i equals 0"; + break; + case ((1)): + echo "i equals 1"; + break; + case ('test' . ( 1 > 2 ? 'foo' : 'bar')): + echo "i equals 2"; + break; +} + +switch (($i + 1)) { + case (0): + echo "i equals 0"; + break; + case (1 + 2): + echo "i equals 1"; + break; + case (1 + ( 1 > 2 ? 1 : 3)): + echo "i equals 2"; + break; +} + +while (++$i) { + switch ($i) { + case 5: + echo "At 5
\\n"; + break (2); /* Exit only the switch. */ + case 10: + echo "At 10; quitting
\\n"; + break ((4)); /* Exit the switch and the while. */ + default: + break; + } +} + +while ($i++ < 5) { + echo "Outer
\\n"; + while (1) { + echo "Middle
\\n"; + while (1) { + echo "Inner
\\n"; + continue (3); + } + echo "This never gets output.
\\n"; + continue ((2)); + } + echo "Neither does this.
\\n"; +} + +if ($var = 1) {} +if (($var = 1)) {} +if ($var = 1) {} else if ($var = 1) {} else {} +if (($var = 1)) {} else if (($var = 1)) {} else {} +do {} while ($var = 1); +do {} while (($var = 1)); +while ($var = 1) {} +while (($var = 1)) {} +for ($i = 1; $i <= 10; $i++) {} +for (($i = 1); ($i <= 10); ($i++)) {} +foreach (($arr = [1, 2, 3]) as $value) {} +foreach (($arr) as $value) {} +foreach (($arr) as $key => $value) {} +foreach (($arr = [1, 2, 3]) as $key => $value) {} +switch ($var = 1) {} +switch (($var = 1)) {} + +while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) {} +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) {} + +if (($foo = $bar) && count($foo) > 0) {} +if( false !== ($file = readdir($dh)) && 0 !== strpos($file,'.')){} +while (($a = foo()) !== 5) {} +while( false !== ($file = readdir($dh))){} +do {} while( false !== ($file = readdir($dh))); + +=====================================output===================================== + $b) { + echo "a is bigger than b"; +} elseif ($a == $b) { + echo "a is equal to b"; +} else { + echo "a is smaller than b"; +} + +while ($i <= 10) { + echo $i++; +} + +do { + echo $i; +} while ($i > 0); + +switch ($i) { + case 0: + echo "i equals 0"; + break; + case 1: + echo "i equals 1"; + break; + case "test" . (1 > 2 ? "foo" : "bar"): + echo "i equals 2"; + break; +} + +switch ($i + 1) { + case 0: + echo "i equals 0"; + break; + case 1 + 2: + echo "i equals 1"; + break; + case 1 + (1 > 2 ? 1 : 3): + echo "i equals 2"; + break; +} + +while (++$i) { + switch ($i) { + case 5: + echo "At 5
\\n"; + break 2; /* Exit only the switch. */ + case 10: + echo "At 10; quitting
\\n"; + break 4; /* Exit the switch and the while. */ + default: + break; + } +} + +while ($i++ < 5) { + echo "Outer
\\n"; + while (1) { + echo "Middle
\\n"; + while (1) { + echo "Inner
\\n"; + continue 3; + } + echo "This never gets output.
\\n"; + continue 2; + } + echo "Neither does this.
\\n"; +} + +if ($var = 1) { +} +if ($var = 1) { +} +if ($var = 1) { +} elseif ($var = 1) { +} else { +} +if ($var = 1) { +} elseif ($var = 1) { +} else { +} +do { +} while ($var = 1); +do { +} while ($var = 1); +while ($var = 1) { +} +while ($var = 1) { +} +for ($i = 1; $i <= 10; $i++) { +} +for ($i = 1; $i <= 10; $i++) { +} +foreach ($arr = [1, 2, 3] as $value) { +} +foreach ($arr as $value) { +} +foreach ($arr as $key => $value) { +} +foreach ($arr = [1, 2, 3] as $key => $value) { +} +switch ($var = 1) { +} +switch ($var = 1) { +} + +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { +} +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { +} + +if (($foo = $bar) && count($foo) > 0) { +} +if (false !== ($file = readdir($dh)) && 0 !== strpos($file, ".")) { +} +while (($a = foo()) !== 5) { +} +while (false !== ($file = readdir($dh))) { +} +do { +} while (false !== ($file = readdir($dh))); + +================================================================================ +`; + +exports[`declare.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +c()); + +=====================================output===================================== +c(); + +================================================================================ +`; + +exports[`declare.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +c()); + +=====================================output===================================== +c(); + +================================================================================ +`; + +exports[`echo.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +bar; +($var->bar); + +$var->bar(); +($var->bar()); + +$var::bar(); +($var::bar()); + +$var = $var->bar; +$var = ($var->bar); +$var = $var->bar->foo; +$var = ($var->bar)->foo; +$var = ($var->bar->foo); +$var = (($var->bar)->foo); + +$var = $var::foo(); +$var = ($var::foo()); +$var = $var::foo()::bar(); +$var = ($var::foo())::bar(); +$var = ($var::foo()::bar()); +$var = (($var::foo())::bar()); + +$var = $var->bar(); +$var = ($var->bar()); +$var = $var->bar()->foo(); +$var = ($var->bar())->foo(); +$var = ($var->bar()->foo()); +$var = (($var->bar())->foo()); + +$var = ((object) ($var->bar())->foo()); +$var = (object) (($var->bar())->foo()); + +$var = $var[0]; +$var = $var[0][1]; +$var = ($var[0]); +$var = ($var[0][1]); +$var = $var[0]->foo; +$var = ($var[0])->foo; +$var = ($var[0][1])->foo; +$var = ($var[0])[1]->foo; +$var = (($var[0])[1])->foo; +$var = $var[0]::foo; +$var = ($var[0])::foo; +$var = ($var[0][1])::foo; +$var = ($var[0])[1]::foo; +$var = (($var[0])[1])::foo; +$var = $var[0]->foo(); +$var = ($var[0])->foo(); +$var = ($var[0][1])->foo(); +$var = ($var[0])[1]->foo(); +$var = (($var[0])[1])->foo(); +$var = $var[0]::foo(); +$var = ($var[0])::foo(); +$var = ($var[0][1])::foo(); +$var = ($var[0])[1]::foo(); +$var = (($var[0])[1])::foo(); + +$var = $var[0]->foo()->baz; +$var = ((($var[0])->foo())->baz); + +$var = (new Foo())->bar; +$var = (new Foo())::bar; +$var = (new Foo())->bar(); +$var = (new Foo())::bar(); +$var = (new Foo())[1]; + +$var = $var->bar()(); +$var = ($var->bar())(); +$var = ($var->bar()()); +$var = (($var->bar())()); + +$var = $var::bar()(); +$var = ($var::bar())(); +$var = ($var::bar()()); +$var = (($var::bar())()); + +$var = ($var)->bar; +$var = (($var)->bar); +$var = ($var)->bar(); +$var = (($var)->bar()); + +$var = (function () { + return $this->foo; +})->bindTo($var, A::class)(); +$var = (((function () { + return $this->foo; +})))->bindTo($var, A::class)(); + +=====================================output===================================== +bar; +$var->bar; + +$var->bar(); +$var->bar(); + +$var::bar(); +$var::bar(); + +$var = $var->bar; +$var = $var->bar; +$var = $var->bar->foo; +$var = $var->bar->foo; +$var = $var->bar->foo; +$var = $var->bar->foo; + +$var = $var::foo(); +$var = $var::foo(); +$var = $var::foo()::bar(); +$var = $var::foo()::bar(); +$var = $var::foo()::bar(); +$var = $var::foo()::bar(); + +$var = $var->bar(); +$var = $var->bar(); +$var = $var->bar()->foo(); +$var = $var->bar()->foo(); +$var = $var->bar()->foo(); +$var = $var->bar()->foo(); + +$var = ((object) $var->bar()->foo()); +$var = (object) $var->bar()->foo(); + +$var = $var[0]; +$var = $var[0][1]; +$var = $var[0]; +$var = $var[0][1]; +$var = $var[0]->foo; +$var = $var[0]->foo; +$var = $var[0][1]->foo; +$var = $var[0][1]->foo; +$var = $var[0][1]->foo; +$var = $var[0]::foo; +$var = $var[0]::foo; +$var = $var[0][1]::foo; +$var = $var[0][1]::foo; +$var = $var[0][1]::foo; +$var = $var[0]->foo(); +$var = $var[0]->foo(); +$var = $var[0][1]->foo(); +$var = $var[0][1]->foo(); +$var = $var[0][1]->foo(); +$var = $var[0]::foo(); +$var = $var[0]::foo(); +$var = $var[0][1]::foo(); +$var = $var[0][1]::foo(); +$var = $var[0][1]::foo(); + +$var = $var[0]->foo()->baz; +$var = $var[0]->foo()->baz; + +$var = (new Foo())->bar; +$var = (new Foo())::bar; +$var = (new Foo())->bar(); +$var = (new Foo())::bar(); +$var = (new Foo())[1]; + +$var = $var->bar()(); +$var = $var->bar()(); +$var = $var->bar()(); +$var = $var->bar()(); + +$var = $var::bar()(); +$var = $var::bar()(); +$var = $var::bar()(); +$var = $var::bar()(); + +$var = $var->bar; +$var = $var->bar; +$var = $var->bar(); +$var = $var->bar(); + +$var = (function () { + return $this->foo; +})->bindTo($var, A::class)(); +$var = (function () { + return $this->foo; +})->bindTo($var, A::class)(); + +================================================================================ +`; + +exports[`lookups.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +bar; +($var->bar); + +$var->bar(); +($var->bar()); + +$var::bar(); +($var::bar()); + +$var = $var->bar; +$var = ($var->bar); +$var = $var->bar->foo; +$var = ($var->bar)->foo; +$var = ($var->bar->foo); +$var = (($var->bar)->foo); + +$var = $var::foo(); +$var = ($var::foo()); +$var = $var::foo()::bar(); +$var = ($var::foo())::bar(); +$var = ($var::foo()::bar()); +$var = (($var::foo())::bar()); + +$var = $var->bar(); +$var = ($var->bar()); +$var = $var->bar()->foo(); +$var = ($var->bar())->foo(); +$var = ($var->bar()->foo()); +$var = (($var->bar())->foo()); + +$var = ((object) ($var->bar())->foo()); +$var = (object) (($var->bar())->foo()); + +$var = $var[0]; +$var = $var[0][1]; +$var = ($var[0]); +$var = ($var[0][1]); +$var = $var[0]->foo; +$var = ($var[0])->foo; +$var = ($var[0][1])->foo; +$var = ($var[0])[1]->foo; +$var = (($var[0])[1])->foo; +$var = $var[0]::foo; +$var = ($var[0])::foo; +$var = ($var[0][1])::foo; +$var = ($var[0])[1]::foo; +$var = (($var[0])[1])::foo; +$var = $var[0]->foo(); +$var = ($var[0])->foo(); +$var = ($var[0][1])->foo(); +$var = ($var[0])[1]->foo(); +$var = (($var[0])[1])->foo(); +$var = $var[0]::foo(); +$var = ($var[0])::foo(); +$var = ($var[0][1])::foo(); +$var = ($var[0])[1]::foo(); +$var = (($var[0])[1])::foo(); + +$var = $var[0]->foo()->baz; +$var = ((($var[0])->foo())->baz); + +$var = (new Foo())->bar; +$var = (new Foo())::bar; +$var = (new Foo())->bar(); +$var = (new Foo())::bar(); +$var = (new Foo())[1]; + +$var = $var->bar()(); +$var = ($var->bar())(); +$var = ($var->bar()()); +$var = (($var->bar())()); + +$var = $var::bar()(); +$var = ($var::bar())(); +$var = ($var::bar()()); +$var = (($var::bar())()); + +$var = ($var)->bar; +$var = (($var)->bar); +$var = ($var)->bar(); +$var = (($var)->bar()); + +$var = (function () { + return $this->foo; +})->bindTo($var, A::class)(); +$var = (((function () { + return $this->foo; +})))->bindTo($var, A::class)(); + +=====================================output===================================== +bar; +$var->bar; + +$var->bar(); +$var->bar(); + +$var::bar(); +$var::bar(); + +$var = $var->bar; +$var = $var->bar; +$var = $var->bar->foo; +$var = $var->bar->foo; +$var = $var->bar->foo; +$var = $var->bar->foo; + +$var = $var::foo(); +$var = $var::foo(); +$var = $var::foo()::bar(); +$var = $var::foo()::bar(); +$var = $var::foo()::bar(); +$var = $var::foo()::bar(); + +$var = $var->bar(); +$var = $var->bar(); +$var = $var->bar()->foo(); +$var = $var->bar()->foo(); +$var = $var->bar()->foo(); +$var = $var->bar()->foo(); + +$var = ((object) $var->bar()->foo()); +$var = (object) $var->bar()->foo(); + +$var = $var[0]; +$var = $var[0][1]; +$var = $var[0]; +$var = $var[0][1]; +$var = $var[0]->foo; +$var = $var[0]->foo; +$var = $var[0][1]->foo; +$var = $var[0][1]->foo; +$var = $var[0][1]->foo; +$var = $var[0]::foo; +$var = $var[0]::foo; +$var = $var[0][1]::foo; +$var = $var[0][1]::foo; +$var = $var[0][1]::foo; +$var = $var[0]->foo(); +$var = $var[0]->foo(); +$var = $var[0][1]->foo(); +$var = $var[0][1]->foo(); +$var = $var[0][1]->foo(); +$var = $var[0]::foo(); +$var = $var[0]::foo(); +$var = $var[0][1]::foo(); +$var = $var[0][1]::foo(); +$var = $var[0][1]::foo(); + +$var = $var[0]->foo()->baz; +$var = $var[0]->foo()->baz; + +$var = new Foo()->bar; +$var = new Foo()::bar; +$var = new Foo()->bar(); +$var = new Foo()::bar(); +$var = new Foo()[1]; + +$var = $var->bar()(); +$var = $var->bar()(); +$var = $var->bar()(); +$var = $var->bar()(); + +$var = $var::bar()(); +$var = $var::bar()(); +$var = $var::bar()(); +$var = $var::bar()(); + +$var = $var->bar; +$var = $var->bar; +$var = $var->bar(); +$var = $var->bar(); + +$var = (function () { + return $this->foo; +})->bindTo($var, A::class)(); +$var = (function () { + return $this->foo; +})->bindTo($var, A::class)(); + +================================================================================ +`; + +exports[`namespace.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +c()); + +=====================================output===================================== +c(); + +================================================================================ +`; + +exports[`namespace.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +c()); + +=====================================output===================================== +c(); + +================================================================================ +`; + +exports[`new.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== + 'bar') +)) +?> + 'bar') +)))) +?> + 'bar'] +)) +?> +c(); +new Foo->prop; +new Foo->method(); +new Foo->$var; +$var = (new class { + public function log($msg) + { + echo $msg; + } +}); +$var = (new foo())->bar(); +$var = (new foo())->bar()->foo(); +$var = ((new foo())->bar())->foo(); +$var = (((new foo())->bar())->foo()); +$var = (((new foo())->bar())->foo())[0]; +$var = ((((new foo())->bar())->foo())[0])[1]; +$var = (((new foo())->bar())->foo())->baz(); +$var = (new $foo())->bar; +$var = (new $bar->y)->x; +new SortOfLongClassName()->withALongMethodName()->andAnother()->toPushItPast80Chars(); +$asdf = +new SortOfLongClassName()->withALongMethodName() + ->andAnother()->toPushItPast80Chars(); + +$var = (new foo)[0]; +$var = (new foo)[0]['string']; + +$var = (new Foo)::foo; +$var = (new Foo)::$foo; + +$var = new $a->b; +$var = new $a->b(); +$var = (new $a)->b(); +$var = ((new $a)->b()); + +(new class {})->foo; +(new class {})->foo(); +(new class {})(); +(new class {})['foo']; + +$var = (new class {})->foo; + +=====================================output===================================== + "bar"], +); ?> + "bar", +]); ?> + "bar", +]); ?> +c(); +(new Foo())->prop; +(new Foo())->method(); +(new Foo())->$var; +$var = new class { + public function log($msg) + { + echo $msg; + } +}; +$var = (new foo())->bar(); +$var = (new foo())->bar()->foo(); +$var = (new foo())->bar()->foo(); +$var = (new foo())->bar()->foo(); +$var = (new foo())->bar()->foo()[0]; +$var = (new foo())->bar()->foo()[0][1]; +$var = (new foo())->bar()->foo()->baz(); +$var = (new $foo())->bar; +$var = (new $bar->y())->x; +(new SortOfLongClassName()) + ->withALongMethodName() + ->andAnother() + ->toPushItPast80Chars(); +$asdf = (new SortOfLongClassName()) + ->withALongMethodName() + ->andAnother() + ->toPushItPast80Chars(); +$var = (new foo())[0]; +$var = (new foo())[0]["string"]; +$var = (new Foo())::foo; +$var = (new Foo())::$foo; +$var = new $a->b(); +$var = new $a->b(); +$var = (new $a())->b(); +$var = (new $a())->b(); +(new class {})->foo; +(new class {})->foo(); +(new class {})(); +(new class {})["foo"]; +$var = (new class {})->foo; + + +================================================================================ +`; + +exports[`new.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + 'bar') +)) +?> + 'bar') +)))) +?> + 'bar'] +)) +?> +c(); +new Foo->prop; +new Foo->method(); +new Foo->$var; +$var = (new class { + public function log($msg) + { + echo $msg; + } +}); +$var = (new foo())->bar(); +$var = (new foo())->bar()->foo(); +$var = ((new foo())->bar())->foo(); +$var = (((new foo())->bar())->foo()); +$var = (((new foo())->bar())->foo())[0]; +$var = ((((new foo())->bar())->foo())[0])[1]; +$var = (((new foo())->bar())->foo())->baz(); +$var = (new $foo())->bar; +$var = (new $bar->y)->x; +new SortOfLongClassName()->withALongMethodName()->andAnother()->toPushItPast80Chars(); +$asdf = +new SortOfLongClassName()->withALongMethodName() + ->andAnother()->toPushItPast80Chars(); + +$var = (new foo)[0]; +$var = (new foo)[0]['string']; + +$var = (new Foo)::foo; +$var = (new Foo)::$foo; + +$var = new $a->b; +$var = new $a->b(); +$var = (new $a)->b(); +$var = ((new $a)->b()); + +(new class {})->foo; +(new class {})->foo(); +(new class {})(); +(new class {})['foo']; + +$var = (new class {})->foo; + +=====================================output===================================== + "bar"], +); ?> + "bar", +]); ?> + "bar", +]); ?> +c(); +new Foo()->prop; +new Foo()->method(); +new Foo()->$var; +$var = new class { + public function log($msg) + { + echo $msg; + } +}; +$var = new foo()->bar(); +$var = new foo()->bar()->foo(); +$var = new foo()->bar()->foo(); +$var = new foo()->bar()->foo(); +$var = new foo()->bar()->foo()[0]; +$var = new foo()->bar()->foo()[0][1]; +$var = new foo()->bar()->foo()->baz(); +$var = new $foo()->bar; +$var = new $bar->y()->x; +new SortOfLongClassName() + ->withALongMethodName() + ->andAnother() + ->toPushItPast80Chars(); +$asdf = new SortOfLongClassName() + ->withALongMethodName() + ->andAnother() + ->toPushItPast80Chars(); +$var = new foo()[0]; +$var = new foo()[0]["string"]; +$var = new Foo()::foo; +$var = new Foo()::$foo; +$var = new $a->b(); +$var = new $a->b(); +$var = new $a()->b(); +$var = new $a()->b(); +new class {}->foo; +new class {}->foo(); +new class {}(); +new class {}["foo"]; +$var = new class {}->foo; + + +================================================================================ +`; + +exports[`parens.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +b++; +($a->b++); +++$a->b; +(++$a)->b; + +($a->b++)->call(); +($a->b++)[1]; +($var++)(); +$var = call($var->_uuidCounter++); + +(--$a->b)->call(); +(--$a->b)[1]; +(--$var)(); +$var = call(--$var->_uuidCounter); + +=====================================output===================================== +b++; +$a->b++; +++$a->b; +(++$a)->b; + +($a->b++)->call(); +($a->b++)[1]; +($var++)(); +$var = call($var->_uuidCounter++); + +(--$a->b)->call(); +(--$a->b)[1]; +(--$var)(); +$var = call(--$var->_uuidCounter); + +================================================================================ +`; + +exports[`pre-post.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +b++; +($a->b++); +++$a->b; +(++$a)->b; + +($a->b++)->call(); +($a->b++)[1]; +($var++)(); +$var = call($var->_uuidCounter++); + +(--$a->b)->call(); +(--$a->b)[1]; +(--$var)(); +$var = call(--$var->_uuidCounter); + +=====================================output===================================== +b++; +$a->b++; +++$a->b; +(++$a)->b; + +($a->b++)->call(); +($a->b++)[1]; +($var++)(); +$var = call($var->_uuidCounter++); + +(--$a->b)->call(); +(--$a->b)[1]; +(--$var)(); +$var = call(--$var->_uuidCounter); + +================================================================================ +`; + +exports[`print.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +" : print "$string_message\\n"; +$var = $var ? (print "$string_message
") : (print "$string_message\\n"); +$var = $var ? (print ("$string_message
")) : (print ("$string_message\\n")); + +print 1 . print(2) + 3; // 511 +print 1 . (print(2)) + 3; // 214 + +print ($var || $var) && $var; +print (($var || $var) && $var); + +=====================================output===================================== +" : print "$string_message\\n"; +$var = $var ? print "$string_message
" : print "$string_message\\n"; +$var = $var ? print "$string_message
" : print "$string_message\\n"; + +print 1 . (print 2 + 3); // 511 +print 1 . (print 2) + 3; // 214 + +print ($var || $var) && $var; +print ($var || $var) && $var; + +================================================================================ +`; + +exports[`print.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +" : print "$string_message\\n"; +$var = $var ? (print "$string_message
") : (print "$string_message\\n"); +$var = $var ? (print ("$string_message
")) : (print ("$string_message\\n")); + +print 1 . print(2) + 3; // 511 +print 1 . (print(2)) + 3; // 214 + +print ($var || $var) && $var; +print (($var || $var) && $var); + +=====================================output===================================== +" : print "$string_message\\n"; +$var = $var ? print "$string_message
" : print "$string_message\\n"; +$var = $var ? print "$string_message
" : print "$string_message\\n"; + +print 1 . (print 2 + 3); // 511 +print 1 . (print 2) + 3; // 214 + +print ($var || $var) && $var; +print ($var || $var) && $var; + +================================================================================ +`; + +exports[`program.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +c()); + +=====================================output===================================== +c(); + +================================================================================ +`; + +exports[`program.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +c()); + +=====================================output===================================== +c(); + +================================================================================ +`; + +exports[`retif.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +prop; +($var ? $var : $var)->prop(); +($var ? $var : $var)[1]; +($var ? $var : $var)->d(); +($var ? $var : $var)->d()->e(); +($var ? $var : $var)->d()->e()->f(); +($var + ? $var->responseBody($var->currentUser) + : $var->responseBody($var->defaultUser)) +->map(); +($var + ? $var.responseBody($var->currentUser) + : $var.responseBody($var->defaultUser)) +->map()->filter(); +($var + ? $var.responseBody($var->currentUser) + : $var.responseBody($var)) +->map(); +$var[$var + ? $var->responseBody($var->currentUser) + : $var->responseBody($var)] +->map(); + +$var = $var . $var ? "()" : ""; +$var = ($var . $var) ? "()" : ""; +$var = $var . ($var ? "()" : ""); +$var = +($var ? 1 : 2); +$var = +(+$var ? 1 : 2); +$var = +($var++ ? 1 : 2); +$var = ((true ? 'true' : false) ? (true ? 'true' : false) : (true ? 'true' : false)); +$var = $var ? $var1 ? 1 : 2 : $var2 ? 3 : 4; + +$var = $var ?: $var ?: $var ?: 'string'; +$var = ($var ?: $var) ?: $var ?: 'string'; +$var = (($var ?: $var) ?: $var) ?: 'string'; +$var = ((($var ?: $var) ?: $var) ?: 'string'); +$var = ($var ?: ($var ?: $var)) ?: 'string'; +$var = ($var ?: (($var ?: $var) ?: 'string')); +$var = ($var ?: ($var ?: ($var ?: 'string'))); + +$var = ($foo and $bar) ? true : false; +$var = ($foo or $bar) ? true : false; +$var = ($foo xor $bar) ? true : false; +$var = ($foo = "bar") ? true : false; + +$var = ($foo && $bar) ? true : false; +$var = ($foo || $bar) ? true : false; +$var = (!$foo) ? true : false; +$var = (new $foo) ? true : false; + +=====================================output===================================== +prop; +($var ? $var : $var)->prop(); +($var ? $var : $var)[1]; +($var ? $var : $var)->d(); +($var ? $var : $var)->d()->e(); +($var ? $var : $var)->d()->e()->f(); +($var + ? $var->responseBody($var->currentUser) + : $var->responseBody($var->defaultUser) +)->map(); +($var + ? $var . responseBody($var->currentUser) + : $var . responseBody($var->defaultUser) +) + ->map() + ->filter(); +($var + ? $var . responseBody($var->currentUser) + : $var . responseBody($var) +)->map(); +$var[ + $var ? $var->responseBody($var->currentUser) : $var->responseBody($var) +]->map(); + +$var = $var . $var ? "()" : ""; +$var = $var . $var ? "()" : ""; +$var = $var . ($var ? "()" : ""); +$var = +($var ? 1 : 2); +$var = +(+$var ? 1 : 2); +$var = +($var++ ? 1 : 2); +$var = (true + ? "true" + : false) + ? (true + ? "true" + : false) + : (true + ? "true" + : false); +$var = ($var ? ($var1 ? 1 : 2) : $var2) ? 3 : 4; + +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: ($var ?: $var) ?: "string"; +$var = $var ?: ($var ?: $var ?: "string"); +$var = $var ?: ($var ?: ($var ?: "string")); + +$var = ($foo and $bar) ? true : false; +$var = ($foo or $bar) ? true : false; +$var = ($foo xor $bar) ? true : false; +$var = ($foo = "bar") ? true : false; + +$var = $foo && $bar ? true : false; +$var = $foo || $bar ? true : false; +$var = !$foo ? true : false; +$var = new $foo() ? true : false; + +================================================================================ +`; + +exports[`retif.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +prop; +($var ? $var : $var)->prop(); +($var ? $var : $var)[1]; +($var ? $var : $var)->d(); +($var ? $var : $var)->d()->e(); +($var ? $var : $var)->d()->e()->f(); +($var + ? $var->responseBody($var->currentUser) + : $var->responseBody($var->defaultUser)) +->map(); +($var + ? $var.responseBody($var->currentUser) + : $var.responseBody($var->defaultUser)) +->map()->filter(); +($var + ? $var.responseBody($var->currentUser) + : $var.responseBody($var)) +->map(); +$var[$var + ? $var->responseBody($var->currentUser) + : $var->responseBody($var)] +->map(); + +$var = $var . $var ? "()" : ""; +$var = ($var . $var) ? "()" : ""; +$var = $var . ($var ? "()" : ""); +$var = +($var ? 1 : 2); +$var = +(+$var ? 1 : 2); +$var = +($var++ ? 1 : 2); +$var = ((true ? 'true' : false) ? (true ? 'true' : false) : (true ? 'true' : false)); +$var = $var ? $var1 ? 1 : 2 : $var2 ? 3 : 4; + +$var = $var ?: $var ?: $var ?: 'string'; +$var = ($var ?: $var) ?: $var ?: 'string'; +$var = (($var ?: $var) ?: $var) ?: 'string'; +$var = ((($var ?: $var) ?: $var) ?: 'string'); +$var = ($var ?: ($var ?: $var)) ?: 'string'; +$var = ($var ?: (($var ?: $var) ?: 'string')); +$var = ($var ?: ($var ?: ($var ?: 'string'))); + +$var = ($foo and $bar) ? true : false; +$var = ($foo or $bar) ? true : false; +$var = ($foo xor $bar) ? true : false; +$var = ($foo = "bar") ? true : false; + +$var = ($foo && $bar) ? true : false; +$var = ($foo || $bar) ? true : false; +$var = (!$foo) ? true : false; +$var = (new $foo) ? true : false; + +=====================================output===================================== +prop; +($var ? $var : $var)->prop(); +($var ? $var : $var)[1]; +($var ? $var : $var)->d(); +($var ? $var : $var)->d()->e(); +($var ? $var : $var)->d()->e()->f(); +($var + ? $var->responseBody($var->currentUser) + : $var->responseBody($var->defaultUser) +)->map(); +($var + ? $var . responseBody($var->currentUser) + : $var . responseBody($var->defaultUser) +) + ->map() + ->filter(); +($var + ? $var . responseBody($var->currentUser) + : $var . responseBody($var) +)->map(); +$var[ + $var ? $var->responseBody($var->currentUser) : $var->responseBody($var) +]->map(); + +$var = $var . $var ? "()" : ""; +$var = $var . $var ? "()" : ""; +$var = $var . ($var ? "()" : ""); +$var = +($var ? 1 : 2); +$var = +(+$var ? 1 : 2); +$var = +($var++ ? 1 : 2); +$var = (true + ? "true" + : false) + ? (true + ? "true" + : false) + : (true + ? "true" + : false); +$var = ($var ? ($var1 ? 1 : 2) : $var2) ? 3 : 4; + +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: $var ?: $var ?: "string"; +$var = $var ?: ($var ?: $var) ?: "string"; +$var = $var ?: ($var ?: $var ?: "string"); +$var = $var ?: ($var ?: ($var ?: "string")); + +$var = ($foo and $bar) ? true : false; +$var = ($foo or $bar) ? true : false; +$var = ($foo xor $bar) ? true : false; +$var = ($foo = "bar") ? true : false; + +$var = $foo && $bar ? true : false; +$var = $foo || $bar ? true : false; +$var = !$foo ? true : false; +$var = new $foo() ? true : false; + +================================================================================ +`; + +exports[`return.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +customer->paymentService ?? null); + + +=====================================output===================================== +customer->paymentService ?? null; + +================================================================================ +`; + +exports[`return.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +customer->paymentService ?? null); + + +=====================================output===================================== +customer->paymentService ?? null; + +================================================================================ +`; + +exports[`silent.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +stream, $message) || ($newline && (false === @fwrite($this->stream, PHP_EOL)))) { + // should never happen + throw new RuntimeException('Unable to write output.'); +} + +try { + if (($fp = @fopen($filename, "r")) == false) { + throw new Exception; + } else { + do_file_stuff(); + } +} catch (Exception $e) { + handle_exception(); +} + +@list($width, $height) = getimagesize($file); +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @(list($width, $height) = getimagesize($file)); + +@$var += 10; +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @($var += 10); + +echo @(1 / 0); + +@$i / 0; +@($i / 0); + +=====================================output===================================== +stream, $message) || + ($newline && false === @fwrite($this->stream, PHP_EOL)) +) { + // should never happen + throw new RuntimeException("Unable to write output."); +} + +try { + if (($fp = @fopen($filename, "r")) == false) { + throw new Exception(); + } else { + do_file_stuff(); + } +} catch (Exception $e) { + handle_exception(); +} + +@[$width, $height] = getimagesize($file); +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @(list($width, $height) = getimagesize($file)); + +@$var += 10; +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @($var += 10); + +echo @(1 / 0); + +@$i / 0; +@($i / 0); + +================================================================================ +`; + +exports[`silent.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +stream, $message) || ($newline && (false === @fwrite($this->stream, PHP_EOL)))) { + // should never happen + throw new RuntimeException('Unable to write output.'); +} + +try { + if (($fp = @fopen($filename, "r")) == false) { + throw new Exception; + } else { + do_file_stuff(); + } +} catch (Exception $e) { + handle_exception(); +} + +@list($width, $height) = getimagesize($file); +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @(list($width, $height) = getimagesize($file)); + +@$var += 10; +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @($var += 10); + +echo @(1 / 0); + +@$i / 0; +@($i / 0); + +=====================================output===================================== +stream, $message) || + ($newline && false === @fwrite($this->stream, PHP_EOL)) +) { + // should never happen + throw new RuntimeException("Unable to write output."); +} + +try { + if (($fp = @fopen($filename, "r")) == false) { + throw new Exception(); + } else { + do_file_stuff(); + } +} catch (Exception $e) { + handle_exception(); +} + +@[$width, $height] = getimagesize($file); +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @(list($width, $height) = getimagesize($file)); + +@$var += 10; +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @($var += 10); + +echo @(1 / 0); + +@$i / 0; +@($i / 0); + +================================================================================ +`; + +exports[`throw.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== + throw new \\RuntimeException('In arrow function'); +$value = $a ? $a : throw new \\InvalidArgumentException('In ternary'); +=====================================output===================================== + throw new \\RuntimeException("In arrow function"); +$value = $a ? $a : throw new \\InvalidArgumentException("In ternary"); + +================================================================================ +`; + +exports[`throw.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + throw new \\RuntimeException('In arrow function'); +$value = $a ? $a : throw new \\InvalidArgumentException('In ternary'); +=====================================output===================================== + throw new \\RuntimeException("In arrow function"); +$value = $a ? $a : throw new \\InvalidArgumentException("In ternary"); + +================================================================================ +`; + +exports[`unary.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +bar); + +$var = +$var || +$var; +$var = (+$var) || (+$var); +$var = ((+$var) || (+$var)); + +$var = -(+($var)); + +$var = ~(+$var); + +$var = ~$var += 1; +$var = ~($var += 1); + +(+$a->b)->call(); +(+$a->b)[1]; +(+$var)(); +$var = call(+$var->_uuidCounter); + +if (!$token = $this->getToken()) {} +if (!($token = $this->getToken())) {} + +=====================================output===================================== +bar; + +$var = +$var || +$var; +$var = +$var || +$var; +$var = +$var || +$var; + +$var = -+$var; + +$var = ~+$var; + +$var = ~($var += 1); +$var = ~($var += 1); + +(+$a->b)->call(); +(+$a->b)[1]; +(+$var)(); +$var = call(+$var->_uuidCounter); + +if (!($token = $this->getToken())) { +} +if (!($token = $this->getToken())) { +} + +================================================================================ +`; + +exports[`unary.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +bar); + +$var = +$var || +$var; +$var = (+$var) || (+$var); +$var = ((+$var) || (+$var)); + +$var = -(+($var)); + +$var = ~(+$var); + +$var = ~$var += 1; +$var = ~($var += 1); + +(+$a->b)->call(); +(+$a->b)[1]; +(+$var)(); +$var = call(+$var->_uuidCounter); + +if (!$token = $this->getToken()) {} +if (!($token = $this->getToken())) {} + +=====================================output===================================== +bar; + +$var = +$var || +$var; +$var = +$var || +$var; +$var = +$var || +$var; + +$var = -+$var; + +$var = ~+$var; + +$var = ~($var += 1); +$var = ~($var += 1); + +(+$a->b)->call(); +(+$a->b)[1]; +(+$var)(); +$var = call(+$var->_uuidCounter); + +if (!($token = $this->getToken())) { +} +if (!($token = $this->getToken())) { +} + +================================================================================ +`; + +exports[`unnecessary.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.3" +printWidth: 80 + | printWidth +=====================================input====================================== +b; + !(yield $var); + yield (yield $var); + } + + $var = yield; + $var = yield $var; + $var += yield $var; + $var = (yield $var); + $var += (yield $var); + $var = yield $key => $var; + $var = (yield $key => $var); + $var = !yield $var; + $var = !(yield $var); + $var = yield (yield $var); + $var = yield 1 ? 1 : 1; + $var = (yield 1) ? 1 : 1; + $var = yield 1 ? yield 1 : yield 1; + $var = (yield 1) ? (yield 1) : (yield 1); + $var = yield $var->b; + $var = (yield $var)->b; + $var = yield $var->b(); + $var = (yield $var)->b(); + $var = yield $var[1]; + $var = (yield $var)[1]; + + call(yield $var); + + return yield from nine_ten(); + + foreach($SubTrav as $SubItem) yield $SubItem; +} + +=====================================output===================================== +b; + !(yield $var); + yield (yield $var); + } + + $var = yield; + $var = (yield $var); + $var += (yield $var); + $var = (yield $var); + $var += (yield $var); + $var = (yield $key => $var); + $var = (yield $key => $var); + $var = !(yield $var); + $var = !(yield $var); + $var = (yield (yield $var)); + $var = (yield 1 ? 1 : 1); + $var = (yield 1) ? 1 : 1; + $var = (yield 1 ? yield 1 : yield 1); + $var = (yield 1) ? yield 1 : yield 1; + $var = (yield $var->b); + $var = (yield $var)->b; + $var = (yield $var->b()); + $var = (yield $var)->b(); + $var = (yield $var[1]); + $var = (yield $var)[1]; + + call(yield $var); + + return yield from nine_ten(); + + foreach ($SubTrav as $SubItem) { + yield $SubItem; + } +} + +================================================================================ +`; + +exports[`yield.php 2`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +b; + !(yield $var); + yield (yield $var); + } + + $var = yield; + $var = yield $var; + $var += yield $var; + $var = (yield $var); + $var += (yield $var); + $var = yield $key => $var; + $var = (yield $key => $var); + $var = !yield $var; + $var = !(yield $var); + $var = yield (yield $var); + $var = yield 1 ? 1 : 1; + $var = (yield 1) ? 1 : 1; + $var = yield 1 ? yield 1 : yield 1; + $var = (yield 1) ? (yield 1) : (yield 1); + $var = yield $var->b; + $var = (yield $var)->b; + $var = yield $var->b(); + $var = (yield $var)->b(); + $var = yield $var[1]; + $var = (yield $var)[1]; + + call(yield $var); + + return yield from nine_ten(); + + foreach($SubTrav as $SubItem) yield $SubItem; +} + +=====================================output===================================== +b; + !(yield $var); + yield (yield $var); + } + + $var = yield; + $var = (yield $var); + $var += (yield $var); + $var = (yield $var); + $var += (yield $var); + $var = (yield $key => $var); + $var = (yield $key => $var); + $var = !(yield $var); + $var = !(yield $var); + $var = (yield (yield $var)); + $var = (yield 1 ? 1 : 1); + $var = (yield 1) ? 1 : 1; + $var = (yield 1 ? yield 1 : yield 1); + $var = (yield 1) ? yield 1 : yield 1; + $var = (yield $var->b); + $var = (yield $var)->b; + $var = (yield $var->b()); + $var = (yield $var)->b(); + $var = (yield $var[1]); + $var = (yield $var)[1]; + + call(yield $var); + + return yield from nine_ten(); + + foreach ($SubTrav as $SubItem) { + yield $SubItem; + } +} + +================================================================================ +`; diff --git a/tests/parens/jsfmt.spec.js b/tests/parens/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/parens/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/parens/jsfmt.spec.mjs b/tests/parens/jsfmt.spec.mjs new file mode 100644 index 000000000..354bc7ea5 --- /dev/null +++ b/tests/parens/jsfmt.spec.mjs @@ -0,0 +1,2 @@ +run_spec(import.meta, ["php"], {phpVersion:"8.3"}); +run_spec(import.meta, ["php"]); diff --git a/tests/parens/new.php b/tests/parens/new.php index 12f2edef1..290cfe91c 100644 --- a/tests/parens/new.php +++ b/tests/parens/new.php @@ -30,6 +30,9 @@ $var = new Foo(); $var = (new Foo()); $var = (new Foo())->c(); +new Foo->prop; +new Foo->method(); +new Foo->$var; $var = (new class { public function log($msg) { @@ -45,9 +48,17 @@ public function log($msg) $var = (((new foo())->bar())->foo())->baz(); $var = (new $foo())->bar; $var = (new $bar->y)->x; +new SortOfLongClassName()->withALongMethodName()->andAnother()->toPushItPast80Chars(); +$asdf = +new SortOfLongClassName()->withALongMethodName() + ->andAnother()->toPushItPast80Chars(); + $var = (new foo)[0]; $var = (new foo)[0]['string']; +$var = (new Foo)::foo; +$var = (new Foo)::$foo; + $var = new $a->b; $var = new $a->b(); $var = (new $a)->b(); diff --git a/tests/preserve_line/__snapshots__/jsfmt.spec.js.snap b/tests/preserve_line/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/preserve_line/__snapshots__/jsfmt.spec.js.snap rename to tests/preserve_line/__snapshots__/jsfmt.spec.mjs.snap index 45c50c6ef..5a67bb15a 100644 --- a/tests/preserve_line/__snapshots__/jsfmt.spec.js.snap +++ b/tests/preserve_line/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`argument-list.php 1`] = ` ====================================options===================================== @@ -209,14 +209,14 @@ longArgNamesWithComments( $longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong2, /* Hello World */ - $longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong3 + $longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglong3, ); shortArgNames( $short, $short2, - $short3 + $short3, ); comments( @@ -235,7 +235,7 @@ comments( /* Long Long Long Long Long Comment */ // Long Long Long Long Long Comment - $short3 + $short3, // More comments ); @@ -244,7 +244,7 @@ differentArgTypes( return true; }, - isTrue ? doSomething() : 12 + isTrue ? doSomething() : 12, ); moreArgTypes( @@ -261,31 +261,31 @@ moreArgTypes( // Hello world again ["name" => "Hello World", "age" => 34], - $oneThing + $anotherThing + $oneThing + $anotherThing, // Comment - ) + ), ); evenMoreArgTypes( doSomething( ["name" => "Hello World", "age" => 34], - true + true, ), 14, 1 + 2 - 90 / 80, - !98 * 60 - 90 + !98 * 60 - 90, ); $foo->apply( null, // Array here - [1, 2] + [1, 2], ); $bar->on( @@ -293,7 +293,7 @@ $bar->on( function () { doStuff(); - } + }, ); foo( @@ -302,7 +302,7 @@ foo( /* function here */ function () { return true; - } + }, ); $doSomething->apply( @@ -310,13 +310,13 @@ $doSomething->apply( // Comment - ["Hello world 1", "Hello world 2", "Hello world 3"] + ["Hello world 1", "Hello world 2", "Hello world 3"], ); doAnotherThing( "node", - [$solution_type, $time_frame] + [$solution_type, $time_frame], ); $stuff->doThing( @@ -327,7 +327,7 @@ $stuff->doThing( "accept" => function ($node) { doSomething($node); }, - ] + ], ); doThing( @@ -339,7 +339,7 @@ doThing( "decline" => function ($creditCard) { takeMoney($creditCard); }, - ] + ], ); func( @@ -347,7 +347,7 @@ func( thing(); }, - ["yes" => true, "no" => 5] + ["yes" => true, "no" => 5], ); doSomething( @@ -358,7 +358,7 @@ doSomething( /* Comment */ // This is important - [$helloWorld, $someImportantStuff] + [$helloWorld, $someImportantStuff], ); ================================================================================ diff --git a/tests/preserve_line/jsfmt.spec.js b/tests/preserve_line/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/preserve_line/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/preserve_line/jsfmt.spec.mjs b/tests/preserve_line/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/preserve_line/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/print/__snapshots__/jsfmt.spec.js.snap b/tests/print/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/print/__snapshots__/jsfmt.spec.js.snap rename to tests/print/__snapshots__/jsfmt.spec.mjs.snap index 2aa77bc70..922788033 100644 --- a/tests/print/__snapshots__/jsfmt.spec.js.snap +++ b/tests/print/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`print.php 1`] = ` ====================================options===================================== @@ -229,10 +229,10 @@ print esc_html( __( "Hi there. Your recent order on %s has been completed. " . "Your order details are shown below for your reference:", - "woocommerce" + "woocommerce", ), - get_option("blogname") - ) + get_option("blogname"), + ), ); print <<veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty; -print $var - ->call() - ->call() - ->call(); +print $var->call()->call()->call(); print $var ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall() ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall() @@ -321,7 +318,7 @@ print new Foo(); print new Foo( $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, - $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable + $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, ); print new class {}; print new class { diff --git a/tests/print/jsfmt.spec.js b/tests/print/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/print/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/print/jsfmt.spec.mjs b/tests/print/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/print/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/program/__snapshots__/jsfmt.spec.js.snap b/tests/program/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/program/__snapshots__/jsfmt.spec.js.snap rename to tests/program/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/program/jsfmt.spec.js b/tests/program/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/program/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/program/jsfmt.spec.mjs b/tests/program/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/program/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/property/__snapshots__/jsfmt.spec.js.snap b/tests/property/__snapshots__/jsfmt.spec.mjs.snap similarity index 96% rename from tests/property/__snapshots__/jsfmt.spec.js.snap rename to tests/property/__snapshots__/jsfmt.spec.mjs.snap index f477fcd88..2c29f3b9e 100644 --- a/tests/property/__snapshots__/jsfmt.spec.js.snap +++ b/tests/property/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`property.php 1`] = ` ====================================options===================================== @@ -62,8 +62,8 @@ class Foo "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString " . "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; public $var2 = << "very_very_very_long_other_value", ]; public $var8 = <<<'EOD' -hello world -EOD; + hello world + EOD; public $var9 = 11111111111111111111111111111111111111111111111111111111111111111111; public $var10 = "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; public $var11 = true; diff --git a/tests/property/jsfmt.spec.js b/tests/property/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/property/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/property/jsfmt.spec.mjs b/tests/property/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/property/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/propertylookup/__snapshots__/jsfmt.spec.js.snap b/tests/propertylookup/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/propertylookup/__snapshots__/jsfmt.spec.js.snap rename to tests/propertylookup/__snapshots__/jsfmt.spec.mjs.snap index e0378115a..bbd1aa97f 100644 --- a/tests/propertylookup/__snapshots__/jsfmt.spec.js.snap +++ b/tests/propertylookup/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`offsets.php 1`] = ` ====================================options===================================== @@ -115,7 +115,7 @@ $this->loooooooooooong->loooooooooooong->loooooooooooong->lookup = $this->loooooooooooong->loooooooooooong->loooooooooooong->lookup = $other->looooooooooong->stuff; $this->loooooooooooong->lookup = (int) $this->getRequest()->getParam( - "instance-resource-id" + "instance-resource-id", ); $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty; diff --git a/tests/propertylookup/jsfmt.spec.js b/tests/propertylookup/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/propertylookup/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/propertylookup/jsfmt.spec.mjs b/tests/propertylookup/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/propertylookup/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/propertystatement/__snapshots__/jsfmt.spec.js.snap b/tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/propertystatement/__snapshots__/jsfmt.spec.js.snap rename to tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/propertystatement/jsfmt.spec.js b/tests/propertystatement/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/propertystatement/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/propertystatement/jsfmt.spec.mjs b/tests/propertystatement/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/propertystatement/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/require-pragma/__snapshots__/jsfmt.spec.js.snap b/tests/require-pragma/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/require-pragma/__snapshots__/jsfmt.spec.js.snap rename to tests/require-pragma/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/require-pragma/jsfmt.spec.js b/tests/require-pragma/jsfmt.spec.js deleted file mode 100644 index cbd3dbfe7..000000000 --- a/tests/require-pragma/jsfmt.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -run_spec(__dirname, ["php"], { requirePragma: true, endOfLine: "cr" }); -run_spec(__dirname, ["php"], { requirePragma: true, endOfLine: "crlf" }); -run_spec(__dirname, ["php"], { requirePragma: true, endOfLine: "lf" }); diff --git a/tests/require-pragma/jsfmt.spec.mjs b/tests/require-pragma/jsfmt.spec.mjs new file mode 100644 index 000000000..78361cfff --- /dev/null +++ b/tests/require-pragma/jsfmt.spec.mjs @@ -0,0 +1,3 @@ +run_spec(import.meta, ["php"], { requirePragma: true, endOfLine: "cr" }); +run_spec(import.meta, ["php"], { requirePragma: true, endOfLine: "crlf" }); +run_spec(import.meta, ["php"], { requirePragma: true, endOfLine: "lf" }); diff --git a/tests/retif/__snapshots__/jsfmt.spec.js.snap b/tests/retif/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/retif/__snapshots__/jsfmt.spec.js.snap rename to tests/retif/__snapshots__/jsfmt.spec.mjs.snap index b372be8d0..49603a8d0 100644 --- a/tests/retif/__snapshots__/jsfmt.spec.js.snap +++ b/tests/retif/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`retif.php 1`] = ` ====================================options===================================== @@ -259,7 +259,7 @@ $test = bar( $someOtherReallyReallyLongVariable, $someOtherReallyReallyLongVariable, - $someOtherReallyReallyLongVariable + $someOtherReallyReallyLongVariable, ); $test = $testReallyReallyReallyReallyReallyReallyLong >= 1 ?: @@ -445,7 +445,7 @@ call( function () { return 1; }, - $var ? 1 : 2 + $var ? 1 : 2, ); call( @@ -454,7 +454,7 @@ call( }, $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable - : $someOtherReallyReallyLongVariable + : $someOtherReallyReallyLongVariable, ); call( @@ -464,7 +464,7 @@ call( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - "test" + "test", ); $var = [ @@ -553,13 +553,13 @@ call($var ?: $var ?: $var ?: "string"); call( $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable - : $someOtherReallyReallyLongVariable + : $someOtherReallyReallyLongVariable, ); call( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - "string" + "string", ); exit($var ? "string" : "other-string"); @@ -636,15 +636,11 @@ $callback = $var = $delay instanceof DateTimeInterface ? $delay->getTimestamp() - : Carbon::now() - ->addSeconds($delay) - ->getTimestamp(); + : Carbon::now()->addSeconds($delay)->getTimestamp(); return $delay instanceof DateTimeInterface ? $delay->getTimestamp() - : Carbon::now() - ->addSeconds($delay) - ->getTimestamp(); + : Carbon::now()->addSeconds($delay)->getTimestamp(); $var = true ? 'string diff --git a/tests/retif/jsfmt.spec.js b/tests/retif/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/retif/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/retif/jsfmt.spec.mjs b/tests/retif/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/retif/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/return/__snapshots__/jsfmt.spec.js.snap b/tests/return/__snapshots__/jsfmt.spec.mjs.snap similarity index 97% rename from tests/return/__snapshots__/jsfmt.spec.js.snap rename to tests/return/__snapshots__/jsfmt.spec.mjs.snap index ac27d0637..45146d195 100644 --- a/tests/return/__snapshots__/jsfmt.spec.js.snap +++ b/tests/return/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`return.php 1`] = ` ====================================options===================================== @@ -319,30 +319,10 @@ return (function () {})(); return call(); return $a->b->c->d->e->f; -return $a - ->b() - ->c() - ->d() - ->e() - ->f(); -return call() - ->b() - ->c() - ->d() - ->e() - ->f(); -return $a - ::b() - ::c() - ::d() - ::e() - ::f(); -return Foo::a() - ::b() - ::c() - ::d() - ::e() - ::f(); +return $a->b()->c()->d()->e()->f(); +return call()->b()->c()->d()->e()->f(); +return $a::b()::c()::d()::e()::f(); +return Foo::a()::b()::c()::d()::e()::f(); return " string @@ -445,7 +425,7 @@ return new Foo( 1024, $veryVeryVeryVeryVeryVeryLongLine, true, - false + false, ); return new Foo( $arg, @@ -453,7 +433,7 @@ return new Foo( 1024, $veryVeryVeryVeryVeryVeryLongLine, true, - false + false, ) . "string"; return "string" . new Foo( @@ -462,7 +442,7 @@ return "string" . 1024, $veryVeryVeryVeryVeryVeryLongLine, true, - false + false, ); return []; @@ -489,12 +469,12 @@ return $packages || [ ]; return $this->events->until( - new Events\\NotificationSending($notifiable, $notification, $channel) + new Events\\NotificationSending($notifiable, $notification, $channel), ) !== false; return false !== $this->events->until( - new Events\\NotificationSending($notifiable, $notification, $channel) + new Events\\NotificationSending($notifiable, $notification, $channel), ); return $this->getOptions()["endpoint"] ?? @@ -508,7 +488,7 @@ return $this->channels[$name] ?? with($this->resolve($name), function ($logger) use ($name) { return $this->channels[$name] = $this->tap( $name, - new Logger($logger, $this->app["events"]) + new Logger($logger, $this->app["events"]), ); }); @@ -550,7 +530,7 @@ return $this->guards[$name] ?? ($this->guards[$name] = $this->resolve($veryVeryVeryLongVariable)); return $this->guards[$veryVeryVeryLongVariable] ?? ($this->guards[$veryVeryVeryLongVariable] = $this->resolve( - $veryVeryVeryLongVariable + $veryVeryVeryLongVariable, )); return call_user_func($this->passwordValidator, $credentials) && diff --git a/tests/return/jsfmt.spec.js b/tests/return/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/return/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/return/jsfmt.spec.mjs b/tests/return/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/return/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/shebang/__snapshots__/jsfmt.spec.js.snap b/tests/shebang/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/shebang/__snapshots__/jsfmt.spec.js.snap rename to tests/shebang/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/shebang/jsfmt.spec.js b/tests/shebang/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/shebang/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/shebang/jsfmt.spec.mjs b/tests/shebang/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/shebang/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/silent/__snapshots__/jsfmt.spec.js.snap b/tests/silent/__snapshots__/jsfmt.spec.mjs.snap similarity index 94% rename from tests/silent/__snapshots__/jsfmt.spec.js.snap rename to tests/silent/__snapshots__/jsfmt.spec.mjs.snap index 77637a202..523f38a29 100644 --- a/tests/silent/__snapshots__/jsfmt.spec.js.snap +++ b/tests/silent/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`silent.php 1`] = ` ====================================options===================================== @@ -41,7 +41,7 @@ $variable = @foo() $variable = @foo( "VeryVeryVeryVeryVeryVeryLongArgument", "VeryVeryVeryVeryVeryVeryLongArgument", - "VeryVeryVeryVeryVeryVeryLongArgument" + "VeryVeryVeryVeryVeryVeryLongArgument", ); @trigger_error($error, E_USER_DEPRECATED); $value = @$cache[$key]; diff --git a/tests/silent/jsfmt.spec.js b/tests/silent/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/silent/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/silent/jsfmt.spec.mjs b/tests/silent/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/silent/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/single-quote-api/jsfmt.spec.mjs b/tests/single-quote-api/jsfmt.spec.mjs new file mode 100644 index 000000000..bb9db6fb7 --- /dev/null +++ b/tests/single-quote-api/jsfmt.spec.mjs @@ -0,0 +1,21 @@ +import prettier from "prettier/standalone"; +import * as prettierPluginPhp from "../../src/index.mjs"; + +// https://github.com/prettier/plugin-php/issues/2302 +test(`singleQuote option on format api`, async () => { + const input = ``; + const result = await prettier.format(input, { + plugins: [prettierPluginPhp], + singleQuote: true, + parser: "php", + }); + + const expected = ` +`; + + expect(result).toEqual(expected); +}); diff --git a/tests/statement/__snapshots__/jsfmt.spec.js.snap b/tests/statement/__snapshots__/jsfmt.spec.mjs.snap similarity index 94% rename from tests/statement/__snapshots__/jsfmt.spec.js.snap rename to tests/statement/__snapshots__/jsfmt.spec.mjs.snap index 363920cc0..c16c117e9 100644 --- a/tests/statement/__snapshots__/jsfmt.spec.js.snap +++ b/tests/statement/__snapshots__/jsfmt.spec.mjs.snap @@ -19,9 +19,7 @@ function foo() } class Test { - public function method() - { - } + public function method() {} } if (true) { echo "good"; diff --git a/tests/statement/jsfmt.spec.js b/tests/statement/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/statement/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/statement/jsfmt.spec.mjs b/tests/statement/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/statement/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/static/__snapshots__/jsfmt.spec.js.snap b/tests/static/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/static/__snapshots__/jsfmt.spec.js.snap rename to tests/static/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/static/jsfmt.spec.js b/tests/static/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/static/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/static/jsfmt.spec.mjs b/tests/static/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/static/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/staticlookup/__snapshots__/jsfmt.spec.js.snap b/tests/staticlookup/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/staticlookup/__snapshots__/jsfmt.spec.js.snap rename to tests/staticlookup/__snapshots__/jsfmt.spec.mjs.snap index b16fb744c..121cb5059 100644 --- a/tests/staticlookup/__snapshots__/jsfmt.spec.js.snap +++ b/tests/staticlookup/__snapshots__/jsfmt.spec.mjs.snap @@ -255,16 +255,12 @@ abstract class Singleton /** * Prevent direct object creation */ - final private function __construct() - { - } + final private function __construct() {} /** * Prevent object cloning */ - final private function __clone() - { - } + final private function __clone() {} /** * Returns new or existing Singleton instance @@ -348,7 +344,7 @@ $var = $var[0]::foo; $var = $var[0][1]::foo; $var = $var[0][1]::foo; $var = $var[0][1]::foo; -$var = (new Foo())::bar; +$var = new Foo()::bar; $var = Foo::$bar["baz"](); $var = Foo::$bar["baz"](); $var = Foo::{$bar["baz"]}(); diff --git a/tests/staticlookup/jsfmt.spec.js b/tests/staticlookup/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/staticlookup/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/staticlookup/jsfmt.spec.mjs b/tests/staticlookup/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/staticlookup/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/string-double-quote/__snapshots__/jsfmt.spec.js.snap b/tests/string-double-quote/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/string-double-quote/__snapshots__/jsfmt.spec.js.snap rename to tests/string-double-quote/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/string-double-quote/jsfmt.spec.js b/tests/string-double-quote/jsfmt.spec.js deleted file mode 100644 index 9b730dc4f..000000000 --- a/tests/string-double-quote/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"], { singleQuote: false }); diff --git a/tests/string-double-quote/jsfmt.spec.mjs b/tests/string-double-quote/jsfmt.spec.mjs new file mode 100644 index 000000000..de5550203 --- /dev/null +++ b/tests/string-double-quote/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"], { singleQuote: false }); diff --git a/tests/string-single-quote/__snapshots__/jsfmt.spec.js.snap b/tests/string-single-quote/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/string-single-quote/__snapshots__/jsfmt.spec.js.snap rename to tests/string-single-quote/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/string-single-quote/jsfmt.spec.js b/tests/string-single-quote/jsfmt.spec.js deleted file mode 100644 index 251ce04bb..000000000 --- a/tests/string-single-quote/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"], { singleQuote: true }); diff --git a/tests/string-single-quote/jsfmt.spec.mjs b/tests/string-single-quote/jsfmt.spec.mjs new file mode 100644 index 000000000..cfd1c798f --- /dev/null +++ b/tests/string-single-quote/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"], { singleQuote: true }); diff --git a/tests/string/__snapshots__/jsfmt.spec.js.snap b/tests/string/__snapshots__/jsfmt.spec.mjs.snap similarity index 99% rename from tests/string/__snapshots__/jsfmt.spec.js.snap rename to tests/string/__snapshots__/jsfmt.spec.mjs.snap index edef47687..a166868aa 100644 --- a/tests/string/__snapshots__/jsfmt.spec.js.snap +++ b/tests/string/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`multiline.php 1`] = ` ====================================options===================================== @@ -308,7 +308,7 @@ $string = "This is the value of the var named by the return value of getName(): $string = "This is the value of the var named by the return value of getName(): {\${getName( $arg1, $arg2, - $arg3 + $arg3, )}}"; $string = "This is the value of the var named by the return value of \\$object->getName(): {\${$object->getName()}}"; $string = "I'd like an {\${beers::softdrink}}\\n"; diff --git a/tests/string/jsfmt.spec.js b/tests/string/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/string/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/string/jsfmt.spec.mjs b/tests/string/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/string/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/switch/__snapshots__/jsfmt.spec.js.snap b/tests/switch/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/switch/__snapshots__/jsfmt.spec.js.snap rename to tests/switch/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/switch/jsfmt.spec.js b/tests/switch/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/switch/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/switch/jsfmt.spec.mjs b/tests/switch/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/switch/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/syntax-error/__snapshots__/jsfmt.spec.js.snap b/tests/syntax-error/__snapshots__/jsfmt.spec.mjs.snap similarity index 82% rename from tests/syntax-error/__snapshots__/jsfmt.spec.js.snap rename to tests/syntax-error/__snapshots__/jsfmt.spec.mjs.snap index 786be174e..3898bee1c 100644 --- a/tests/syntax-error/__snapshots__/jsfmt.spec.js.snap +++ b/tests/syntax-error/__snapshots__/jsfmt.spec.mjs.snap @@ -1,12 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Syntax errors have the expected structure 1`] = ` -Object { +{ "codeFrame": "> 1 | { - expect(raiseSyntaxError).toThrow(SyntaxError); -}); - -test("Syntax errors have the expected structure", () => { - try { - raiseSyntaxError(); - } catch (err) { - // Convert error to plain object since additional properties are not snapshotted otherwise - const errObject = Object.assign({}, err, { - // Strip ANSI from code frame since not all test environments may support it - codeFrame: stripAnsi(err.codeFrame), - }); - - // eslint-disable-next-line jest/no-try-expect, jest/no-conditional-expect - expect(errObject).toMatchSnapshot(); - } -}); diff --git a/tests/syntax-error/jsfmt.spec.mjs b/tests/syntax-error/jsfmt.spec.mjs new file mode 100644 index 000000000..ea94a15a3 --- /dev/null +++ b/tests/syntax-error/jsfmt.spec.mjs @@ -0,0 +1,28 @@ +import { prettier, plugin } from "../../tests_config/get_engine.mjs"; +import stripAnsi from "strip-ansi"; + +async function raiseSyntaxError() { + await prettier.format(` { + await expect(raiseSyntaxError).rejects.toThrow(SyntaxError); +}); + +test("Syntax errors have the expected structure", async () => { + try { + await raiseSyntaxError(); + } catch (err) { + // Convert error to plain object since additional properties are not snapshotted otherwise + const errObject = Object.assign({}, err, { + // Strip ANSI from code frame since not all test environments may support it + codeFrame: stripAnsi(err.codeFrame), + }); + + // eslint-disable-next-line jest/no-conditional-expect + expect(errObject).toMatchSnapshot(); + } +}); diff --git a/tests/sys/__snapshots__/jsfmt.spec.js.snap b/tests/sys/__snapshots__/jsfmt.spec.mjs.snap similarity index 94% rename from tests/sys/__snapshots__/jsfmt.spec.js.snap rename to tests/sys/__snapshots__/jsfmt.spec.mjs.snap index 25eefe8ec..6cbfb3562 100644 --- a/tests/sys/__snapshots__/jsfmt.spec.js.snap +++ b/tests/sys/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`sys.php 1`] = ` ====================================options===================================== @@ -40,12 +40,12 @@ echo "test echo"; echo $test, $other; $info = ["coffee", "brown", "caffeine"]; -list($drink, $color, $power) = $info; -list( +[$drink, $color, $power] = $info; +[ $reallyReallyReallyReallyLongName, $otherReallyReallyReallyLongName, $lastOne, -) = $info; +] = $info; print "test print"; print "parens test"; @@ -68,7 +68,7 @@ isset( $test, $test, $test, - $test + $test, ); isset($test["foo"]); diff --git a/tests/sys/jsfmt.spec.js b/tests/sys/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/sys/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/sys/jsfmt.spec.mjs b/tests/sys/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/sys/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/trailing_comma_func/__snapshots__/jsfmt.spec.mjs.snap b/tests/trailing_comma_func/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..39e415a5a --- /dev/null +++ b/tests/trailing_comma_func/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,185 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`function.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 +trailingComma: "all" +trailingCommaPHP: false + | printWidth +=====================================input====================================== + true; + } +} + +function f3( + $standaloneFunctionArgumentOne, + $standaloneFunctionArgumentTwo, + $standaloneFunctionArgumentThree, + $standaloneFunctionArgumentFour, +) { +} + +f3( + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", +); + +$f4 = function () use ( + $closureUseBlockVariableOne, + $closureUseBlockVariableTwo, + $closureUseBlockVariableThree, + $closureUseBlockVariableFour, +) { +}; + +=====================================output===================================== + true; + } +} + +function f3( + $standaloneFunctionArgumentOne, + $standaloneFunctionArgumentTwo, + $standaloneFunctionArgumentThree, + $standaloneFunctionArgumentFour +) {} + +f3( + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz" +); + +$f4 = function () use ( + $closureUseBlockVariableOne, + $closureUseBlockVariableTwo, + $closureUseBlockVariableThree, + $closureUseBlockVariableFour +) {}; + +================================================================================ +`; + +exports[`function.php 2`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 +trailingComma: "none" +trailingCommaPHP: true + | printWidth +=====================================input====================================== + true; + } +} + +function f3( + $standaloneFunctionArgumentOne, + $standaloneFunctionArgumentTwo, + $standaloneFunctionArgumentThree, + $standaloneFunctionArgumentFour, +) { +} + +f3( + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", +); + +$f4 = function () use ( + $closureUseBlockVariableOne, + $closureUseBlockVariableTwo, + $closureUseBlockVariableThree, + $closureUseBlockVariableFour, +) { +}; + +=====================================output===================================== + true; + } +} + +function f3( + $standaloneFunctionArgumentOne, + $standaloneFunctionArgumentTwo, + $standaloneFunctionArgumentThree, + $standaloneFunctionArgumentFour, +) {} + +f3( + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", +); + +$f4 = function () use ( + $closureUseBlockVariableOne, + $closureUseBlockVariableTwo, + $closureUseBlockVariableThree, + $closureUseBlockVariableFour, +) {}; + +================================================================================ +`; diff --git a/tests/trailing_comma_func/function.php b/tests/trailing_comma_func/function.php new file mode 100644 index 000000000..26d89809d --- /dev/null +++ b/tests/trailing_comma_func/function.php @@ -0,0 +1,39 @@ + true; + } +} + +function f3( + $standaloneFunctionArgumentOne, + $standaloneFunctionArgumentTwo, + $standaloneFunctionArgumentThree, + $standaloneFunctionArgumentFour, +) { +} + +f3( + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", + "abcdefghijklmnopqrstuvwxyz", +); + +$f4 = function () use ( + $closureUseBlockVariableOne, + $closureUseBlockVariableTwo, + $closureUseBlockVariableThree, + $closureUseBlockVariableFour, +) { +}; diff --git a/tests/trailing_comma_func/jsfmt.spec.mjs b/tests/trailing_comma_func/jsfmt.spec.mjs new file mode 100644 index 000000000..77f569314 --- /dev/null +++ b/tests/trailing_comma_func/jsfmt.spec.mjs @@ -0,0 +1,10 @@ +run_spec(import.meta, ["php"], { + trailingComma: "all", + trailingCommaPHP: false, + phpVersion: "8.0", +}); +run_spec(import.meta, ["php"], { + trailingComma: "none", + trailingCommaPHP: true, + phpVersion: "8.0", +}); diff --git a/tests/trailing_commas/__snapshots__/jsfmt.spec.js.snap b/tests/trailing_commas/__snapshots__/jsfmt.spec.mjs.snap similarity index 99% rename from tests/trailing_commas/__snapshots__/jsfmt.spec.js.snap rename to tests/trailing_commas/__snapshots__/jsfmt.spec.mjs.snap index 6650f4f14..c570a1a63 100644 --- a/tests/trailing_commas/__snapshots__/jsfmt.spec.js.snap +++ b/tests/trailing_commas/__snapshots__/jsfmt.spec.mjs.snap @@ -1,8 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`array.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== @@ -1753,6 +1754,7 @@ $expected = [ exports[`array.php 5`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 trailingComma: "all" trailingCommaPHP: false @@ -2179,6 +2181,7 @@ EOT exports[`call.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== @@ -3359,6 +3362,7 @@ $sel = $this->connections exports[`call.php 5`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 trailingComma: "all" trailingCommaPHP: false @@ -3654,6 +3658,7 @@ $sel = $this->connections exports[`isset.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== @@ -3756,6 +3761,7 @@ var_dump( exports[`isset.php 5`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 trailingComma: "all" trailingCommaPHP: false @@ -3782,6 +3788,7 @@ var_dump( exports[`list.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== @@ -4180,6 +4187,7 @@ list(,,,0 => $firstVeryVeryVeryVeryLong,,, 1 => $secondVeryVeryVeryVeryLong,,, 2 exports[`list.php 5`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 trailingComma: "all" trailingCommaPHP: false @@ -4280,6 +4288,7 @@ list( exports[`unset.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== @@ -4378,6 +4387,7 @@ unset( exports[`unset.php 5`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 trailingComma: "all" trailingCommaPHP: false @@ -4403,6 +4413,7 @@ unset( exports[`use.php 1`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 | printWidth =====================================input====================================== @@ -4609,6 +4620,7 @@ use other_foo\\bar\\{ exports[`use.php 5`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 trailingComma: "all" trailingCommaPHP: false diff --git a/tests/trailing_commas/jsfmt.spec.js b/tests/trailing_commas/jsfmt.spec.js deleted file mode 100644 index 6658b8a2f..000000000 --- a/tests/trailing_commas/jsfmt.spec.js +++ /dev/null @@ -1,8 +0,0 @@ -run_spec(__dirname, ["php"]); -run_spec(__dirname, ["php"], { trailingCommaPHP: true, phpVersion: "5.0" }); -run_spec(__dirname, ["php"], { trailingCommaPHP: true, phpVersion: "7.2" }); -run_spec(__dirname, ["php"], { trailingCommaPHP: true, phpVersion: "7.3" }); -run_spec(__dirname, ["php"], { - trailingCommaPHP: false, - trailingComma: "all", -}); diff --git a/tests/trailing_commas/jsfmt.spec.mjs b/tests/trailing_commas/jsfmt.spec.mjs new file mode 100644 index 000000000..a9c95d350 --- /dev/null +++ b/tests/trailing_commas/jsfmt.spec.mjs @@ -0,0 +1,9 @@ +run_spec(import.meta, ["php"], { phpVersion: "7.0" }); +run_spec(import.meta, ["php"], { trailingCommaPHP: true, phpVersion: "5.0" }); +run_spec(import.meta, ["php"], { trailingCommaPHP: true, phpVersion: "7.2" }); +run_spec(import.meta, ["php"], { trailingCommaPHP: true, phpVersion: "7.3" }); +run_spec(import.meta, ["php"], { + trailingCommaPHP: false, + phpVersion: "7.0", + trailingComma: "all", +}); diff --git a/tests/trailing_whitespace/__snapshots__/jsfmt.spec.js.snap b/tests/trailing_whitespace/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/trailing_whitespace/__snapshots__/jsfmt.spec.js.snap rename to tests/trailing_whitespace/__snapshots__/jsfmt.spec.mjs.snap index a9996ad62..988df3913 100644 --- a/tests/trailing_whitespace/__snapshots__/jsfmt.spec.js.snap +++ b/tests/trailing_whitespace/__snapshots__/jsfmt.spec.mjs.snap @@ -51,9 +51,7 @@ class test{ =====================================output===================================== ================================================================================ diff --git a/tests/trailing_whitespace/jsfmt.spec.js b/tests/trailing_whitespace/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/trailing_whitespace/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/trailing_whitespace/jsfmt.spec.mjs b/tests/trailing_whitespace/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/trailing_whitespace/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/traitalias/__snapshots__/jsfmt.spec.js.snap b/tests/traitalias/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/traitalias/__snapshots__/jsfmt.spec.js.snap rename to tests/traitalias/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/traitalias/jsfmt.spec.js b/tests/traitalias/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/traitalias/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/traitalias/jsfmt.spec.mjs b/tests/traitalias/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/traitalias/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/traits/__snapshots__/jsfmt.spec.js.snap b/tests/traits/__snapshots__/jsfmt.spec.mjs.snap similarity index 99% rename from tests/traits/__snapshots__/jsfmt.spec.js.snap rename to tests/traits/__snapshots__/jsfmt.spec.mjs.snap index b6929124b..da9e82484 100644 --- a/tests/traits/__snapshots__/jsfmt.spec.js.snap +++ b/tests/traits/__snapshots__/jsfmt.spec.mjs.snap @@ -106,9 +106,7 @@ class Partial } } -trait emptyTrait -{ -} +trait emptyTrait {} trait EmptyTraitWithComment { diff --git a/tests/traits/jsfmt.spec.js b/tests/traits/jsfmt.spec.js deleted file mode 100644 index 5378de169..000000000 --- a/tests/traits/jsfmt.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -run_spec(__dirname, ["php"]); -// see https://github.com/prettier/plugin-php/issues/107 -// run_spec(__dirname, ["php"], { openingBraceNewLine: false }); diff --git a/tests/traits/jsfmt.spec.mjs b/tests/traits/jsfmt.spec.mjs new file mode 100644 index 000000000..4d43d0cbd --- /dev/null +++ b/tests/traits/jsfmt.spec.mjs @@ -0,0 +1,3 @@ +run_spec(import.meta, ["php"]); +// see https://github.com/prettier/plugin-php/issues/107 +// run_spec(import.meta, ["php"], { openingBraceNewLine: false }); diff --git a/tests/traituse/__snapshots__/jsfmt.spec.js.snap b/tests/traituse/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/traituse/__snapshots__/jsfmt.spec.js.snap rename to tests/traituse/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/traituse/jsfmt.spec.js b/tests/traituse/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/traituse/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/traituse/jsfmt.spec.mjs b/tests/traituse/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/traituse/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/uniontypes/__snapshots__/jsfmt.spec.js.snap b/tests/uniontypes/__snapshots__/jsfmt.spec.mjs.snap similarity index 85% rename from tests/uniontypes/__snapshots__/jsfmt.spec.js.snap rename to tests/uniontypes/__snapshots__/jsfmt.spec.mjs.snap index 065050c78..acb78e458 100644 --- a/tests/uniontypes/__snapshots__/jsfmt.spec.js.snap +++ b/tests/uniontypes/__snapshots__/jsfmt.spec.mjs.snap @@ -22,21 +22,15 @@ interface UnionInterface { function do(string|int $in):string|bool; } =====================================output===================================== a->b); unset( $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty - ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty + ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty, ); ================================================================================ diff --git a/tests/unset/jsfmt.spec.js b/tests/unset/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/unset/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/unset/jsfmt.spec.mjs b/tests/unset/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/unset/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/use/__snapshots__/jsfmt.spec.js.snap b/tests/use/__snapshots__/jsfmt.spec.mjs.snap similarity index 97% rename from tests/use/__snapshots__/jsfmt.spec.js.snap rename to tests/use/__snapshots__/jsfmt.spec.mjs.snap index f3b09702d..dca64bca2 100644 --- a/tests/use/__snapshots__/jsfmt.spec.js.snap +++ b/tests/use/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`use.php 1`] = ` ====================================options===================================== @@ -64,7 +64,7 @@ use Vendor\\Package\\SomeNamespace\\{ SubnamespaceOne\\ClassA, SubnamespaceOne\\ClassB, SubnamespaceTwo\\ClassY, - ClassZ + ClassZ, }; use Mizo\\Web\\{ Php\\WebSite, @@ -74,7 +74,7 @@ use Mizo\\Web\\{ function JS\\printTotal, function JS\\printList, const JS\\BUAIKUM, - const JS\\MAUTAM + const JS\\MAUTAM, }; use Illuminate\\Foundation\\Bootstrap\\BootProviders; use function some\\Full\\fn_a; diff --git a/tests/use/jsfmt.spec.js b/tests/use/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/use/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/use/jsfmt.spec.mjs b/tests/use/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/use/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/variable/__snapshots__/jsfmt.spec.js.snap b/tests/variable/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/variable/__snapshots__/jsfmt.spec.js.snap rename to tests/variable/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/variable/jsfmt.spec.js b/tests/variable/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/variable/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/variable/jsfmt.spec.mjs b/tests/variable/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/variable/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/variadic/__snapshots__/jsfmt.spec.js.snap b/tests/variadic/__snapshots__/jsfmt.spec.mjs.snap similarity index 95% rename from tests/variadic/__snapshots__/jsfmt.spec.js.snap rename to tests/variadic/__snapshots__/jsfmt.spec.mjs.snap index 4f7205633..64025ce9f 100644 --- a/tests/variadic/__snapshots__/jsfmt.spec.js.snap +++ b/tests/variadic/__snapshots__/jsfmt.spec.mjs.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`variadic.php 1`] = ` ====================================options===================================== @@ -41,7 +41,7 @@ function f($req, $opt = null, ...$params) '$req: %d; $opt: %d; number of params: %d' . "\\n", $req, $opt, - count($params) + count($params), ); } diff --git a/tests/variadic/jsfmt.spec.js b/tests/variadic/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/variadic/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/variadic/jsfmt.spec.mjs b/tests/variadic/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/variadic/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/while/__snapshots__/jsfmt.spec.js.snap b/tests/while/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/while/__snapshots__/jsfmt.spec.js.snap rename to tests/while/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/while/jsfmt.spec.js b/tests/while/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/while/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/while/jsfmt.spec.mjs b/tests/while/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/while/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/yield/__snapshots__/jsfmt.spec.js.snap b/tests/yield/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/yield/__snapshots__/jsfmt.spec.js.snap rename to tests/yield/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/yield/jsfmt.spec.js b/tests/yield/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/yield/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/yield/jsfmt.spec.mjs b/tests/yield/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/yield/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests_config/get_engine.js b/tests_config/get_engine.js deleted file mode 100644 index 199bc9d76..000000000 --- a/tests_config/get_engine.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; - -const path = require("path"); - -if (global.STANDALONE) { - exports.prettier = require("prettier/standalone"); - exports.plugin = require(path.join(__dirname, "..", "standalone.js")); -} else { - exports.prettier = require("prettier"); - exports.plugin = path.join(__dirname, ".."); -} diff --git a/tests_config/get_engine.mjs b/tests_config/get_engine.mjs new file mode 100644 index 000000000..fa85a20f3 --- /dev/null +++ b/tests_config/get_engine.mjs @@ -0,0 +1,12 @@ +import url from "url"; +import { createRequire } from "module"; +import prettierModule from "prettier"; +import prettierStandalone from "prettier/standalone"; +import * as prettierPluginPhp from "../src/index.mjs"; + +const require = createRequire(import.meta.url); + +export const prettier = global.STANDALONE ? prettierStandalone : prettierModule; +export const plugin = global.STANDALONE + ? require(url.fileURLToPath(new URL("../standalone.js", import.meta.url))) + : prettierPluginPhp; diff --git a/tests_config/run_spec.js b/tests_config/run_spec.mjs similarity index 79% rename from tests_config/run_spec.js rename to tests_config/run_spec.mjs index 07b50ddcd..21437ccc6 100644 --- a/tests_config/run_spec.js +++ b/tests_config/run_spec.mjs @@ -1,8 +1,8 @@ -"use strict"; - -const fs = require("fs"); -const path = require("path"); -const raw = require("jest-snapshot-serializer-raw").wrap; +import fs from "fs"; +import path from "path"; +import url from "url"; +import { wrap as raw } from "jest-snapshot-serializer-raw"; +import { prettier, plugin } from "./get_engine.mjs"; const { AST_COMPARE, TEST_CRLF } = process.env; @@ -10,9 +10,9 @@ const CURSOR_PLACEHOLDER = "<|>"; const RANGE_START_PLACEHOLDER = "<<>>"; const RANGE_END_PLACEHOLDER = "<<>>"; -const { prettier, plugin } = require("./get_engine"); +global.run_spec = (importMeta, parsers, options) => { + const dirname = path.dirname(url.fileURLToPath(importMeta.url)); -global.run_spec = (dirname, parsers, options) => { options = Object.assign({}, options, { plugins: [plugin, ...((options && options.plugins) || [])], }); @@ -29,7 +29,7 @@ global.run_spec = (dirname, parsers, options) => { path.extname(basename) === ".snap" || !fs.lstatSync(filename).isFile() || basename[0] === "." || - basename === "jsfmt.spec.js" + basename === "jsfmt.spec.mjs" ) { return; } @@ -66,11 +66,15 @@ global.run_spec = (dirname, parsers, options) => { const hasEndOfLine = "endOfLine" in mainOptions; - const output = format(input, filename, mainOptions); - const visualizedOutput = visualizeEndOfLine(output); + let output; + let visualizedOutput; + beforeAll(async () => { + output = await format(input, filename, mainOptions); + visualizedOutput = visualizeEndOfLine(output); + }); // eslint-disable-next-line jest/valid-title - test(basename, () => { + test(basename, async () => { expect(visualizedOutput).toEqual( visualizeEndOfLine(consistentEndOfLine(output)) ); @@ -101,31 +105,31 @@ global.run_spec = (dirname, parsers, options) => { // this will only work for php tests (since we're in the php repo) if (AST_COMPARE && parsers[0] === "php") { - test(`${filename} parse`, () => { - const parseOptions = Object.assign({}, mainOptions); - delete parseOptions.cursorOffset; - - const originalAst = parse(input, parseOptions); - let formattedAst; - - expect(() => { - formattedAst = parse( - output.replace(CURSOR_PLACEHOLDER, ""), - parseOptions - ); - }).not.toThrow(); - expect(originalAst).toEqual(formattedAst); + test(`${filename} parse`, async () => { + const parseOptions = { ...mainOptions, cursorOffset: undefined }; + + const originalAst = await parse(input, parseOptions); + const formattedAst = await parse( + output.replace(CURSOR_PLACEHOLDER, ""), + parseOptions + ); + + expect(originalAst).toBeDefined(); + expect(formattedAst).toEqual(originalAst); }); } }); }; -function parse(source, options) { - return prettier.__debug.parse(source, options, /* massage */ true).ast; +async function parse(source, options) { + const { ast } = await prettier.__debug.parse(source, options, { + massage: true, + }); + return ast; } -function format(source, filename, options) { - const result = prettier.formatWithCursor( +async function format(source, filename, options) { + const result = await prettier.formatWithCursor( source, Object.assign({ filepath: filename }, options) ); @@ -201,8 +205,8 @@ function printOptions(options) { return value === Infinity ? "Infinity" : Array.isArray(value) - ? `[${value.map((v) => JSON.stringify(v)).join(", ")}]` - : JSON.stringify(value); + ? `[${value.map((v) => JSON.stringify(v)).join(", ")}]` + : JSON.stringify(value); } } diff --git a/yarn.lock b/yarn.lock index 98e7c52ca..b36e788a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,571 +2,543 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== +"@ampproject/remapping@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.1.tgz#7922fb0817bf3166d8d9e258c57477e3fd1c3610" + integrity sha512-Aolwjd7HSC2PyY0fDj/wA/EimQT4HfEnFYNp5s9CQlrdhyvWTtvZ5YzrUPu6R6/1jKiUlxu8bUhkdSnKHNAHMA== dependencies: - "@babel/highlight" "^7.12.13" + "@jridgewell/trace-mapping" "^0.3.0" -"@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.5.tgz#8ef4c18e58e801c5c95d3c1c0f2874a2680fadea" - integrity sha512-kixrYn4JwfAVPa0f2yfzc2AWti6WRRyO3XjWW5PJAvtE11qhSayrrcrEnee05KAtNaPC+EwehE8Qt1UedEVB8w== - -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" -"@babel/generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" - integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw== +"@asamuzakjp/css-color@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-3.2.0.tgz#cc42f5b85c593f79f1fa4f25d2b9b321e61d1794" + integrity sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw== dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" + "@csstools/css-calc" "^2.1.3" + "@csstools/css-color-parser" "^3.0.9" + "@csstools/css-parser-algorithms" "^3.0.4" + "@csstools/css-tokenizer" "^3.0.3" + lru-cache "^10.4.3" -"@babel/generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" - integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== +"@babel/code-frame@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/types" "^7.14.5" - jsesc "^2.5.1" - source-map "^0.5.0" + "@babel/highlight" "^7.16.7" -"@babel/generator@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" - integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== +"@babel/code-frame@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/types" "^7.9.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" + "@babel/highlight" "^7.18.6" -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== +"@babel/code-frame@^7.18.6": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" + integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== dependencies: - "@babel/types" "^7.14.5" + "@babel/highlight" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz#b939b43f8c37765443a19ae74ad8b15978e0a191" - integrity sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w== +"@babel/code-frame@^7.22.5": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/helper-explode-assignable-expression" "^7.14.5" - "@babel/types" "^7.14.5" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" - integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== +"@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + +"@babel/compat-data@^7.27.2": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" + integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== + +"@babel/core@^7.12.3": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337" + integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw== + dependencies: + "@ampproject/remapping" "^2.0.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-module-transforms" "^7.16.7" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.0" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.5.tgz#8842ec495516dd1ed8f6c572be92ba78b1e9beef" - integrity sha512-Uq9z2e7ZtcnDMirRqAGLRaLwJn+Lrh388v5ETrR3pALJnElVh2zqQmdbz4W2RUJYohAPh2mtyPUgyMHMzXMncQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" +"@babel/core@^7.23.9", "@babel/core@^7.27.4": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" + integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.4" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.27.4" + "@babel/types" "^7.27.3" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz#c7d5ac5e9cf621c26057722fb7a8a4c5889358c4" - integrity sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A== +"@babel/generator@^7.17.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.19.0.tgz#785596c06425e59334df2ccee63ab166b738419a" + integrity sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - regexpu-core "^4.7.1" + "@babel/types" "^7.19.0" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" -"@babel/helper-define-polyfill-provider@^0.2.2": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6" - integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew== +"@babel/generator@^7.27.3", "@babel/generator@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" + integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== + dependencies: + "@babel/parser" "^7.27.5" + "@babel/types" "^7.27.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-annotate-as-pure@^7.27.1": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/helper-compilation-targets@^7.16.7": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-compilation-targets@^7.22.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + regexpu-core "^6.2.0" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz#15e8746368bfa671785f5926ff74b3064c291fab" + integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw== dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-explode-assignable-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz#8aa72e708205c7bb643e45c73b4386cdf2a1f645" - integrity sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== - dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.5.tgz#d5c70e4ad13b402c95156c7a53568f504e2fb7b8" - integrity sha512-UxUeEYPrqH1Q/k0yRku1JE7dyfyehNwT6SVkMHvYvPDv4+uu627VXBckVj891BO8ruKBkiDoGnZf4qPDD8abDQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== - dependencies: - "@babel/types" "^7.14.5" -"@babel/helper-module-transforms@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" - integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-remap-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz#51439c913612958f54a987a4ffc9ee587a2045d6" - integrity sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-wrap-function" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" - integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-skip-transparent-expression-wrappers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz#96f486ac050ca9f44b009fbe5b7d394cab3a0ee4" - integrity sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-wrap-function@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz#5919d115bf0fe328b8a5d63bcb610f51601f2bff" - integrity sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" +"@babel/helper-environment-visitor@^7.16.7": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-function-name@^7.16.7": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-imports@^7.18.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" + integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-simple-access@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" + integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.22.5", "@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-identifier@^7.18.6": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + +"@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== + dependencies: + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helpers@^7.17.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" + +"@babel/helpers@^7.27.4": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" + +"@babel/highlight@^7.16.7": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" - integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== +"@babel/highlight@^7.18.6": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" + integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== dependencies: - "@babel/helper-validator-identifier" "^7.12.11" + "@babel/helper-validator-identifier" "^7.22.5" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== +"@babel/highlight@^7.22.13": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== - -"@babel/parser@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.13.tgz#3ee7be4131fe657ba9143d5c5b3a9f253fdb75e9" - integrity sha512-z7n7ybOUzaRc3wwqLpAX8UFIXsrVXUJhtNGBwAnLz6d1KUapqyq7ad2La8gZ6CXhHmGAIL32cop8Tst4/PNWLw== - -"@babel/parser@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.0.tgz#49b9b6ee213e5634fa80361dae139effef893f78" - integrity sha512-w80kxEMFhE3wjMOQkfdTvv0CSdRSJZptIlLhU4eU/coNJeWjduspUFz+IRnBbAq6m5XYBFMoT1TNkk9K9yf10g== - -"@babel/parser@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.5.tgz#4cd2f346261061b2518873ffecdf1612cb032829" - integrity sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg== - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz#4b467302e1548ed3b1be43beae2cc9cf45e0bb7e" - integrity sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - -"@babel/plugin-proposal-async-generator-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.5.tgz#4024990e3dd74181f4f426ea657769ff49a2df39" - integrity sha512-tbD/CG3l43FIXxmu4a7RBe4zH7MLJ+S/lFowPFO7HetS2hyOZ/0nnnznegDuzFzfkyQYTxqdTH/hKmuBngaDAA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz#158e9e10d449c3849ef3ecde94a03d9f1841b681" - integrity sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg== +"@babel/highlight@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" -"@babel/plugin-proposal-dynamic-import@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz#0c6617df461c0c1f8fff3b47cd59772360101d2c" - integrity sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== -"@babel/plugin-proposal-export-namespace-from@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz#dbad244310ce6ccd083072167d8cea83a52faf76" - integrity sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/parser@^7.17.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.19.0.tgz#497fcafb1d5b61376959c1c338745ef0577aa02c" + integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw== -"@babel/plugin-proposal-json-strings@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz#38de60db362e83a3d8c944ac858ddf9f0c2239eb" - integrity sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/parser@^7.18.10": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== -"@babel/plugin-proposal-logical-assignment-operators@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz#6e6229c2a99b02ab2915f82571e0cc646a40c738" - integrity sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw== +"@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" + integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/types" "^7.27.3" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz#ee38589ce00e2cc59b299ec3ea406fcd3a0fdaf6" - integrity sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/parser@^7.22.5": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== -"@babel/plugin-proposal-numeric-separator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz#83631bf33d9a51df184c2102a069ac0c58c05f18" - integrity sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== -"@babel/plugin-proposal-object-rest-spread@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.5.tgz#e581d5ccdfa187ea6ed73f56c6a21c1580b90fbf" - integrity sha512-VzMyY6PWNPPT3pxc5hi9LloKNr4SSrVCg7Yr6aZpW4Ym07r7KqSU/QXYwjXLVxqwSv0t/XSXkFoKBPUkZ8vb2A== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-proposal-optional-catch-binding@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz#939dd6eddeff3a67fdf7b3f044b5347262598c3c" - integrity sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-proposal-optional-chaining@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz#fa83651e60a360e3f13797eef00b8d519695b603" - integrity sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-proposal-private-methods@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz#37446495996b2945f30f5be5b60d5e2aa4f5792d" - integrity sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" -"@babel/plugin-proposal-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz#9f65a4d0493a940b4c01f8aa9d3f1894a587f636" - integrity sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" + integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-proposal-unicode-property-regex@^7.14.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz#0f95ee0e757a5d647f378daa0eca7e93faa8bbe8" - integrity sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -582,7 +554,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -596,21 +568,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== +"@babel/plugin-syntax-import-assertions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -624,7 +596,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -638,7 +617,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -673,436 +652,584 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== +"@babel/plugin-syntax-typescript@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-to-generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz#72c789084d8f2094acb945633943ef8443d39e67" - integrity sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA== +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoped-functions@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz#8cc63e61e50f42e078e6f09be775a75f23ef9939" - integrity sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw== +"@babel/plugin-transform-async-generator-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz#ca433df983d68e1375398e7ca71bf2a4f6fd89d7" + integrity sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-classes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz#0e98e82097b38550b03b483f9b51a78de0acb2cf" - integrity sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA== +"@babel/plugin-transform-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-block-scoping@^7.27.1": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.5.tgz#98c37485d815533623d992fd149af3e7b3140157" + integrity sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-class-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-class-static-block@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" + integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-classes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz#03bb04bea2c7b2f711f0db7304a8da46a85cced4" + integrity sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.27.1" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== +"@babel/plugin-transform-computed-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.5.tgz#d32ad19ff1a6da1e861dc62720d80d9776e3bf35" - integrity sha512-wU9tYisEbRMxqDezKUqC9GleLycCRoUsai9ddlsq54r8QRLaeEhc+d+9DqCG+kV9W2GgQjTZESPTpn5bAFMDww== +"@babel/plugin-transform-destructuring@^7.27.1", "@babel/plugin-transform-destructuring@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz#3cc8299ed798d9a909f8d66ddeb40849ec32e3b0" + integrity sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dotall-regex@^7.14.5", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz#2f6bf76e46bdf8043b4e7e16cf24532629ba0c7a" - integrity sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw== +"@babel/plugin-transform-dotall-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-keys@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz#365a4844881bdf1501e3a9f0270e7f0f91177954" - integrity sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A== +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-exponentiation-operator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz#5154b8dd6a3dfe6d90923d61724bd3deeb90b493" - integrity sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-for-of@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz#dae384613de8f77c196a8869cbf602a44f7fc0eb" - integrity sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA== +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== +"@babel/plugin-transform-exponentiation-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-modules-amd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz#4fd9ce7e3411cb8b83848480b7041d83004858f7" - integrity sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g== +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz#7aaee0ea98283de94da98b28f8c35701429dad97" - integrity sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A== +"@babel/plugin-transform-json-strings@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz#c75342ef8b30dcde4295d3401aae24e65638ed29" - integrity sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA== +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== dependencies: - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-umd@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz#fb662dfee697cce274a7cda525190a79096aa6e0" - integrity sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA== +"@babel/plugin-transform-logical-assignment-operators@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== dependencies: - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.5.tgz#d537e8ee083ee6f6aa4f4eef9d2081d555746e4c" - integrity sha512-+Xe5+6MWFo311U8SchgeX5c1+lJM+eZDBZgD+tvXu9VVQPXwwVzeManMMjYX6xw2HczngfOSZjoFYKwdeB/Jvw== +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz#31bdae8b925dc84076ebfcd2a9940143aed7dbf8" - integrity sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ== +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-object-super@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== +"@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-parameters@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" - integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-property-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz#9676fd5707ed28f522727c5b3c0aa8544440b04f" - integrity sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-reserved-words@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz#c44589b661cfdbef8d4300dcc7469dffa92f8304" - integrity sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg== +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-shorthand-properties@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== +"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.5.tgz#bd269fb4119754d2ce7f4cc39a96b4f71baae356" - integrity sha512-/3iqoQdiWergnShZYl0xACb4ADeYCJ7X/RgmwtXshn6cIvautRPAFzhd58frQlokLO6Jb4/3JXvmm6WNTPtiTw== +"@babel/plugin-transform-numeric-separator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz#5b617542675e8b7761294381f3c28c633f40aeb9" - integrity sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A== +"@babel/plugin-transform-object-rest-spread@^7.27.2": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz#ce130aa73fef828bc3e3e835f9bc6144be3eb1c0" + integrity sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.27.3" + "@babel/plugin-transform-parameters" "^7.27.1" -"@babel/plugin-transform-template-literals@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz#39af2739e989a2bd291bf6b53f16981423d457d4" - integrity sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw== +"@babel/plugin-transform-optional-catch-binding@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-escapes@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz#9d4bd2a681e3c5d7acf4f57fa9e51175d91d0c6b" - integrity sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA== +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-unicode-regex@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz#4cd09b6c8425dd81255c7ceb3fb1836e7414382e" - integrity sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw== +"@babel/plugin-transform-parameters@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz#80334b54b9b1ac5244155a0c8304a187a618d5a7" + integrity sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/preset-env@^7.7.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.5.tgz#c0c84e763661fd0e74292c3d511cb33b0c668997" - integrity sha512-ci6TsS0bjrdPpWGnQ+m4f+JSSzDKlckqKIJJt9UZ/+g7Zz9k0N8lYU8IeLg/01o2h8LyNZDMLGgRLDTxpudLsA== +"@babel/plugin-transform-private-methods@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-async-generator-functions" "^7.14.5" - "@babel/plugin-proposal-class-properties" "^7.14.5" - "@babel/plugin-proposal-class-static-block" "^7.14.5" - "@babel/plugin-proposal-dynamic-import" "^7.14.5" - "@babel/plugin-proposal-export-namespace-from" "^7.14.5" - "@babel/plugin-proposal-json-strings" "^7.14.5" - "@babel/plugin-proposal-logical-assignment-operators" "^7.14.5" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.14.5" - "@babel/plugin-proposal-numeric-separator" "^7.14.5" - "@babel/plugin-proposal-object-rest-spread" "^7.14.5" - "@babel/plugin-proposal-optional-catch-binding" "^7.14.5" - "@babel/plugin-proposal-optional-chaining" "^7.14.5" - "@babel/plugin-proposal-private-methods" "^7.14.5" - "@babel/plugin-proposal-private-property-in-object" "^7.14.5" - "@babel/plugin-proposal-unicode-property-regex" "^7.14.5" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.14.5" - "@babel/plugin-transform-async-to-generator" "^7.14.5" - "@babel/plugin-transform-block-scoped-functions" "^7.14.5" - "@babel/plugin-transform-block-scoping" "^7.14.5" - "@babel/plugin-transform-classes" "^7.14.5" - "@babel/plugin-transform-computed-properties" "^7.14.5" - "@babel/plugin-transform-destructuring" "^7.14.5" - "@babel/plugin-transform-dotall-regex" "^7.14.5" - "@babel/plugin-transform-duplicate-keys" "^7.14.5" - "@babel/plugin-transform-exponentiation-operator" "^7.14.5" - "@babel/plugin-transform-for-of" "^7.14.5" - "@babel/plugin-transform-function-name" "^7.14.5" - "@babel/plugin-transform-literals" "^7.14.5" - "@babel/plugin-transform-member-expression-literals" "^7.14.5" - "@babel/plugin-transform-modules-amd" "^7.14.5" - "@babel/plugin-transform-modules-commonjs" "^7.14.5" - "@babel/plugin-transform-modules-systemjs" "^7.14.5" - "@babel/plugin-transform-modules-umd" "^7.14.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.14.5" - "@babel/plugin-transform-new-target" "^7.14.5" - "@babel/plugin-transform-object-super" "^7.14.5" - "@babel/plugin-transform-parameters" "^7.14.5" - "@babel/plugin-transform-property-literals" "^7.14.5" - "@babel/plugin-transform-regenerator" "^7.14.5" - "@babel/plugin-transform-reserved-words" "^7.14.5" - "@babel/plugin-transform-shorthand-properties" "^7.14.5" - "@babel/plugin-transform-spread" "^7.14.5" - "@babel/plugin-transform-sticky-regex" "^7.14.5" - "@babel/plugin-transform-template-literals" "^7.14.5" - "@babel/plugin-transform-typeof-symbol" "^7.14.5" - "@babel/plugin-transform-unicode-escapes" "^7.14.5" - "@babel/plugin-transform-unicode-regex" "^7.14.5" - "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.2" - babel-plugin-polyfill-corejs3 "^0.2.2" - babel-plugin-polyfill-regenerator "^0.2.2" - core-js-compat "^3.14.0" - semver "^6.3.0" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/preset-modules@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" - integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== +"@babel/plugin-transform-private-property-in-object@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/runtime@^7.8.4": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== dependencies: - regenerator-runtime "^0.13.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== +"@babel/plugin-transform-regenerator@^7.27.1": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.5.tgz#0c01f4e0e4cced15f68ee14b9c76dac9813850c7" + integrity sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q== dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/template@^7.3.3", "@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" +"@babel/plugin-transform-regexp-modifiers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-spread@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-property-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-sets-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/preset-env@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.27.2.tgz#106e6bfad92b591b1f6f76fd4cf13b7725a7bf9a" + integrity sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.27.1" + "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.27.1" + "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.27.1" + "@babel/plugin-transform-class-properties" "^7.27.1" + "@babel/plugin-transform-class-static-block" "^7.27.1" + "@babel/plugin-transform-classes" "^7.27.1" + "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.27.1" + "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" + "@babel/plugin-transform-numeric-separator" "^7.27.1" + "@babel/plugin-transform-object-rest-spread" "^7.27.2" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.1" + "@babel/plugin-transform-private-methods" "^7.27.1" + "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.27.1" + "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.11.0" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.40.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/template@^7.16.7": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/template@^7.18.10": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/template@^7.27.1", "@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.16.7", "@babel/traverse@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.19" -"@babel/traverse@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.5.tgz#c111b0f58afab4fea3d3385a406f692748c59870" - integrity sha512-G3BiS15vevepdmFqmUc9X+64y0viZYygubAMO8SvBmKARuF6CPSZtH4Ng9vi/lrWlZFGe3FWdXNy835akH8Glg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - debug "^4.1.0" +"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": + version "7.27.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" + integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.3" + "@babel/parser" "^7.27.4" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.3" + debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.14.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== +"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.3.0": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.15.tgz#266cb21d2c5fd0b3931e7a91b6dd72d2f617d282" + integrity sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.15" + to-fast-properties "^2.0.0" + +"@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" + integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.4.4": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1110,327 +1237,666 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== +"@bcoe/v8-coverage@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz#bbe12dca5b4ef983a0d0af4b07b9bc90ea0ababa" + integrity sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA== + +"@csstools/color-helpers@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.0.2.tgz#82592c9a7c2b83c293d9161894e2a6471feb97b8" + integrity sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA== + +"@csstools/css-calc@^2.1.3", "@csstools/css-calc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.4.tgz#8473f63e2fcd6e459838dd412401d5948f224c65" + integrity sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ== + +"@csstools/css-color-parser@^3.0.9": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz#79fc68864dd43c3b6782d2b3828bc0fa9d085c10" + integrity sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg== dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" + "@csstools/color-helpers" "^5.0.2" + "@csstools/css-calc" "^2.1.4" -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== +"@csstools/css-parser-algorithms@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" + integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== + +"@csstools/css-tokenizer@^3.0.3": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" + integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== + +"@emnapi/core@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" + integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== + dependencies: + "@emnapi/wasi-threads" "1.0.2" + tslib "^2.4.0" + +"@emnapi/runtime@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" + integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" + integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== + dependencies: + tslib "^2.4.0" + +"@eslint-community/eslint-utils@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz#a831e6e468b4b2b5ae42bf658bea015bf10bc518" + integrity sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.6.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" + integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" find-up "^4.1.0" + get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== +"@jest/console@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.0.2.tgz#e2bf6c7703d45f9824d77c7332388c3e1685afd7" + integrity sha512-krGElPU0FipAqpVZ/BRZOy0MZh/ARdJ0Nj+PiH1ykFY1+VpBlYNLjdjVA5CFKxnKR6PFqFutO4Z7cdK9BlGiDA== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" + chalk "^4.1.2" + jest-message-util "30.0.2" + jest-util "30.0.2" slash "^3.0.0" -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" +"@jest/core@30.0.3": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.3.tgz#87967dd3ea6bd6bc98e99aa4b47bfbb0b7f2a77e" + integrity sha512-Mgs1N+NSHD3Fusl7bOq1jyxv1JDAUwjy+0DhVR93Q6xcBP9/bAQ+oZhXb5TTnP5sQzAHgb7ROCKQ2SnovtxYtg== + dependencies: + "@jest/console" "30.0.2" + "@jest/pattern" "30.0.1" + "@jest/reporters" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + ci-info "^4.2.0" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-changed-files "30.0.2" + jest-config "30.0.3" + jest-haste-map "30.0.2" + jest-message-util "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-resolve-dependencies "30.0.3" + jest-runner "30.0.3" + jest-runtime "30.0.3" + jest-snapshot "30.0.3" + jest-util "30.0.2" + jest-validate "30.0.2" + jest-watcher "30.0.2" + micromatch "^4.0.8" + pretty-format "30.0.2" slash "^3.0.0" - strip-ansi "^6.0.0" -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + +"@jest/environment-jsdom-abstract@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.2.tgz#3538bcc206704a4a37ee18afcb5b88ce55f02dc4" + integrity sha512-8aMoEzGdUuJeQl71BUACkys1ZEX437AF376VBqdYXsGFd4l3F1SdTjFHmNq8vF0Rp+CYhUyxa0kRAzXbBaVzfQ== dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" + "@types/jsdom" "^21.1.7" "@types/node" "*" - jest-mock "^26.6.2" + jest-mock "30.0.2" + jest-util "30.0.2" -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== +"@jest/environment@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.2.tgz#1b0d055070e97f697e9edb25059e9435221cbe65" + integrity sha512-hRLhZRJNxBiOhxIKSq2UkrlhMt3/zVFQOAi5lvS8T9I03+kxsbflwHJEF+eXEYXCrRGRhHwECT7CDk6DyngsRA== dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-mock "30.0.2" + +"@jest/expect-utils@30.0.3": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.3.tgz#2a9fb40110c8a13ae464da41f877df90d2e6bc3b" + integrity sha512-SMtBvf2sfX2agcT0dA9pXwcUrKvOSDqBY4e4iRfT+Hya33XzV35YVg+98YQFErVGA/VR1Gto5Y2+A6G9LSQ3Yg== + dependencies: + "@jest/get-type" "30.0.1" -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== +"@jest/expect@30.0.3", "@jest/expect@^30.0.0": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.3.tgz#9653e868ca27dd2194f6c20c81b8a690f9669465" + integrity sha512-73BVLqfCeWjYWPEQoYjiRZ4xuQRhQZU0WdgvbyXGRHItKQqg5e6mt2y1kVhzLSuZpmUnccZHbGynoaL7IcLU3A== dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" + expect "30.0.3" + jest-snapshot "30.0.3" -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== +"@jest/fake-timers@30.0.2", "@jest/fake-timers@^30.0.0": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.2.tgz#ec758b28ae6f63a49eda9e8d6af274d152d37c09" + integrity sha512-jfx0Xg7l0gmphTY9UKm5RtH12BlLYj/2Plj6wXjVW5Era4FZKfXeIvwC67WX+4q8UCFxYS20IgnMcFBcEU0DtA== + dependencies: + "@jest/types" "30.0.1" + "@sinonjs/fake-timers" "^13.0.0" + "@types/node" "*" + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-util "30.0.2" + +"@jest/get-type@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52" + integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw== + +"@jest/globals@30.0.3": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.3.tgz#9c9ef55e6f5e6b7e946244bdbf2af85044b7bb04" + integrity sha512-fIduqNyYpMeeSr5iEAiMn15KxCzvrmxl7X7VwLDRGj7t5CoHtbF+7K3EvKk32mOUIJ4kIvFRlaixClMH2h/Vaw== + dependencies: + "@jest/environment" "30.0.2" + "@jest/expect" "30.0.3" + "@jest/types" "30.0.1" + jest-mock "30.0.2" + +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== + dependencies: + "@types/node" "*" + jest-regex-util "30.0.1" + +"@jest/reporters@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.0.2.tgz#e804435ab77cd05b7e8732b91006cd00bd822399" + integrity sha512-l4QzS/oKf57F8WtPZK+vvF4Io6ukplc6XgNFu4Hd/QxaLEO9f+8dSFzUua62Oe0HKlCUjKHpltKErAgDiMJKsA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" + "@jest/console" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" + "@jridgewell/trace-mapping" "^0.3.25" + "@types/node" "*" + chalk "^4.1.2" + collect-v8-coverage "^1.0.2" + exit-x "^0.2.2" + glob "^10.3.10" + graceful-fs "^4.2.11" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" + istanbul-lib-source-maps "^5.0.0" + istanbul-reports "^3.1.3" + jest-message-util "30.0.2" + jest-util "30.0.2" + jest-worker "30.0.2" slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== +"@jest/schemas@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.1.tgz#27c00d707d480ece0c19126af97081a1af3bc46e" + integrity sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w== dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" + "@sinclair/typebox" "^0.34.0" -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" +"@jest/snapshot-utils@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.0.1.tgz#536108aa6b74858d758ae3b5229518c3d818bd68" + integrity sha512-6Dpv7vdtoRiISEFwYF8/c7LIvqXD7xDXtLPNzC2xqAfBznKip0MQM+rkseKwUPUpv2PJ7KW/YsnwWXrIL2xF+A== + dependencies: + "@jest/types" "30.0.1" + chalk "^4.1.2" + graceful-fs "^4.2.11" + natural-compare "^1.4.0" + +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-30.0.1.tgz#305ebec50468f13e658b3d5c26f85107a5620aaa" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + callsites "^3.1.0" + graceful-fs "^4.2.11" + +"@jest/test-result@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.2.tgz#786849e33da6060381c508986fa7309ff855a367" + integrity sha512-KKMuBKkkZYP/GfHMhI+cH2/P3+taMZS3qnqqiPC1UXZTJskkCS+YU/ILCtw5anw1+YsTulDHFpDo70mmCedW8w== + dependencies: + "@jest/console" "30.0.2" + "@jest/types" "30.0.1" + "@types/istanbul-lib-coverage" "^2.0.6" + collect-v8-coverage "^1.0.2" + +"@jest/test-sequencer@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.2.tgz#2693692d285b1c929ed353f7f0b7cbea51c57515" + integrity sha512-fbyU5HPka0rkalZ3MXVvq0hwZY8dx3Y6SCqR64zRmh+xXlDeFl0IdL4l9e7vp4gxEXTYHbwLFA1D+WW5CucaSw== + dependencies: + "@jest/test-result" "30.0.2" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + slash "^3.0.0" + +"@jest/transform@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.2.tgz#62ba84fcc2389ab751e7ec923958c9b1163d90c3" + integrity sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/types" "30.0.1" + "@jridgewell/trace-mapping" "^0.3.25" + babel-plugin-istanbul "^7.0.0" + chalk "^4.1.2" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-regex-util "30.0.1" + jest-util "30.0.2" + micromatch "^4.0.8" + pirates "^4.0.7" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^5.0.1" -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== +"@jest/types@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.1.tgz#a46df6a99a416fa685740ac4264b9f9cd7da1598" + integrity sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw== dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.1" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@napi-rs/wasm-runtime@^0.2.11": + version "0.2.11" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" + integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== + dependencies: + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.9.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + 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": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== +"@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== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@sinonjs/commons@^1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" - integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + +"@pkgr/core@^0.2.4": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" + integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== + +"@rollup/plugin-alias@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-5.1.1.tgz#53601d88cda8b1577aa130b4a6e452283605bf26" + integrity sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ== + +"@rollup/plugin-babel@^6.0.3": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz#bd698e351fa9aa9619fcae780aea2a603d98e4c4" + integrity sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@rollup/pluginutils" "^5.0.1" + +"@rollup/plugin-commonjs@^25.0.7": + version "25.0.8" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz#c77e608ab112a666b7f2a6bea625c73224f7dd34" + integrity sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A== + dependencies: + "@rollup/pluginutils" "^5.0.1" + commondir "^1.0.1" + estree-walker "^2.0.2" + glob "^8.0.3" + is-reference "1.2.1" + magic-string "^0.30.3" + +"@rollup/plugin-inject@^5.0.5": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz#616f3a73fe075765f91c5bec90176608bed277a3" + integrity sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + estree-walker "^2.0.2" + magic-string "^0.30.3" + +"@rollup/plugin-json@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.1.0.tgz#fbe784e29682e9bb6dee28ea75a1a83702e7b805" + integrity sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA== dependencies: - type-detect "4.0.8" + "@rollup/pluginutils" "^5.1.0" -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== +"@rollup/plugin-node-resolve@^15.2.1": + version "15.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz#66008953c2524be786aa319d49e32f2128296a78" + integrity sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA== dependencies: - "@sinonjs/commons" "^1.7.0" + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.22.1" -"@tootallnate/once@1": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.0.0.tgz#9c13c2574c92d4503b005feca8f2e16cc1611506" - integrity sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA== +"@rollup/plugin-replace@^5.0.5": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz#150c9ee9db8031d9e4580a61a0edeaaed3d37687" + integrity sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ== + dependencies: + "@rollup/pluginutils" "^5.0.1" + magic-string "^0.30.3" -"@types/babel__core@^7.0.0": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== +"@rollup/plugin-terser@^0.4.3": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz#15dffdb3f73f121aa4fbb37e7ca6be9aeea91962" + integrity sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" + serialize-javascript "^6.0.1" + smob "^1.0.0" + terser "^5.17.4" -"@types/babel__core@^7.1.7": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== +"@rollup/pluginutils@^5.0.1": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.2.0.tgz#eac25ca5b0bdda4ba735ddaca5fbf26bd435f602" + integrity sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^4.0.2" + +"@rollup/pluginutils@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@sinclair/typebox@^0.34.0": + version "0.34.37" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.37.tgz#f331e4db64ff8195e9e3d8449343c85aaa237d6e" + integrity sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw== + +"@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^13.0.0": + version "13.0.5" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== + dependencies: + "@sinonjs/commons" "^3.0.1" + +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" - integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== +"@types/babel__traverse@*": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" + integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== dependencies: "@babel/types" "^7.3.0" -"@types/babel__traverse@^7.0.4": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== - dependencies: - "@babel/types" "^7.3.0" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== - dependencies: - "@types/node" "*" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== +"@types/istanbul-lib-coverage@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": version "3.0.0" @@ -1439,17 +1905,26 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== +"@types/istanbul-reports@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@^7.0.3": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/jsdom@^21.1.7": + version "21.1.7" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-21.1.7.tgz#9edcb09e0b07ce876e7833922d3274149c898cfa" + integrity sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + +"@types/json-schema@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/json5@^0.0.29": version "0.0.29" @@ -1457,172 +1932,231 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/node@*": - version "12.12.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.31.tgz#d6b4f9645fee17f11319b508fb1001797425da51" - integrity sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "17.0.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" + integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== -"@types/prettier@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.1.tgz#b6e98083f13faa1e5231bfa3bdb1b0feff536b6d" - integrity sha512-boy4xPNEtiw6N3abRhBi/e7hNvy3Tt8E9ZRAQrwAGzoCGZS/1wjo9KY7JHhnfnEsG5wSjDbymCozUM9a3ea7OQ== +"@types/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" +"@types/stack-utils@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== -"@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== +"@types/yargs@^17.0.33": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/experimental-utils@^4.0.1": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.1.0.tgz#263d7225645c09a411c8735eeffd417f50f49026" - integrity sha512-paEYLA37iqRIDPeQwAmoYSiZ3PiHsaAc3igFeBTeqRHgPnHjHLJ9OGdmP6nwAkF65p2QzEsEBtpjNUBWByNWzA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.1.0" - "@typescript-eslint/types" "4.1.0" - "@typescript-eslint/typescript-estree" "4.1.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/scope-manager@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.1.0.tgz#9e389745ee9cfe12252ed1e9958808abd6b3a683" - integrity sha512-HD1/u8vFNnxwiHqlWKC/Pigdn0Mvxi84Y6GzbZ5f5sbLrFKu0al02573Er+D63Sw67IffVUXR0uR8rpdfdk+vA== - dependencies: - "@typescript-eslint/types" "4.1.0" - "@typescript-eslint/visitor-keys" "4.1.0" - -"@typescript-eslint/types@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.1.0.tgz#edbd3fec346f34e13ce7aa176b03b497a32c496a" - integrity sha512-rkBqWsO7m01XckP9R2YHVN8mySOKKY2cophGM8K5uDK89ArCgahItQYdbg/3n8xMxzu2elss+an1TphlUpDuJw== - -"@typescript-eslint/typescript-estree@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.1.0.tgz#394046ead25164494218c0e3d6b960695ea967f6" - integrity sha512-r6et57qqKAWU173nWyw31x7OfgmKfMEcjJl9vlJEzS+kf9uKNRr4AVTRXfTCwebr7bdiVEkfRY5xGnpPaNPe4Q== - dependencies: - "@typescript-eslint/types" "4.1.0" - "@typescript-eslint/visitor-keys" "4.1.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/visitor-keys@4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.1.0.tgz#b2d528c9484e7eda1aa4f86ccf0432fb16e4d545" - integrity sha512-+taO0IZGCtCEsuNTTF2Q/5o8+fHrlml8i9YsZt2AiDCdYEJzYlsmRY991l/6f3jNXFyAWepdQj7n8Na6URiDRQ== - dependencies: - "@typescript-eslint/types" "4.1.0" - eslint-visitor-keys "^2.0.0" - -abab@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== +"@typescript-eslint/scope-manager@5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz#f5aef83ff253f457ecbee5f46f762298f0101e4b" + integrity sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA== + dependencies: + "@typescript-eslint/types" "5.11.0" + "@typescript-eslint/visitor-keys" "5.11.0" + +"@typescript-eslint/types@5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.11.0.tgz#ba345818a2540fdf2755c804dc2158517ab61188" + integrity sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ== + +"@typescript-eslint/typescript-estree@5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz#53f9e09b88368191e52020af77c312a4777ffa43" + integrity sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg== + dependencies: + "@typescript-eslint/types" "5.11.0" + "@typescript-eslint/visitor-keys" "5.11.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@^5.10.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.11.0.tgz#d91548ef180d74c95d417950336d9260fdbe1dc5" + integrity sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.11.0" + "@typescript-eslint/types" "5.11.0" + "@typescript-eslint/typescript-estree" "5.11.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== +"@typescript-eslint/visitor-keys@5.11.0": + version "5.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz#888542381f1a2ac745b06d110c83c0b261487ebb" + integrity sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA== dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== - -acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + "@typescript-eslint/types" "5.11.0" + eslint-visitor-keys "^3.0.0" -acorn@^7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== - -agent-base@6: - version "6.0.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" - integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw== - dependencies: - debug "4" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.5.5: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== +"@ungap/structured-clone@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@unrs/resolver-binding-android-arm-eabi@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.2.tgz#6cb01dde20bef06397ffd4924f502596cb458851" + integrity sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A== + +"@unrs/resolver-binding-android-arm64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.2.tgz#1672b533f01f98119095860683496def93929a2e" + integrity sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q== + +"@unrs/resolver-binding-darwin-arm64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.2.tgz#dad66a21553b1ba4088c6eb922332846550bd9b2" + integrity sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ== + +"@unrs/resolver-binding-darwin-x64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.2.tgz#bfaedca218078862f3d536d44269fed94a6158e2" + integrity sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ== + +"@unrs/resolver-binding-freebsd-x64@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.2.tgz#bdab0e754c45831522b16df0b6fe4b0ffde22628" + integrity sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.2.tgz#2bac9c19599888d4ba4787b437b0273ac7a7a9f2" + integrity sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.2.tgz#49d27d5d63e5f26cf7b93a0731334b302b9b7fec" + integrity sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg== + +"@unrs/resolver-binding-linux-arm64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.2.tgz#95ba5d1654a04b1049d944871e165d786e8da68f" + integrity sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA== + +"@unrs/resolver-binding-linux-arm64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.2.tgz#23f90a48b1d343189b1c20c89b694140e2d5a210" + integrity sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.2.tgz#076f2c2e95dbcd4824cc9929bc504151b402ac11" + integrity sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.2.tgz#f7de54d45df430c74bbd12794946a55805bed6dd" + integrity sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ== + +"@unrs/resolver-binding-linux-riscv64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.2.tgz#ad1fcdcf5f112d7432fcfe38269a084bdccad266" + integrity sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg== + +"@unrs/resolver-binding-linux-s390x-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.2.tgz#d914a4f12b9048e1a4de0040f64d73274104e301" + integrity sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ== + +"@unrs/resolver-binding-linux-x64-gnu@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.2.tgz#d8f8cddc42ae267ef45ed4b61ff72b9e22aa3b82" + integrity sha512-jkSkwch0uPFva20Mdu8orbQjv2A3G88NExTN2oPTI1AJ+7mZfYW3cDCTyoH6OnctBKbBVeJCEqh0U02lTkqD5w== + +"@unrs/resolver-binding-linux-x64-musl@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.2.tgz#7bfce67acb51b3f4a7cff8383f46600f7b055a96" + integrity sha512-Uk64NoiTpQbkpl+bXsbeyOPRpUoMdcUqa+hDC1KhMW7aN1lfW8PBlBH4mJ3n3Y47dYE8qi0XTxy1mBACruYBaw== + +"@unrs/resolver-binding-wasm32-wasi@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.2.tgz#b133c9b6941aba54eea007ca2f27ff6ce917ae55" + integrity sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.2.tgz#5f95f590f06c1e9ba15b24292c956c21a6294b30" + integrity sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw== + +"@unrs/resolver-binding-win32-ia32-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.2.tgz#aac6595c6de6b26e5314372ab977b0f6a869c903" + integrity sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA== + +"@unrs/resolver-binding-win32-x64-msvc@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.2.tgz#f755c5229f1401bbff7307d037c6e38fa169ad1d" + integrity sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.8.2, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" - integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== +ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" + type-fest "^0.21.3" -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^3.2.1: version "3.2.1" @@ -1632,25 +2166,26 @@ ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" +ansi-styles@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -1662,214 +2197,174 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argv@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" - integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" -array-includes@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" - integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - get-intrinsic "^1.1.1" - is-string "^1.0.5" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== - -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +babel-jest@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.2.tgz#f627dc5afc3bd5795fc84735b4f1d74f9d4b8e91" + integrity sha512-A5kqR1/EUTidM2YC2YMEUDP2+19ppgOwK0IAd9Swc3q2KqFb5f9PtRUXVeZcngu0z5mDMyZ9zH2huJZSOMLiTQ== + dependencies: + "@jest/transform" "30.0.2" + "@types/babel__core" "^7.20.5" + babel-plugin-istanbul "^7.0.0" + babel-preset-jest "30.0.1" + chalk "^4.1.2" + graceful-fs "^4.2.11" slash "^3.0.0" -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== +babel-plugin-istanbul@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz#629a178f63b83dc9ecee46fd20266283b1f11280" + integrity sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-instrument "^6.0.2" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== +babel-plugin-jest-hoist@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz#f271b2066d2c1fb26a863adb8e13f85b06247125" + integrity sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ== dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.3" + "@types/babel__core" "^7.20.5" -babel-plugin-polyfill-corejs2@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327" - integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ== +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.13" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz#7d445f0e0607ebc8fb6b01d7e8fb02069b91dd8b" + integrity sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.2" - semver "^6.1.1" + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.4" + semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.2.tgz#7424a1682ee44baec817327710b1b094e5f8f7f5" - integrity sha512-l1Cf8PKk12eEk5QP/NQ6TH8A1pee6wWDJ96WjxrMXFLHLOBFzYM4moG80HFgduVhTqAFez4alnZKEhP/bYHg0A== +babel-plugin-polyfill-corejs3@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" + integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" - core-js-compat "^3.9.1" + "@babel/helper-define-polyfill-provider" "^0.6.3" + core-js-compat "^3.40.0" -babel-plugin-polyfill-regenerator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077" - integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg== +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz#428c615d3c177292a22b4f93ed99e358d7906a9b" + integrity sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.2" + "@babel/helper-define-polyfill-provider" "^0.6.4" -babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" - integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== +babel-preset-current-node-syntax@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== +babel-preset-jest@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz#7d28db9531bce264e846c8483d54236244b8ae88" + integrity sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw== dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" + babel-plugin-jest-hoist "30.0.1" + babel-preset-current-node-syntax "^1.1.0" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== brace-expansion@^1.1.7: version "1.1.11" @@ -1879,21 +2374,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" braces@^3.0.1: version "3.0.2" @@ -1902,21 +2388,32 @@ braces@^3.0.1: dependencies: fill-range "^7.0.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" -browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== +browserslist@^4.21.9, browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +browserslist@^4.24.0, browserslist@^4.25.0: + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== + dependencies: + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" bser@2.1.1: version "2.1.1" @@ -1926,29 +2423,26 @@ bser@2.1.1: node-int64 "^0.4.0" buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +c8@^10.1.3: + version "10.1.3" + resolved "https://registry.yarnpkg.com/c8/-/c8-10.1.3.tgz#54afb25ebdcc7f3b00112482c6d90d7541ad2fcd" + integrity sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA== + dependencies: + "@bcoe/v8-coverage" "^1.0.1" + "@istanbuljs/schema" "^0.1.3" + find-up "^5.0.0" + foreground-child "^3.1.1" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.1" + istanbul-reports "^3.1.6" + test-exclude "^7.0.1" + v8-to-istanbul "^9.0.0" + yargs "^17.7.2" + yargs-parser "^21.1.1" call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" @@ -1958,39 +2452,41 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -callsites@^3.0.0: +call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== - -caniuse-lite@^1.0.30001219: - version "1.0.30001230" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001230.tgz#8135c57459854b2240b57a4a6786044bdc5a9f71" - integrity sha512-5yBd5nWCBS+jWKTcHOzXwo5xzcj4ePE/yjtkZyUV1BTUmrBaA9MRGC+e7mxnqXSA90CmCA8L3eKLaSUkt099IQ== +camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" +caniuse-lite@^1.0.30001580: + version "1.0.30001583" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz#abb2970cc370801dc7e27bf290509dc132cfa390" + integrity sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q== -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +caniuse-lite@^1.0.30001726: + version "1.0.30001726" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz#a15bd87d5a4bf01f6b6f70ae7c97fdfd28b5ae47" + integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1999,18 +2495,10 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" - integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -2020,63 +2508,34 @@ 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== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== +ci-info@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" + integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" +cjs-module-lexer@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz#586e87d4341cb2661850ece5190232ccdebcff8b" + integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -codecov@3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.8.2.tgz#ab24f18783998c39e809ea210af899f8dbcc790e" - integrity sha512-6w/kt/xvmPsWMfDFPE/T054txA9RTgcJEw36PNa6MYX+YV29jCHCRFXwbQ3QZBTOgnex1J2WP8bo2AT8TWWz9g== - dependencies: - argv "0.0.2" - ignore-walk "3.0.3" - js-yaml "3.14.1" - teeny-request "7.0.1" - urlgrey "0.4.4" - -collect-v8-coverage@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" - integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" +collect-v8-coverage@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.3" @@ -2095,89 +2554,46 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +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== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js-compat@^3.14.0, core-js-compat@^3.9.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.14.0.tgz#b574dabf29184681d5b16357bd33d104df3d29a5" - integrity sha512-R4NS2eupxtiJU+VwgkF9WTpnSfZW4pogwKHd8bclWU2sp93Pr5S1uYJI84cMOubJRou7bcfL0vmwtLslWN5p3A== - dependencies: - browserslist "^4.16.6" - semver "7.0.0" - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -create-jest-runner@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/create-jest-runner/-/create-jest-runner-0.6.0.tgz#9ca6583d969acc15cdc21cd07d430945daf83de6" - integrity sha512-9ibH8XA4yOJwDLRlzIUv5Ceg2DZFrQFjEtRKplVP6scGKwoz28V27xPHTbXziq2LePAD/xXlJlywhUq1dtF+nw== +core-js-compat@^3.40.0: + version "3.43.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.43.0.tgz#055587369c458795ef316f65e0aabb808fb15840" + integrity sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA== dependencies: - chalk "^3.0.0" - jest-worker "^25.1.0" - throat "^5.0.0" + browserslist "^4.25.0" cross-env@^7.0.2: version "7.0.3" @@ -2186,17 +2602,6 @@ cross-env@^7.0.2: dependencies: cross-spawn "^7.0.1" -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2206,52 +2611,37 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: - assert-plus "^1.0.0" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +cssstyle@^4.2.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.6.0.tgz#ea18007024e3167f4f105315f3ec2d982bf48ed9" + integrity sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg== dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + "@asamuzakjp/css-color" "^3.2.0" + rrweb-cssom "^0.8.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +data-urls@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" + integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== dependencies: - ms "^2.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "2.0.0" + ms "2.1.2" debug@^3.2.7: version "3.2.7" @@ -2260,75 +2650,63 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" - integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== +debug@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decimal.js@^10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" + integrity sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +dedent@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" + integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" +deepmerge@^4.2.2, deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: - is-descriptor "^0.1.0" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - is-descriptor "^1.0.0" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== +define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" -detect-newline@^3.0.0: +detect-newline@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2350,49 +2728,45 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" +electron-to-chromium@^1.4.648: + version "1.4.656" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz#b374fb7cab9b782a5bc967c0ce0e19826186b9c9" + integrity sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q== -electron-to-chromium@^1.3.723: - version "1.3.742" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.742.tgz#7223215acbbd3a5284962ebcb6df85d88b95f200" - integrity sha512-ihL14knI9FikJmH2XUIDdZFWJxvr14rPSdOhJ7PpS27xbz8qmaRwCwyg/bmFwjWKmWK9QyamiCZVCvXm5CH//Q== +electron-to-chromium@^1.5.173: + version "1.5.174" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.174.tgz#c7d273755d4dc9bc4f1d192f6f2092bee42771f3" + integrity sha512-HE43yYdUUiJVjewV2A9EP8o89Kb4AqMKplMQP2IxEPUws1Etu/ZkdsgUDabUZ/WmbP4ZbvJDOcunvbBUPPIfmw== -emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" +entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== error-ex@^1.3.1: version "1.3.2" @@ -2401,27 +2775,66 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: - call-bind "^1.0.2" + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" @@ -2437,10 +2850,15 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" @@ -2452,75 +2870,71 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" - integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== +eslint-config-prettier@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: - debug "^2.6.9" - resolve "^1.13.1" + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-module-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" - integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" - pkg-dir "^2.0.0" -eslint-plugin-import@2.23.4: - version "2.23.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" - integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== +eslint-plugin-import@2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: - array-includes "^3.1.3" - array.prototype.flat "^1.2.4" - debug "^2.6.9" + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.1" - find-up "^2.0.0" - has "^1.0.3" - is-core-module "^2.4.0" - minimatch "^3.0.4" - object.values "^1.1.3" - pkg-up "^2.0.0" - read-pkg-up "^3.0.0" - resolve "^1.20.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jest@24.3.6: - version "24.3.6" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz#5f0ca019183c3188c5ad3af8e80b41de6c8e9173" - integrity sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg== - dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-jest@27.6.3: + version "27.6.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.3.tgz#8acb8b1e45597fe1f4d4cf25163d90119efc12be" + integrity sha512-+YsJFVH6R+tOiO3gCJon5oqn4KWc+mDq2leudk8mrp8RFubLOo9CVyi3cib4L7XMpxExmkmBZQTPDYVBzgpgOA== + dependencies: + "@typescript-eslint/utils" "^5.10.0" + +eslint-plugin-prettier-doc@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier-doc/-/eslint-plugin-prettier-doc-1.1.0.tgz#ebf679b480e6048e90d5b152e6043714780bb4e6" + integrity sha512-ytzztiiqobTeYLqdRnv+dgowcb63gFFy31RekPeVPB6YOshwuGKJVKPdkq/mYtwsJ+eDtLiHksfwH5/M5nU09g== -eslint-plugin-prettier@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" - integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== +eslint-plugin-prettier@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.6" -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -2528,86 +2942,93 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint@7.28.0: - version "7.28.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820" - integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" - ajv "^6.10.0" + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@8.57.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -2618,137 +3039,57 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== - -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" - integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" strip-final-newline "^2.0.0" -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" +exit-x@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/exit-x/-/exit-x-0.2.2.tgz#1f9052de3b8d99a696b10dad5bced9bdd5c3aa64" + integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= +expect@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.3.tgz#8bf31a67514f78c5e4ac8d67774192ab95d5ec25" + integrity sha512-HXg6NvK35/cSYZCUKAtmlgCFyqKM4frEPbzrav5hRqb0GMz0E0lS5hfzYjSaiaE5ysnp/qI2aeZkeyeIAOeXzQ== dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + "@jest/expect-utils" "30.0.3" + "@jest/get-type" "30.0.1" + jest-matcher-utils "30.0.3" + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-util "30.0.2" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -2760,39 +3101,38 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.1.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== +fb-watchman@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" @@ -2803,16 +3143,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2820,12 +3150,12 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: - locate-path "^2.0.0" + to-regex-range "^5.0.1" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" @@ -2835,6 +3165,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -2844,117 +3182,150 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" - integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" + cross-spawn "^7.0.6" + signal-exit "^4.0.1" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= +foreground-child@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== dependencies: - map-cache "^0.2.2" + cross-spawn "^7.0.0" + signal-exit "^4.0.1" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== +fsevents@^2.3.3, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== +get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: - pump "^3.0.0" + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== +get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - pump "^3.0.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: - assert-plus "^1.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -glob-parent@^5.1.0, glob-parent@^5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10, glob@^10.4.1: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2963,205 +3334,183 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.6.0, globals@^13.9.0: - version "13.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== +globals@^13.19.0: + version "13.19.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" + integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== dependencies: type-fest "^0.20.2" -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.1.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= +graceful-fs@^4.2.11: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-values@^1.0.0: +has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + has-symbols "^1.0.2" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hasown@^2.0.0, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== dependencies: - whatwg-encoding "^1.0.5" + whatwg-encoding "^3.1.1" html-escaper@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.1.tgz#beed86b5d2b921e92533aa11bce6d8e3b583dee7" - integrity sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ== - -http-proxy-agent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= +http-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + agent-base "^7.1.0" + debug "^4.3.4" -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== +https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: - agent-base "6" + agent-base "^7.1.2" debug "4" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ignore-walk@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - minimatch "^3.0.4" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + safer-buffer ">= 2.1.2 < 3.0.0" -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== +import-local@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -3174,7 +3523,7 @@ imurmurhash@^0.1.4: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" @@ -3184,24 +3533,32 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= +is-array-buffer@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a" + integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ== dependencies: - kind-of "^3.0.2" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-typed-array "^1.1.10" -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== +is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: - kind-of "^6.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" is-arrayish@^0.2.1: version "0.2.1" @@ -3209,99 +3566,50 @@ is-arrayish@^0.2.1: integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-bigint@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" - integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" is-boolean-object@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" - integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-callable@^1.1.3, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-callable@^1.1.4: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.2.0, is-core-module@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= +is-core-module@^2.13.0, is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: - kind-of "^3.0.2" + hasown "^2.0.2" -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - kind-of "^6.0.0" + hasown "^2.0.0" is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: - is-plain-object "^2.0.4" + has-tostringtag "^1.0.0" is-extglob@^2.1.1: version "2.1.1" @@ -3313,172 +3621,152 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-fn@^2.0.0: +is-generator-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.0, is-glob@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" - integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== dependencies: - kind-of "^3.0.2" + has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-reference@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" - integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== +is-reference@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: - "@types/estree" "0.0.39" + "@types/estree" "*" -is-regex@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" - integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" - has-symbols "^1.0.2" + has-tostringtag "^1.0.0" -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: - has-symbols "^1.0.1" + has-tostringtag "^1.0.0" -is-symbol@^1.0.3: +is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-typed-array@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - is-docker "^2.0.0" + call-bind "^1.0.2" -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" - integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== +istanbul-lib-instrument@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" + integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== dependencies: - "@babel/core" "^7.7.5" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" -istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-instrument@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" istanbul-lib-report@^3.0.0: version "3.0.0" @@ -3489,433 +3777,442 @@ istanbul-lib-report@^3.0.0: make-dir "^3.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== +istanbul-lib-report@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^5.0.0: + version "5.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== dependencies: + "@jridgewell/trace-mapping" "^0.3.23" debug "^4.1.1" istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== +istanbul-reports@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== +istanbul-reports@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" + "@isaacs/cliui" "^8.0.2" optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@pkgjs/parseargs" "^0.11.0" + +jest-changed-files@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.0.2.tgz#2c275263037f8f291b71cbb0a4f639c519ab7eb8" + integrity sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA== + dependencies: + execa "^5.1.1" + jest-util "30.0.2" + p-limit "^3.1.0" + +jest-circus@30.0.3, jest-circus@^30.0.0: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.3.tgz#d2de4adb92cfdbce18668e27176c1b9f79afdf5a" + integrity sha512-rD9qq2V28OASJHJWDRVdhoBdRs6k3u3EmBzDYcyuMby8XCO3Ll1uq9kyqM41ZcC4fMiPulMVh3qMw0cBvDbnyg== + dependencies: + "@jest/environment" "30.0.2" + "@jest/expect" "30.0.3" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" + chalk "^4.1.2" co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" + dedent "^1.6.0" + is-generator-fn "^2.1.0" + jest-each "30.0.2" + jest-matcher-utils "30.0.3" + jest-message-util "30.0.2" + jest-runtime "30.0.3" + jest-snapshot "30.0.3" + jest-util "30.0.2" + p-limit "^3.1.0" + pretty-format "30.0.2" + pure-rand "^7.0.0" + slash "^3.0.0" + stack-utils "^2.0.6" + +jest-cli@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.3.tgz#2340b69c580c471fd9f4a197f969025a545608dd" + integrity sha512-UWDSj0ayhumEAxpYRlqQLrssEi29kdQ+kddP94AuHhZknrE+mT0cR0J+zMHKFe9XPfX3dKQOc2TfWki3WhFTsA== + dependencies: + "@jest/core" "30.0.3" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" + chalk "^4.1.2" + exit-x "^0.2.2" + import-local "^3.2.0" + jest-config "30.0.3" + jest-util "30.0.2" + jest-validate "30.0.2" + yargs "^17.7.2" + +jest-config@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.3.tgz#978853722b9b0f2d0596025ea423cc6c7b603c07" + integrity sha512-j0L4oRCtJwNyZktXIqwzEiDVQXBbQ4dqXuLD/TZdn++hXIcIfZmjHgrViEy5s/+j4HvITmAXbexVZpQ/jnr0bg== + dependencies: + "@babel/core" "^7.27.4" + "@jest/get-type" "30.0.1" + "@jest/pattern" "30.0.1" + "@jest/test-sequencer" "30.0.2" + "@jest/types" "30.0.1" + babel-jest "30.0.2" + chalk "^4.1.2" + ci-info "^4.2.0" + deepmerge "^4.3.1" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-circus "30.0.3" + jest-docblock "30.0.1" + jest-environment-node "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-runner "30.0.3" + jest-util "30.0.2" + jest-validate "30.0.2" + micromatch "^4.0.8" + parse-json "^5.2.0" + pretty-format "30.0.2" slash "^3.0.0" - stack-utils "^2.0.2" + strip-json-comments "^3.1.1" -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" +jest-diff@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.3.tgz#50ac056b90fe9151d6266b18a27adeb064c30235" + integrity sha512-Q1TAV0cUcBTic57SVnk/mug0/ASyAqtSIOkr7RAlxx97llRYsM74+E8N5WdGJUlwCKwgxPAkVjKh653h1+HA9A== + dependencies: + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.0.1" + chalk "^4.1.2" + pretty-format "30.0.2" + +jest-docblock@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.0.1.tgz#545ff59f2fa88996bd470dba7d3798a8421180b1" + integrity sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA== + dependencies: + detect-newline "^3.1.0" + +jest-each@30.0.2, jest-each@^30.0.0: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.2.tgz#402e189784715f5c76f1bb97c29842e79abe99a1" + integrity sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ== + dependencies: + "@jest/get-type" "30.0.1" + "@jest/types" "30.0.1" + chalk "^4.1.2" + jest-util "30.0.2" + pretty-format "30.0.2" + +jest-environment-jsdom@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.0.2.tgz#8f0eb3544ba5abb8de71a2be42b5a95f04485e91" + integrity sha512-lwMpe7hZ81e2PpHj+4nowAzSkC0p8ftRfzC+qEjav9p5ElCs6LAce3y46iLwMS27oL9+/KQe55gUvUDwrlDeJQ== + dependencies: + "@jest/environment" "30.0.2" + "@jest/environment-jsdom-abstract" "30.0.2" + "@types/jsdom" "^21.1.7" "@types/node" "*" + jsdom "^26.1.0" -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" - -jest-runner-eslint@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/jest-runner-eslint/-/jest-runner-eslint-0.10.0.tgz#5d7197d1e982b2cceea9e65f078dc371cc4a9815" - integrity sha512-XXKz2hMLGvyH50i29UcNQDQY2Sj1hLuCn7H3otMdeOB2LOzdHXXif3RXX+8m/eAewflB5RqqqlF1K7FozYZKrg== +jest-environment-node@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.0.2.tgz#3c24d6becb505f344f52cddb15ea506cf3288543" + integrity sha512-XsGtZ0H+a70RsxAQkKuIh0D3ZlASXdZdhpOSBq9WRPq6lhe0IoQHGW0w9ZUaPiZQ/CpkIdprvlfV1QcXcvIQLQ== dependencies: - chalk "^3.0.0" - cosmiconfig "^6.0.0" - create-jest-runner "^0.6.0" + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" + "@types/node" "*" + jest-mock "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== +jest-haste-map@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.2.tgz#83826e7e352fa139dc95100337aff4de58c99453" + integrity sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" + anymatch "^3.1.3" + fb-watchman "^2.0.2" + graceful-fs "^4.2.11" + jest-regex-util "30.0.1" + jest-util "30.0.2" + jest-worker "30.0.2" + micromatch "^4.0.8" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.3" + +jest-leak-detector@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz#da4df660615d170136d2b468af3bf1c9bff0137e" + integrity sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ== + dependencies: + "@jest/get-type" "30.0.1" + pretty-format "30.0.2" + +jest-light-runner@^0.7.9: + version "0.7.9" + resolved "https://registry.yarnpkg.com/jest-light-runner/-/jest-light-runner-0.7.9.tgz#ba899ec712e52fd0c239d3846bfc061ccdc028b2" + integrity sha512-KlgZvwca6IlRYtpmy+fdgEAi+LP+TjqH96TrAw+56wF8A3JZpW/IzWaukqB4vPVcG8v4y7EF0AMJgZ8u4H6Yew== + dependencies: + "@jest/expect" "^30.0.0" + "@jest/fake-timers" "^30.0.0" + jest-circus "^30.0.0" + jest-each "^30.0.0" + jest-mock "^30.0.0" + jest-snapshot "^30.0.0" + p-limit "^6.2.0" + supports-color "^9.2.1" + tinypool "0.8.4" + +jest-matcher-utils@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.3.tgz#e07e4776bade71a3a7948a9bf8aeede311c5013a" + integrity sha512-hMpVFGFOhYmIIRGJ0HgM9htC5qUiJ00famcc9sRFchJJiLZbbVKrAztcgE6VnXLRxA3XZ0bvNA7hQWh3oHXo/A== + dependencies: + "@jest/get-type" "30.0.1" + chalk "^4.1.2" + jest-diff "30.0.3" + pretty-format "30.0.2" + +jest-message-util@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.2.tgz#9dfdc37570d172f0ffdc42a0318036ff4008837f" + integrity sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@jest/types" "30.0.1" + "@types/stack-utils" "^2.0.3" + chalk "^4.1.2" + graceful-fs "^4.2.11" + micromatch "^4.0.8" + pretty-format "30.0.2" slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" + stack-utils "^2.0.6" -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== +jest-mock@30.0.2, jest-mock@^30.0.0: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.2.tgz#5e4245f25f6f9532714906cab10a2b9e39eb2183" + integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA== dependencies: + "@jest/types" "30.0.1" "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot-serializer-raw@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/jest-snapshot-serializer-raw/-/jest-snapshot-serializer-raw-1.2.0.tgz#cd67afb5e5cc39d88d518b45e7320dd01ce55148" - integrity sha512-Cnp2u7GkaXBVOOelhU94x6Kb/10WJjQtgKDvqynnYGNGQlKBj06x8QZmRkL8XWWVLQ5DKA2fT5rY9kRd512JcA== - -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" + jest-util "30.0.2" -jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" +jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + +jest-resolve-dependencies@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.3.tgz#8278f54a84009028b823f5c1f7033fb968405b2f" + integrity sha512-FlL6u7LiHbF0Oe27k7DHYMq2T2aNpPhxnNo75F7lEtu4A6sSw+TKkNNUGNcVckdFoL0RCWREJsC1HsKDwKRZzQ== + dependencies: + jest-regex-util "30.0.1" + jest-snapshot "30.0.3" + +jest-resolve@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.2.tgz#4b7c826a35e9657189568e4dafc0ba5f05868cf2" + integrity sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw== + dependencies: + chalk "^4.1.2" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-pnp-resolver "^1.2.3" + jest-util "30.0.2" + jest-validate "30.0.2" + slash "^3.0.0" + unrs-resolver "^1.7.11" + +jest-runner@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.3.tgz#baa1d5e77655c70cea9aa4138cfb437f6bada607" + integrity sha512-CxYBzu9WStOBBXAKkLXGoUtNOWsiS1RRmUQb6SsdUdTcqVncOau7m8AJ4cW3Mz+YL1O9pOGPSYLyvl8HBdFmkQ== + dependencies: + "@jest/console" "30.0.2" + "@jest/environment" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + chalk "^4.1.2" + emittery "^0.13.1" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-docblock "30.0.1" + jest-environment-node "30.0.2" + jest-haste-map "30.0.2" + jest-leak-detector "30.0.2" + jest-message-util "30.0.2" + jest-resolve "30.0.2" + jest-runtime "30.0.3" + jest-util "30.0.2" + jest-watcher "30.0.2" + jest-worker "30.0.2" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.3.tgz#1eb112924426e8b90c37f0ea7da1b51966e252bf" + integrity sha512-Xjosq0C48G9XEQOtmgrjXJwPaUPaq3sPJwHDRaiC+5wi4ZWxO6Lx6jNkizK/0JmTulVNuxP8iYwt77LGnfg3/w== + dependencies: + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/globals" "30.0.3" + "@jest/source-map" "30.0.1" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" + chalk "^4.1.2" + cjs-module-lexer "^2.1.0" + collect-v8-coverage "^1.0.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-snapshot "30.0.3" + jest-util "30.0.2" + slash "^3.0.0" + strip-bom "^4.0.0" -jest-worker@^25.1.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" +jest-snapshot-serializer-raw@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jest-snapshot-serializer-raw/-/jest-snapshot-serializer-raw-2.0.0.tgz#c2be865a20feb2b4d9fa4bbac8c48ce1c6dbfa10" + integrity sha512-E/gWFBAltOPQVAvafH/zYkob3G/TqL/DFG3fHurinwLcFRkz6kASjuihyJJ6zoizlLUNaiOdS3v5ZflTvifpBA== + +jest-snapshot@30.0.3, jest-snapshot@^30.0.0: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.3.tgz#f605254223eee0946d205c6e7ede7238e87be920" + integrity sha512-F05JCohd3OA1N9+5aEPXA6I0qOfZDGIx0zTq5Z4yMBg2i1p5ELfBusjYAWwTkC12c7dHcbyth4QAfQbS7cRjow== + dependencies: + "@babel/core" "^7.27.4" + "@babel/generator" "^7.27.5" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/types" "^7.27.3" + "@jest/expect-utils" "30.0.3" + "@jest/get-type" "30.0.1" + "@jest/snapshot-utils" "30.0.1" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" + babel-preset-current-node-syntax "^1.1.0" + chalk "^4.1.2" + expect "30.0.3" + graceful-fs "^4.2.11" + jest-diff "30.0.3" + jest-matcher-utils "30.0.3" + jest-message-util "30.0.2" + jest-util "30.0.2" + pretty-format "30.0.2" + semver "^7.7.2" + synckit "^0.11.8" + +jest-util@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.2.tgz#1bd8411f81e6f5e2ca8b31bb2534ebcd7cbac065" + integrity sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg== + dependencies: + "@jest/types" "30.0.1" + "@types/node" "*" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" + +jest-validate@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.0.2.tgz#f62a2f0e014dac94747509ba8c2bcd5d48215b7f" + integrity sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ== + dependencies: + "@jest/get-type" "30.0.1" + "@jest/types" "30.0.1" + camelcase "^6.3.0" + chalk "^4.1.2" + leven "^3.1.0" + pretty-format "30.0.2" -jest-worker@^26.2.1: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" - integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== +jest-watcher@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.2.tgz#ec93ed25183679f549a47f6197267d50ec83ea51" + integrity sha512-vYO5+E7jJuF+XmONr6CrbXdlYrgvZqtkn6pdkgjt/dU64UAdc0v1cAVaAeWtAfUUMScxNmnUjKPUMdCpNVASwg== dependencies: + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + emittery "^0.13.1" + jest-util "30.0.2" + string-length "^4.0.2" -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== +jest-worker@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.2.tgz#e67bd7debbc9d8445907a17067a89359acedc8c5" + integrity sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg== dependencies: "@types/node" "*" + "@ungap/structured-clone" "^1.3.0" + jest-util "30.0.2" merge-stream "^2.0.0" - supports-color "^7.0.0" + supports-color "^8.1.1" -jest@26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" - integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== +jest@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.3.tgz#fc3b6b370e2820d718ea299d159a7ba4637dbd35" + integrity sha512-Uy8xfeE/WpT2ZLGDXQmaYNzw2v8NUKuYeKGtkS6sDxwsdQihdgYCXaKIYnph1h95DN5H35ubFDm0dfmsQnjn4Q== dependencies: - "@jest/core" "^26.6.3" - import-local "^3.0.2" - jest-cli "^26.6.3" + "@jest/core" "30.0.3" + "@jest/types" "30.0.1" + import-local "^3.2.0" + jest-cli "30.0.3" js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.14.1, js-yaml@^3.13.1: +js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -3923,135 +4220,90 @@ js-yaml@3.14.1, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.4.0: - version "16.4.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== - dependencies: - abab "^2.0.3" - acorn "^7.1.1" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.2.0" - data-urls "^2.0.0" - decimal.js "^10.2.0" - domexception "^2.0.1" - escodegen "^1.14.1" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-26.1.0.tgz#ab5f1c1cafc04bd878725490974ea5e8bf0c72b3" + integrity sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg== + dependencies: + cssstyle "^4.2.1" + data-urls "^5.0.0" + decimal.js "^10.5.0" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.6" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.16" + parse5 "^7.2.1" + rrweb-cssom "^0.8.0" + saxes "^6.0.0" symbol-tree "^3.2.4" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" - xml-name-validator "^3.0.0" + tough-cookie "^5.1.1" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.1.1" + ws "^8.18.0" + xml-name-validator "^5.0.0" jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" json5@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" - integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== - dependencies: - minimist "^1.2.5" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== leven@^3.1.0: version "3.1.0" @@ -4066,41 +4318,15 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -linguist-languages@^7.5.1: - version "7.15.0" - resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-7.15.0.tgz#a93bed6b93015d8133622cb05da6296890862bfa" - integrity sha512-qkSSNDjDDycZ2Wcw+GziNBB3nNo3ddYUInM/PL8Amgwbd9RQ/BKGj2/1d6mdxKgBFnUqZuaDbkIwkE4KUwwmtQ== - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" +linguist-languages@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-8.0.0.tgz#0ca116ca26bafcf0dd4780c8718aa3b8c0435fa8" + integrity sha512-qfzYmWmM/HOsrO/6YwN2f1DD39p3ObSuq8YgF9JLY9toQO39ZsPBPJoWwTtrqRvhkG+cQUgCOS9h/xRgwfqLxQ== locate-path@^5.0.0: version "5.0.0" @@ -4109,35 +4335,34 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= +lru-cache@^10.2.0, lru-cache@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== -lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" lru-cache@^6.0.0: version "6.0.0" @@ -4146,384 +4371,247 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@^0.25.2, magic-string@^0.25.3: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== +magic-string@^0.30.3: + version "0.30.17" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== dependencies: - sourcemap-codec "^1.4.4" + "@jridgewell/sourcemap-codec" "^1.5.0" make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-age-cleaner@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: - object-visit "^1.0.0" + semver "^7.5.3" -mem@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" - integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^3.1.0" + tmpl "1.0.5" merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: braces "^3.0.1" - picomatch "^2.0.5" - -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + picomatch "^2.2.3" -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: - mime-db "1.43.0" + braces "^3.0.3" + picomatch "^2.3.1" mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-fn@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" - integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" + brace-expansion "^2.0.1" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" +ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +napi-postinstall@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.2.4.tgz#419697d0288cb524623e422f919624f22a5e4028" + integrity sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -node-notifier@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" - integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -node-releases@^1.1.71: - version "1.1.72" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" - integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +nwsapi@^2.2.16: + version "2.2.20" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.20.tgz#22e53253c61e7b0e7e93cef42c891154bcca11ef" + integrity sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA== -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-inspect@^1.9.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: - isobject "^3.0.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" -object.values@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" - integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" p-limit@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-6.2.0.tgz#c254d22ba6aeef441a3564c5e6c2f2da59268a0f" + integrity sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA== dependencies: - p-limit "^1.1.0" + yocto-queue "^1.1.1" p-locate@^4.1.0: version "4.1.0" @@ -4532,16 +4620,23 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -4549,38 +4644,29 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +parse5@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746" + integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== + dependencies: + entities "^4.4.0" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +parse5@^7.2.1: + version "7.3.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== + dependencies: + entities "^6.0.0" path-exists@^4.0.0: version "4.0.0" @@ -4592,65 +4678,58 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: - pify "^3.0.0" + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +php-parser@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/php-parser/-/php-parser-3.2.5.tgz#24ff4b4f3e1788967f7737e43c273a5a8e7cd0ac" + integrity sha512-M1ZYlALFFnESbSdmRtTQrBFUHSriHgPhgqtTF/LCbZM4h7swR5PHtUceB2Kzby5CfqcsYwBn7OXTJ0+8Sajwkw== -"php-parser@https://github.com/glayzzle/php-parser#bb89fff9e636a991aa3ac931d5f8a66a365fccce": - version "3.0.2" - resolved "https://github.com/glayzzle/php-parser#bb89fff9e636a991aa3ac931d5f8a66a365fccce" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" +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== -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" +pirates@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== pkg-dir@^4.2.0: version "4.2.0" @@ -4659,28 +4738,11 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -4688,61 +4750,39 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +prettier@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.1.tgz#cc3bce21c09a477b1e987b76ce9663925d86ae44" + integrity sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A== -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== +pretty-format@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.2.tgz#54717b6aa2b4357a2e6d83868e10a2ea8dd647c7" + integrity sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg== dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" + "@jest/schemas" "30.0.1" + ansi-styles "^5.2.0" + react-is "^18.3.1" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pure-rand@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-7.0.1.tgz#6f53a5a9e3e4a47445822af96821ca509ed37566" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== randombytes@^2.1.0: version "2.1.0" @@ -4751,181 +4791,87 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" +react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" + regenerate "^1.4.2" -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== dependencies: - regenerate "^1.4.0" + regenerate "^1.4.2" -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: - "@babel/runtime" "^7.8.4" - private "^0.1.8" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.12.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" + jsesc "~3.0.2" -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -4943,135 +4889,64 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.3.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== +resolve@^1.14.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +resolve@^1.22.1: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup-plugin-alias@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-2.2.0.tgz#5004a2bc542a2eebb45b5a0fff8c6f540439decc" - integrity sha512-9ZK410qeFed4gGrHoojBpxLsHF74vPgsheGg9JRW5RbALAxqdvJbd357mSqWBqUrBfRVnZnNUXTZdYLxxQEA5A== - dependencies: - slash "^3.0.0" - -rollup-plugin-babel@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-commonjs@^10.0.2: - version "10.1.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" - integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== - dependencies: - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-inject@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4" - integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== - dependencies: - estree-walker "^0.6.1" - magic-string "^0.25.3" - rollup-pluginutils "^2.8.1" - -rollup-plugin-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" - integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== - dependencies: - rollup-pluginutils "^2.5.0" - -rollup-plugin-node-resolve@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" - integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - rollup-pluginutils "^2.8.1" - -rollup-plugin-replace@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3" - integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA== - dependencies: - magic-string "^0.25.2" - rollup-pluginutils "^2.6.0" - -rollup-plugin-terser@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.6.0, rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - estree-walker "^0.6.1" + glob "^7.1.3" -rollup@^2.7.5: - version "2.52.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.52.0.tgz#9df3de6028fae79569a985942b81110205a5a411" - integrity sha512-lSkBDGsVoXjqaBf7dsHwxBJz+p+hJEP72P+LOitA0yVs+Nzxj76FidkZE2thrmhjwGqLYiJo39opi7mAfaQ/Vg== +rollup@^3.28.1: + version "3.29.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54" + integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w== optionalDependencies: fsevents "~2.3.2" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +rrweb-cssom@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" + integrity sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw== run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" safe-buffer@^5.1.0: version "5.2.1" @@ -5083,90 +4958,69 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: - ret "~0.1.10" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -saxes@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.2: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== +semver@^7.3.5, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +semver@^7.7.2: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: - shebang-regex "^1.0.0" + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" shebang-command@^2.0.0: version "2.0.0" @@ -5175,238 +5029,155 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" +smob@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/smob/-/smob-1.4.1.tgz#66270e7df6a7527664816c5b577a23f17ba6f5b5" + integrity sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ== -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" + buffer-from "^1.0.0" + source-map "^0.6.0" -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== +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== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== +stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= +string-length@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -stream-events@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" - integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - stubs "^3.0.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1, strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.0" + ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" @@ -5418,26 +5189,16 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +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" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -stubs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" - integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls= - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -5445,65 +5206,59 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" - supports-color "^7.0.0" + +supports-color@^9.2.1: + version "9.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954" + integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -teeny-request@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c" - integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw== +synckit@^0.11.8: + version "0.11.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457" + integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== dependencies: - http-proxy-agent "^4.0.0" - https-proxy-agent "^5.0.0" - node-fetch "^2.6.1" - stream-events "^1.0.5" - uuid "^8.0.0" + "@pkgr/core" "^0.2.4" -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" -terser@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.0.tgz#c481f4afecdcc182d5e2bdd2ff2dc61555161e81" - integrity sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg== +terser@^5.17.4: + version "5.21.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" + integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map-support "~0.5.20" test-exclude@^6.0.0: version "6.0.0" @@ -5514,40 +5269,46 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +test-exclude@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2" + integrity sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^10.4.1" + minimatch "^9.0.4" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +tinypool@0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.4.tgz#e217fe1270d941b39e98c625dcecebb1408c9aa8" + integrity sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ== -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +tldts-core@^6.1.86: + version "6.1.86" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-6.1.86.tgz#a93e6ed9d505cb54c542ce43feb14c73913265d8" + integrity sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA== + +tldts@^6.1.32: + version "6.1.86" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-6.1.86.tgz#087e0555b31b9725ee48ca7e77edc56115cd82f7" + integrity sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ== + dependencies: + tldts-core "^6.1.86" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" @@ -5556,73 +5317,51 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== +tough-cookie@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-5.1.2.tgz#66d774b4a1d9e12dc75089725af3ac75ec31bed7" + integrity sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A== dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" + tldts "^6.1.32" -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== +tr46@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.1.1.tgz#96ae867cddb8fdb64a49cc3059a8d428bcf238ca" + integrity sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== dependencies: - punycode "^2.1.1" + punycode "^2.3.1" -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.0" + json5 "^1.0.2" + minimist "^1.2.6" strip-bom "^3.0.0" tslib@^1.8.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" +tslib@^2.4.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" +tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -5631,210 +5370,199 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== dependencies: - is-typedarray "^1.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" -unbox-primitive@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" -unicode-match-property-ecmascript@^1.0.4: +typed-array-length@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -urlgrey@0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" - integrity sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8= + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.0.0, uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== -v8-compile-cache@^2.0.3: +unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -v8-to-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" - integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== +unrs-resolver@^1.7.11: + version "1.9.2" + resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.9.2.tgz#1a7c73335a5e510643664d7bb4bb6f5c28782e36" + integrity sha512-VUyWiTNQD7itdiMuJy+EuLEErLj3uwX/EpHQF8EOf33Dq3Ju6VW1GXm+swk6+1h7a49uv9fKZ+dft9jU7esdLA== dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + napi-postinstall "^0.2.4" + optionalDependencies: + "@unrs/resolver-binding-android-arm-eabi" "1.9.2" + "@unrs/resolver-binding-android-arm64" "1.9.2" + "@unrs/resolver-binding-darwin-arm64" "1.9.2" + "@unrs/resolver-binding-darwin-x64" "1.9.2" + "@unrs/resolver-binding-freebsd-x64" "1.9.2" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.2" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.2" + "@unrs/resolver-binding-linux-arm64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-arm64-musl" "1.9.2" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-riscv64-musl" "1.9.2" + "@unrs/resolver-binding-linux-s390x-gnu" "1.9.2" + "@unrs/resolver-binding-linux-x64-gnu" "1.9.2" + "@unrs/resolver-binding-linux-x64-musl" "1.9.2" + "@unrs/resolver-binding-wasm32-wasi" "1.9.2" + "@unrs/resolver-binding-win32-arm64-msvc" "1.9.2" + "@unrs/resolver-binding-win32-ia32-msvc" "1.9.2" + "@unrs/resolver-binding-win32-x64-msvc" "1.9.2" + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" + escalade "^3.1.1" + picocolors "^1.0.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + escalade "^3.2.0" + picocolors "^1.1.1" -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - browser-process-hrtime "^1.0.0" + punycode "^2.1.0" -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== +v8-to-istanbul@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== dependencies: - xml-name-validator "^3.0.0" + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: - makeerror "1.0.x" + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" -webidl-conversions@^5.0.0: +w3c-xmlserializer@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== + dependencies: + xml-name-validator "^5.0.0" -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== dependencies: - iconv-lite "0.4.24" + iconv-lite "0.6.3" -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== -whatwg-url@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" - integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== +whatwg-url@^14.0.0, whatwg-url@^14.1.1: + version "14.2.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.2.0.tgz#4ee02d5d725155dae004f6ae95c73e7ef5d95663" + integrity sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^5.0.0" + tr46 "^5.1.0" + webidl-conversions "^7.0.0" which-boxed-primitive@^1.0.2: version "1.0.2" @@ -5847,113 +5575,118 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +which-typed-array@^1.1.11, which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: - isexe "^2.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== +write-file-atomic@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" + signal-exit "^4.0.1" -ws@^7.2.3: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@^8.18.0: + version "8.18.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" + integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.7.2: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" -yarpm@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/yarpm/-/yarpm-1.1.1.tgz#23e25e512b409d941524a9674718f1871e5fb52a" - integrity sha512-A3gVdtyld+gYcVmKScvJqS2oT/i9xdsb/SqDsY9c0+BeYdYBUJrRfr4pD7UP+5uXEneJ0BL0rC/6rd1fnlYEcg== - dependencies: - command-exists "^1.2.9" - cross-spawn "^7.0.3" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.2.1.tgz#36d7c4739f775b3cbc28e6136e21aa057adec418" + integrity sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==