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 57ebe9628..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. @@ -46,6 +47,7 @@ If you want to use the plugin in production, we recommend limiting its scope to ### Input ```php +"code","with"=> @@ -56,6 +58,8 @@ array_map(function($arg1,$arg2) use ( $var1, $var2 ) { ### Output ```php + '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 @@ -210,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 @@ -224,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 5f6285ad0..bb2c4c42e 100644 --- a/package.json +++ b/package.json @@ -1,57 +1,86 @@ { "name": "@prettier/plugin-php", - "version": "0.14.3", + "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": "^6.0.1", - "php-parser": "glayzzle/php-parser#5a0e2e1bf12517bd1c544c0f4e68482d0362a7b5" + "linguist-languages": "^8.0.0", + "php-parser": "^3.2.5" }, "devDependencies": { - "@babel/preset-env": "^7.7.5", - "codecov": "3.7.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.8.1", - "eslint-config-prettier": "6.11.0", - "eslint-plugin-import": "2.22.0", - "eslint-plugin-jest": "23.20.0", - "eslint-plugin-prettier": "3.1.4", - "jest": "26.4.2", - "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": "^5.1.1", - "strip-ansi": "^6.0.0", - "yarpm": "^0.2.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 77% rename from src/clean.js rename to src/clean.mjs index 70ac4c6f3..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,32 +24,13 @@ 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; } - if (node.kind === "array") { + if (["array", "list"].includes(node.kind)) { // TODO if options are available in this method, assign instead of delete delete newObj.shortForm; } @@ -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 056e9c461..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 @@ -497,10 +487,26 @@ function handleClassComments(enclosingNode, followingNode, comment) { return true; } } + + if ( + followingNode && + followingNode.kind === "class" && + followingNode.isAnonymous && + followingNode.leadingComments && + comment.kind === "commentblock" + ) { + return true; + } return false; } -function handleFunction(text, enclosingNode, followingNode, comment, options) { +function handleFunction( + text, + enclosingNode, + followingNode, + comment + /* options */ +) { if ( enclosingNode && (enclosingNode.kind === "function" || enclosingNode.kind === "method") @@ -511,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 ")" @@ -531,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. @@ -602,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) !== ")") { @@ -783,8 +792,8 @@ function handleWhileComments( precedingNode, enclosingNode, followingNode, - comment, - options + comment + /* options */ ) { if (!enclosingNode || enclosingNode.kind !== "while" || !followingNode) { return false; @@ -797,8 +806,7 @@ function handleWhileComments( const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); const nextCharacter = text.charAt(nextCharIndex); @@ -815,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(); @@ -831,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"); @@ -850,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) { @@ -861,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)) ) ); } @@ -880,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) { @@ -894,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) { @@ -926,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, }) ) { @@ -986,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); @@ -1016,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 77% rename from src/needs-parens.js rename to src/needs-parens.mjs index 7c73aa3c3..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,22 +187,34 @@ 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; } case "closure": - return parent.kind === "call" && name === "what" && parent.what === node; + switch (parent.kind) { + case "call": + return key === "what"; + + // https://github.com/prettier/plugin-php/issues/1675 + case "propertylookup": + case "nullsafepropertylookup": + return true; + + default: + return false; + } case "silence": case "cast": // TODO: bug https://github.com/glayzzle/php-parser/issues/172 @@ -215,6 +224,7 @@ function needsParens(path) { case "array": switch (parent.kind) { case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": case "call": @@ -225,7 +235,7 @@ function needsParens(path) { return false; } - return name === "what" && parent.what === node; + return key === "what"; default: return false; } @@ -237,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 963046985..000000000 --- a/src/options.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; - -const CATEGORY_PHP = "PHP"; - -module.exports = { - phpVersion: { - since: "0.13.0", - category: CATEGORY_PHP, - type: "choice", - default: "5.4", - 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" }, - ], - }, - 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 62% rename from src/printer.js rename to src/printer.mjs index 27b7b0ef4..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,45 +121,40 @@ function genericPrint(path, options, print) { parts.push(hardline); } - return concat(parts); + return parts; +} + +function printPropertyLookup(path, options, print, nullsafe = false) { + return [nullsafe ? "?" : "", "->", print("offset")]; } -function printPropertyLookup(path, options, print) { - return concat(["->", path.call(print, "offset")]); +function printNullsafePropertyLookup(path, options, print) { + return printPropertyLookup(path, options, print, true); } 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 @@ -200,8 +203,7 @@ function printMemberChain(path, options, print) { const { originalText } = options; const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( originalText, - node, - options + locEnd(node) ); const nextChar = originalText.charAt(nextCharIndex); @@ -215,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" && @@ -227,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)) { @@ -243,6 +245,8 @@ function printMemberChain(path, options, print) { if (node.kind === "propertylookup") { printedMemberish = printPropertyLookup(path, options, print); + } else if (node.kind === "nullsafepropertylookup") { + printedMemberish = printNullsafePropertyLookup(path, options, print); } else if (node.kind === "staticlookup") { printedMemberish = printStaticLookup(path, options, print); } else { @@ -252,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, @@ -282,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, ")"]; } } @@ -370,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 = []; @@ -431,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); @@ -455,7 +454,7 @@ function printMemberChain(path, options, print) { } } - return concat(result); + return result; } function printIndentedGroup(groups) { @@ -463,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 // @@ -483,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"); @@ -514,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. @@ -532,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) { @@ -588,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; } @@ -619,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 } ); } @@ -662,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( [ @@ -696,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, } @@ -764,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 @@ -780,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, @@ -792,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) !== @@ -826,29 +811,31 @@ 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": return printPropertyLookup(path, options, print); + case "nullsafepropertylookup": + return printNullsafePropertyLookup(path, options, print); case "staticlookup": 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.`); } } @@ -866,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. @@ -912,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), @@ -938,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 && @@ -994,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) : ""; @@ -1027,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); @@ -1068,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( @@ -1145,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 "); @@ -1202,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` @@ -1216,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, @@ -1234,7 +1257,7 @@ function printClass(path, options, print) { hardline, node.implements.length > 1 ? hardline : " " ), - ]), + ], ], { shouldBreak: hasDanglingComments(node.extends), @@ -1277,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) { @@ -1333,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( @@ -1414,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( @@ -1471,7 +1492,7 @@ function printAssignment( options ); - return group(concat([printedLeft, operator, printed])); + return group([printedLeft, operator, printed]); } function isLookupNodeChain(node) { @@ -1495,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; @@ -1518,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) { @@ -1533,280 +1552,260 @@ 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": { - const name = concat([ + let promoted = ""; + if (node.flags === 1) { + promoted = "public "; + } else if (node.flags === 2) { + promoted = "protected "; + } else if (node.flags === 4) { + promoted = "private "; + } + 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); @@ -1821,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, @@ -1866,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; @@ -1874,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 : " " ); } @@ -1886,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") ) ); @@ -1894,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"); @@ -1986,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 = []; @@ -2036,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) { @@ -2046,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; @@ -2100,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 (...)))) @@ -2113,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 = @@ -2126,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 = []; @@ -2143,38 +2086,48 @@ function printNode(path, options, print) { if (isAnonymousClassNode) { parts.push( + node.what.leadingComments && + node.what.leadingComments[0].kind === "commentblock" + ? [printComments(node.what.leadingComments, options), " "] + : "", + ...path.call( + () => printAttrs(path, options, print, { inline: true }), + "what" + ), "class", node.arguments.length > 0 - ? 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++; @@ -2195,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; @@ -2297,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 = []; @@ -2321,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); } @@ -2329,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" && @@ -2370,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; @@ -2393,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); @@ -2430,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 ); @@ -2458,24 +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); - 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); @@ -2494,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 } ); } @@ -2533,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" || @@ -2621,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. @@ -2635,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 @@ -2664,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; @@ -2695,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); @@ -2729,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. // @@ -2760,39 +2654,47 @@ 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 = options.phpVersion >= 7.3; + let linebreak = literalline; if (parentParent.type === "heredoc") { - const lines = parentParent.raw.split(/\r?\n/g); + linebreak = flexible ? hardline : literalline; + const lines = parentParent.raw.split("\n"); closingTagIndentation = lines[lines.length - 1].search(/\S/); + if (closingTagIndentation === -1) { + closingTagIndentation = lines[lines.length - 2].search(/\S/); + } } return join( - literalline, + linebreak, node.raw - .split(/\r?\n/g) - .map((s) => s.substring(closingTagIndentation)) + .split("\n") + .map((s, i) => + i > 0 || node.loc.start.column === 0 + ? s.substring(closingTagIndentation) + : s + ) ); } @@ -2813,69 +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 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": - return concat([ + case "heredoc": { + const flexible = options.phpVersion >= 7.3; + const linebreak = flexible ? hardline : literalline; + return [ getEncapsedQuotes(node), // Respect `indent` for `heredoc` nodes - node.type === "heredoc" ? literalline : "", - concat(path.map(print, "value")), + node.type === "heredoc" ? linebreak : "", + ...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": @@ -2887,24 +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(() => { + 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 = + armNode.conds === null + ? "default" + : path.map( + ({ isFirst }) => [",", line, print()].slice(isFirst ? 2 : 0), + "conds" + ); + 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([ + "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 [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 77% rename from src/util.js rename to src/util.mjs index aa7fa368c..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); } @@ -580,29 +506,29 @@ function getNodeKindIncludingLogical(node) { } /** - * Check if string can safely be converted from double to single quotes, i.e. + * Check if string can safely be converted from double to single quotes and vice-versa, i.e. * * - no embedded variables ("foo $bar") * - no linebreaks * - no special characters like \n, \t, ... * - no octal/hex/unicode characters * - * See http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double + * See https://php.net/manual/en/language.types.string.php#language.types.string.syntax.double */ function useDoubleQuote(node, options) { - if (node.isDoubleQuote && options.singleQuote) { + if (node.isDoubleQuote === options.singleQuote) { + // We have a double quote and the user passed singleQuote:true, or the other way around. const rawValue = node.raw.slice(node.raw[0] === "b" ? 2 : 1, -1); - - return rawValue.match( - /\\([$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3}|u{([0-9a-fA-F]+)})|\r?\n|'|"/ + const isComplex = rawValue.match( + /\\([$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3}|u{([0-9a-fA-F]+)})|\r?\n|'|"|\$/ ); + return node.isDoubleQuote ? isComplex : !isComplex; } - return node.isDoubleQuote; } 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 77% rename from tests/array/__snapshots__/jsfmt.spec.js.snap rename to tests/array/__snapshots__/jsfmt.spec.mjs.snap index 4969bb14b..e5a1aa0c1 100644 --- a/tests/array/__snapshots__/jsfmt.spec.js.snap +++ b/tests/array/__snapshots__/jsfmt.spec.mjs.snap @@ -563,55 +563,55 @@ $test = [1, 2, 3, 4, "test"]; $test = [1, 2, 3, 4, "test"]; $test = [1, 2, 3, 4, "test"]; $other_test = [1, 2, 123.4324, $hi]; -$keyed_test = ['one' => 123, 'two' => $other]; -$keyed_test = ['one' => 123, 'two' => $other]; -$keyed_test = ['one' => 123, 'two' => $other]; +$keyed_test = ["one" => 123, "two" => $other]; +$keyed_test = ["one" => 123, "two" => $other]; +$keyed_test = ["one" => 123, "two" => $other]; $keyed_test = [ - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ]; $keyed_test = [ - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ]; $keyed_test = [ - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ]; $keyed_test = [ - 'one' => 123, + "one" => 123, - 'two' => $other, + "two" => $other, ]; -$keyed_test = ['one' => 123, 'two' => $other]; -$keyed_test = ['one' => 123, 'two' => $other]; -$keyed_test = ['one' => 123, 'two' => $other]; +$keyed_test = ["one" => 123, "two" => $other]; +$keyed_test = ["one" => 123, "two" => $other]; +$keyed_test = ["one" => 123, "two" => $other]; $keyed_test = [ - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ]; $keyed_test = [ - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ]; $keyed_test = [ - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ]; $keyed_test = [ - 'one' => 123, + "one" => 123, - 'two' => $other, + "two" => $other, ]; $short_keyed_test = [ - 'reallyreallyreallyreallylongkey' => 1248, - 'otherkey' => 234, - 'one more' => $hi, + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, ]; $short_keyed_test = [ - 'reallyreallyreallyreallylongkey' => 1248, - 'otherkey' => 234, - 'one more' => $hi, + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, ]; $foo = $bar[1][2][3][4][5][6]; $foo = $bar[1][2][3][4][5][6]; @@ -645,10 +645,10 @@ echo $arr[somefunc($bar)]; echo $arr[somefunc($bar)]; echo $arr[somefunc($bar)]; echo $arr[somefunc($bar)]; -$a = array_fill_keys(['foo', 5, 10, 'bar'], 'banana'); -$a = array_fill_keys(['foo', 5, 10, 'bar'], 'banana'); -$a = array_fill_keys(['foo', 5, 10, 'bar'], 'banana'); -$a = array_fill_keys(['foo', 5, 10, 'bar'], 'banana'); +$a = array_fill_keys(["foo", 5, 10, "bar"], "banana"); +$a = array_fill_keys(["foo", 5, 10, "bar"], "banana"); +$a = array_fill_keys(["foo", 5, 10, "bar"], "banana"); +$a = array_fill_keys(["foo", 5, 10, "bar"], "banana"); $secondElement = getArray()[1]; unset($arr[5]); $arr["x"] = 42; @@ -662,34 +662,34 @@ $arr[] = 1; $arr["x"] = 42; [$a, $b] = [1, 2]; $helpers = [ - 'Lazy', - 'Form' => [ - 'templates' => 'app_form', - 'widgets' => [ - 'select' => ['App\\View\\Widget\\SelectBoxWidget'], - 'nestingLabel' => ['App\\View\\Widget\\NestingLabelWidget'], + "Lazy", + "Form" => [ + "templates" => "app_form", + "widgets" => [ + "select" => ["App\\View\\Widget\\SelectBoxWidget"], + "nestingLabel" => ["App\\View\\Widget\\NestingLabelWidget"], ], ], - 'MagicMenu.MagicMenu', + "MagicMenu.MagicMenu", ]; $data = [ - 'value', - 'value', + "value", + "value", // a comment - 'value', - 'value', + "value", + "value", ]; $arr = [ - 'niveisFederativos' => app(NiveisFederativosRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id'), + "niveisFederativos" => app(NiveisFederativosRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), - 'tiposLeis' => app(TiposLeisRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id'), + "tiposLeis" => app(TiposLeisRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), ]; [[$id1, $name1]] = $data; [[$id1], [$id2], [$id]] = $data; @@ -708,32 +708,32 @@ $arr = [ ], ] = $data; $arr = [ - 'niveisFederativos' => function () { + "niveisFederativos" => function () { return "value"; }, - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => function () { + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => function () { return "other-value"; }, ]; -$singleLine = ['do' => ['collapse' => 'this']]; -$singleLine = ['do' => ['collapse' => 'this']]; +$singleLine = ["do" => ["collapse" => "this"]]; +$singleLine = ["do" => ["collapse" => "this"]]; $multiline = [ - 'do' => [ - 'not' => 'collapse', + "do" => [ + "not" => "collapse", ], ]; -$multiline = ['do' => 'collapse']; -$multiline = ['do' => 'collapse']; +$multiline = ["do" => "collapse"]; +$multiline = ["do" => "collapse"]; $mixed = [ - 'only' => ['partly' => 'collapsed'], + "only" => ["partly" => "collapsed"], ]; $mixed = [ - 'only' => [ - 'partly' => ['coll', 'apsed'], + "only" => [ + "partly" => ["coll", "apsed"], ], ]; @@ -748,38 +748,38 @@ $collapse = ["not", "associative"]; $collapse = ["not", "associative"]; $array = [ - 'key-one' => true ? 1 : 2, - 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "key-one" => true ? 1 : 2, + "key-two" => "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ? 1 : 2, - 'key-two' => true - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "key-two" => true + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" : 2, - 'key-two' => true + "key-two" => true ? 1 - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', - 'key-two' => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + : "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", + "key-two" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + : "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", ]; $array = [ - 'key' => 1, - 'key' => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, - 'key' => 'string', - 'key' => __LINE__, - 'key' => "string \${var} {$var}", - 'key' => 'string + "key" => 1, + "key" => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, + "key" => "string", + "key" => __LINE__, + "key" => "string \${var} {$var}", + "key" => 'string string string', - 'key' => 'string' . 'other-string', - 'key' => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + "key" => "string" . "other-string", + "key" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", ]; $array = [ @@ -798,10 +798,10 @@ string', ]; $array = [ - 'key' => 'string + "key" => 'string string string', - 'other-key' => 'string + "other-key" => 'string string string', ]; @@ -809,11 +809,11 @@ string', $array = [ 'string string -string' => 'value', +string' => "value", 'string string string -other' => 'other-value', +other' => "other-value", ]; $array = [ @@ -831,12 +831,12 @@ string', ]; $wp_admin_bar->add_menu([ - 'id' => 'menu-toggle', - 'title' => + "id" => "menu-toggle", + "title" => '' . - __('Menu') . - '', - 'href' => '#', + __("Menu") . + "", + "href" => "#", ]); $k = [ @@ -852,13 +852,13 @@ $o = [ ]; // spread -$var = ['banana', 'orange', ...$parts, 'watermelon']; +$var = ["banana", "orange", ...$parts, "watermelon"]; $var = [...$arr1]; $var = [0, ...$arr1]; $var = [...$arr1, ...$arr2, 111]; $var = [...$arr1, ...$arr1]; -$var = [...getArr(), 'c']; -$var = [...new ArrayIterator(['a', 'b', 'c'])]; +$var = [...getArr(), "c"]; +$var = [...new ArrayIterator(["a", "b", "c"])]; ================================================================================ `; @@ -1427,55 +1427,55 @@ $test = array(1, 2, 3, 4, "test"); $test = array(1, 2, 3, 4, "test"); $test = array(1, 2, 3, 4, "test"); $other_test = array(1, 2, 123.4324, $hi); -$keyed_test = array('one' => 123, 'two' => $other); -$keyed_test = array('one' => 123, 'two' => $other); -$keyed_test = array('one' => 123, 'two' => $other); +$keyed_test = array("one" => 123, "two" => $other); +$keyed_test = array("one" => 123, "two" => $other); +$keyed_test = array("one" => 123, "two" => $other); $keyed_test = array( - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ); $keyed_test = array( - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ); $keyed_test = array( - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ); $keyed_test = array( - 'one' => 123, + "one" => 123, - 'two' => $other, + "two" => $other, ); -$keyed_test = array('one' => 123, 'two' => $other); -$keyed_test = array('one' => 123, 'two' => $other); -$keyed_test = array('one' => 123, 'two' => $other); +$keyed_test = array("one" => 123, "two" => $other); +$keyed_test = array("one" => 123, "two" => $other); +$keyed_test = array("one" => 123, "two" => $other); $keyed_test = array( - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ); $keyed_test = array( - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ); $keyed_test = array( - 'one' => 123, - 'two' => $other, + "one" => 123, + "two" => $other, ); $keyed_test = array( - 'one' => 123, + "one" => 123, - 'two' => $other, + "two" => $other, ); $short_keyed_test = array( - 'reallyreallyreallyreallylongkey' => 1248, - 'otherkey' => 234, - 'one more' => $hi, + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, ); $short_keyed_test = array( - 'reallyreallyreallyreallylongkey' => 1248, - 'otherkey' => 234, - 'one more' => $hi, + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, ); $foo = $bar[1][2][3][4][5][6]; $foo = $bar[1][2][3][4][5][6]; @@ -1509,10 +1509,10 @@ echo $arr[somefunc($bar)]; echo $arr[somefunc($bar)]; echo $arr[somefunc($bar)]; echo $arr[somefunc($bar)]; -$a = array_fill_keys(array('foo', 5, 10, 'bar'), 'banana'); -$a = array_fill_keys(array('foo', 5, 10, 'bar'), 'banana'); -$a = array_fill_keys(array('foo', 5, 10, 'bar'), 'banana'); -$a = array_fill_keys(array('foo', 5, 10, 'bar'), 'banana'); +$a = array_fill_keys(array("foo", 5, 10, "bar"), "banana"); +$a = array_fill_keys(array("foo", 5, 10, "bar"), "banana"); +$a = array_fill_keys(array("foo", 5, 10, "bar"), "banana"); +$a = array_fill_keys(array("foo", 5, 10, "bar"), "banana"); $secondElement = getArray()[1]; unset($arr[5]); $arr["x"] = 42; @@ -1526,78 +1526,78 @@ $arr[] = 1; $arr["x"] = 42; [$a, $b] = array(1, 2); $helpers = array( - 'Lazy', - 'Form' => array( - 'templates' => 'app_form', - 'widgets' => array( - 'select' => array('App\\View\\Widget\\SelectBoxWidget'), - 'nestingLabel' => array('App\\View\\Widget\\NestingLabelWidget'), + "Lazy", + "Form" => array( + "templates" => "app_form", + "widgets" => array( + "select" => array("App\\View\\Widget\\SelectBoxWidget"), + "nestingLabel" => array("App\\View\\Widget\\NestingLabelWidget"), ), ), - 'MagicMenu.MagicMenu', + "MagicMenu.MagicMenu", ); $data = array( - 'value', - 'value', + "value", + "value", // a comment - 'value', - 'value', + "value", + "value", ); $arr = array( - 'niveisFederativos' => app(NiveisFederativosRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id'), + "niveisFederativos" => app(NiveisFederativosRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), - 'tiposLeis' => app(TiposLeisRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id'), + "tiposLeis" => app(TiposLeisRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), ); -[array($id1, $name1)] = $data; -[array($id1), array($id2), array($id)] = $data; +[[$id1, $name1]] = $data; +[[$id1], [$id2], [$id]] = $data; [ - array( + [ $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongOtherValue, - ), + ], ] = $data; ["id" => $id1, "name" => $name1] = $data; -[array("id" => $id1, "name" => $name1)] = $data; +[["id" => $id1, "name" => $name1]] = $data; [ - array( + [ "veryVeryVeryVeryLongKey" => $veryVeryVeryVeryLongValue, "veryVeryVeryVeryLongOtherKey" => $veryVeryVeryVeryLongValue, - ), + ], ] = $data; $arr = array( - 'niveisFederativos' => function () { + "niveisFederativos" => function () { return "value"; }, - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => function () { + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => function () { return "other-value"; }, ); -$singleLine = array('do' => array('collapse' => 'this')); -$singleLine = array('do' => array('collapse' => 'this')); +$singleLine = array("do" => array("collapse" => "this")); +$singleLine = array("do" => array("collapse" => "this")); $multiline = array( - 'do' => array( - 'not' => 'collapse', + "do" => array( + "not" => "collapse", ), ); -$multiline = array('do' => 'collapse'); -$multiline = array('do' => 'collapse'); +$multiline = array("do" => "collapse"); +$multiline = array("do" => "collapse"); $mixed = array( - 'only' => array('partly' => 'collapsed'), + "only" => array("partly" => "collapsed"), ); $mixed = array( - 'only' => array( - 'partly' => array('coll', 'apsed'), + "only" => array( + "partly" => array("coll", "apsed"), ), ); @@ -1612,38 +1612,38 @@ $collapse = array("not", "associative"); $collapse = array("not", "associative"); $array = array( - 'key-one' => true ? 1 : 2, - 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "key-one" => true ? 1 : 2, + "key-two" => "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ? 1 : 2, - 'key-two' => true - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "key-two" => true + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" : 2, - 'key-two' => true + "key-two" => true ? 1 - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', - 'key-two' => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + : "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", + "key-two" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + : "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", ); $array = array( - 'key' => 1, - 'key' => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, - 'key' => 'string', - 'key' => __LINE__, - 'key' => "string \${var} {$var}", - 'key' => 'string + "key" => 1, + "key" => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, + "key" => "string", + "key" => __LINE__, + "key" => "string \${var} {$var}", + "key" => 'string string string', - 'key' => 'string' . 'other-string', - 'key' => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + "key" => "string" . "other-string", + "key" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", ); $array = array( @@ -1662,10 +1662,10 @@ string', ); $array = array( - 'key' => 'string + "key" => 'string string string', - 'other-key' => 'string + "other-key" => 'string string string', ); @@ -1673,11 +1673,11 @@ string', $array = array( 'string string -string' => 'value', +string' => "value", 'string string string -other' => 'other-value', +other' => "other-value", ); $array = array( @@ -1695,12 +1695,12 @@ string', ); $wp_admin_bar->add_menu(array( - 'id' => 'menu-toggle', - 'title' => + "id" => "menu-toggle", + "title" => '' . - __('Menu') . - '', - 'href' => '#', + __("Menu") . + "", + "href" => "#", )); $k = array( @@ -1716,13 +1716,13 @@ $o = array( ); // spread -$var = array('banana', 'orange', ...$parts, 'watermelon'); +$var = array("banana", "orange", ...$parts, "watermelon"); $var = array(...$arr1); $var = array(0, ...$arr1); $var = array(...$arr1, ...$arr2, 111); $var = array(...$arr1, ...$arr1); -$var = array(...getArr(), 'c'); -$var = array(...new ArrayIterator(array('a', 'b', 'c'))); +$var = array(...getArr(), "c"); +$var = array(...new ArrayIterator(array("a", "b", "c"))); ================================================================================ `; 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 91% rename from tests/assign/__snapshots__/jsfmt.spec.js.snap rename to tests/assign/__snapshots__/jsfmt.spec.mjs.snap index a0794bc45..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===================================== @@ -118,42 +118,42 @@ $var = 111111111111111111111111111111111111111111111111111111 + 111111111111111111111111111111111111111111111111111111111111111; $var = true; -$var = 'string'; +$var = "string"; $var = - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; -$var = 'string' . $var; + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; +$var = "string" . $var; $var &= $var; $var = 'Multi Line String'; $var = []; $var = [1, 2, 3] + [1, 2, 3]; -$var = ['key' => 'value']; +$var = ["key" => "value"]; $var = [ - 'key' => 'value', + "key" => "value", ]; $var = [ - 'key' => 'value', - 'oneKey' => 'value', - 'twoKey' => 'value', - 'threeKey' => 'value', - 'fourKey' => 'value', - 'fiveKey' => 'value', - 'sixKey' => 'value', + "key" => "value", + "oneKey" => "value", + "twoKey" => "value", + "threeKey" => "value", + "fourKey" => "value", + "fiveKey" => "value", + "sixKey" => "value", ]; $var = $veryVeryVeryVeryVeryVeryVeryLongVariable ? $veryVeryVeryVeryVeryVeryVeryLongTrueExpr : $veryVeryVeryVeryVeryVeryVeryLongFalseExpr; -$var = $var . 'string' ? $trueExpr : $falseExpr; +$var = $var . "string" ? $trueExpr : $falseExpr; $var = $var . - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . $otherVar ? $trueExpr : $falseExpr; $var = $var . - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . $otherVar === $veryVeryVeryVeryVeryVeryVeryLongVariable ? $trueExpr @@ -161,12 +161,12 @@ $var = $var = VERY_VERY_VERY_VERY_VERY_VERY_VERY_VERY_VERY_VERY_VERY_VERY_VERY_LONG_CONSTANT; $var = $arr[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; $var = - $arr['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString']; + $arr["veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"]; $variable[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ] = $variable->registered[1]; $computedDescriptionLines = @@ -203,7 +203,7 @@ $computedDescriptionLines = $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, -] = $test . 'string' ? $trueExpr : $falseExpr; +] = $test . "string" ? $trueExpr : $falseExpr; [ $oneVeryVeryVeryVeryVeryVeryVeryLongVariable, $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, @@ -216,8 +216,8 @@ $computedDescriptionLines = $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, ] = $arr || [ - 'key' => 'value', - 'otherKey' => 'otherValue', + "key" => "value", + "otherKey" => "otherValue", ]; for ($i = 0, $len = $arr->length; $i < $len; $i++) { @@ -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 85% rename from tests/assignref/__snapshots__/jsfmt.spec.js.snap rename to tests/assignref/__snapshots__/jsfmt.spec.mjs.snap index d0c2bfa75..a25b1c2d5 100644 --- a/tests/assignref/__snapshots__/jsfmt.spec.js.snap +++ b/tests/assignref/__snapshots__/jsfmt.spec.mjs.snap @@ -60,21 +60,21 @@ $a = &$b / 100; $var = $arr[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; $var = &$arr[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; $var = - $arr['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString']; + $arr["veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"]; $var = - &$arr['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString']; + &$arr["veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"]; $variable[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ] = $variable->registered[1]; $variable[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ] = &$variable->registered[1]; $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; @@ -94,8 +94,8 @@ $this->long->expression->before->array->statesArray[ $cached_var = &drupal_static(__FUNCTION__); -$test = ['key' => &$value]; -$test = ['key' => &$value['something']]; +$test = ["key" => &$value]; +$test = ["key" => &$value["something"]]; ================================================================================ `; 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 90% rename from tests/bin/__snapshots__/jsfmt.spec.js.snap rename to tests/bin/__snapshots__/jsfmt.spec.mjs.snap index e383b941c..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===================================== @@ -403,10 +403,10 @@ $b = &$a; $a ?? $b; $this->reallyLong->testPropertyName = - 'a' . $someOtherTest . 'n' . $oneLastOneToMakeLineLong; + "a" . $someOtherTest . "n" . $oneLastOneToMakeLineLong; -'tesssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssst' . - 'test'; +"tesssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssst" . + "test"; $someReallyReallyReallyLongBooleanVariable + $someReallyReallyReallyLongBooleanVariable; @@ -422,10 +422,10 @@ $someReallyReallyReallyLongBooleanVariable + $someReallyReallyReallyLongBooleanVariable; $value = - isset($_POST['menu-item-dropdown']) && - isset($_POST['menu-item-dropdown'][$menuItemDbId]) - ? 'enabled' - : 'disabled'; + isset($_POST["menu-item-dropdown"]) && + isset($_POST["menu-item-dropdown"][$menuItemDbId]) + ? "enabled" + : "disabled"; ($var && $var && $var)->call(); -($var && $var && $var); @@ -441,11 +441,11 @@ $value = )->call(); ($veryVeryVeryVeryVeryLongVariable && $veryVeryVeryVeryVeryLongVariable && - $veryVeryVeryVeryVeryLongVariable)['key']; + $veryVeryVeryVeryVeryLongVariable)["key"]; if ( - get_option('woocommerce_product_cart_actions_notification_more_cart') === - 'yes' && + get_option("woocommerce_product_cart_actions_notification_more_cart") === + "yes" && count($cartItems) > 0 ) { $a = 1; @@ -455,8 +455,8 @@ function f() { if ( get_option( - 'woocommerce_product_cart_actions_notification_more_cart' - ) === 'yes' && + "woocommerce_product_cart_actions_notification_more_cart", + ) === "yes" && count($cartItems) > 0 ) { $a = 1; @@ -464,33 +464,33 @@ function f() } $accelerator = - (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) || - (extension_loaded('apc') && ini_get('apc.enabled')) || - (extension_loaded('Zend Optimizer+') && - ini_get('zend_optimizerplus.enable')) || - (extension_loaded('Zend OPcache') && ini_get('opcache.enable')) || - (extension_loaded('xcache') && ini_get('xcache.cacher')) || - (extension_loaded('wincache') && ini_get('wincache.ocenabled')); + (extension_loaded("eaccelerator") && ini_get("eaccelerator.enable")) || + (extension_loaded("apc") && ini_get("apc.enabled")) || + (extension_loaded("Zend Optimizer+") && + ini_get("zend_optimizerplus.enable")) || + (extension_loaded("Zend OPcache") && ini_get("opcache.enable")) || + (extension_loaded("xcache") && ini_get("xcache.cacher")) || + (extension_loaded("wincache") && ini_get("wincache.ocenabled")); while ($a < 10) { $a + 1; } $a = - 'string' . - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVery' + "string" . + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVery" ? 1 : 2; -return 'string' . - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVery' +return "string" . + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVery" ? 1 : 2; call( - 'string' . - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVery' + "string" . + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVery" ? 1 : 2, - 'arg' + "arg", ); $var = @@ -595,19 +595,19 @@ if ( ) { } -echo 'This ' . - 'string' . - 'string' . - 'string' . - 'string' . +echo "This " . + "string" . + "string" . + "string" . + "string" . (100 + 100) . - 'string ' . + "string " . (100 - 100) . - 'was ' . + "was " . 100 * 100 . - 'made ' . + "made " . 100 / 100 . - 'with concatenation.'; + "with concatenation."; if ($someReallyReallyReallyLongBooleanVariableWithRddllyReallyLongName || []) { } @@ -618,13 +618,13 @@ if ( } $accelerator = - (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) || - (extension_loaded('apc') && ini_get('apc.enabled')) || - (extension_loaded('Zend Optimizer+') && - ini_get('zend_optimizerplus.enable')) || - (extension_loaded('Zend OPcache') && ini_get('opcache.enable')) || - (extension_loaded('xcache') && ini_get('xcache.cacher')) || - (extension_loaded('wincache') && ini_get('wincache.ocenabled')); + (extension_loaded("eaccelerator") && ini_get("eaccelerator.enable")) || + (extension_loaded("apc") && ini_get("apc.enabled")) || + (extension_loaded("Zend Optimizer+") && + ini_get("zend_optimizerplus.enable")) || + (extension_loaded("Zend OPcache") && ini_get("opcache.enable")) || + (extension_loaded("xcache") && ini_get("xcache.cacher")) || + (extension_loaded("wincache") && ini_get("wincache.ocenabled")); ~($a || $b); ~( @@ -650,9 +650,9 @@ $accelerator = $someOtherReallyReallyReallyLongBooleanVariable )::foo(); -($a || $b)['string']; +($a || $b)["string"]; ($someReallyReallyReallyLongBooleanVariable || - $someReallyReallyReallyLongBooleanVariable)['string']; + $someReallyReallyReallyLongBooleanVariable)["string"]; $var = call($var > $var ? true : false); $var = call($someOtherReallyReallyLongVariable > $var ? true : false); @@ -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 ?? @@ -828,7 +828,7 @@ string\\\\r\\\\n '; $var = __DIR__ instanceof \\Exception; -$var = 'string' instanceof \\Exception; +$var = "string" instanceof \\Exception; $var = "string" instanceof \\Exception; $var = 2244 instanceof \\Exception; $var = true instanceof \\Exception; @@ -836,20 +836,20 @@ $var = 100 + 1 instanceof \\Exception; // Fetches the value of $_GET['user'] and returns 'nobody' // if it does not exist. -$username = $_GET['user'] ?? 'nobody'; +$username = $_GET["user"] ?? "nobody"; // This is equivalent to: -$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; +$username = isset($_GET["user"]) ? $_GET["user"] : "nobody"; // Coalescing can be chained: this will return the first // defined value out of $_GET['user'], $_POST['user'], and // 'nobody'. -$username = $_GET['user'] ?? ($_POST['user'] ?? 'nobody'); +$username = $_GET["user"] ?? ($_POST["user"] ?? "nobody"); // The following lines are doing the same -$this->request->data['comments']['user_id'] = - $this->request->data['comments']['user_id'] ?? 'value'; +$this->request->data["comments"]["user_id"] = + $this->request->data["comments"]["user_id"] ?? "value"; // Instead of repeating variables with long names, the equal coalesce operator is used -$this->request->data['comments']['user_id'] ??= 'value'; +$this->request->data["comments"]["user_id"] ??= "value"; ================================================================================ `; 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 67% rename from tests/brace-style/__snapshots__/jsfmt.spec.js.snap rename to tests/brace-style/__snapshots__/jsfmt.spec.mjs.snap index 912aa12e6..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; + } -================================================================================ -`; + function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongNameOther( + $string, + $max_length, + // @codingStandardsIgnoreLine + $ellipses = " … ", // the spaces are non-breaking spaces + &$flag = null, + ) { + return "hello"; + } -exports[`functions.php 3`] = ` -====================================options===================================== -braceStyle: "1tbs" -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -\\n"; } @@ -817,7 +1179,7 @@ class Foo function reeeeeeeeeeaaaaaaaallllllllyyyyyy_llloooooooonnnnnnggggg( $soooooooooooo_looooooooonnnng, - $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr + $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr, ) { return $soooooooooooo_looooooooonnnng; } @@ -829,7 +1191,7 @@ class Foo float $float_test, iterable $iterable_test, int $int_test, - string $string_test = '' + string $string_test = "", ) { return $int_test; } @@ -838,92 +1200,77 @@ class Foo $string, $max_length, // @codingStandardsIgnoreLine - $ellipses = ' … ', // the spaces are non-breaking spaces - &$flag = null + $ellipses = " … ", // the spaces are non-breaking spaces + &$flag = null, ) { return "hello"; } - static function staticmethod() - { - } + static function staticmethod() {} public static function ellipsizeMiddle( $string, $max_length, // @codingStandardsIgnoreLine - $ellipses = ' … ', // the spaces are non-breaking spaces - &$flag = null + $ellipses = " … ", // the spaces are non-breaking spaces + &$flag = null, ) { $string = trim($string); } - public static function hello_2() - { - } + public static function hello_2() {} - public static function hello_3($var = 1) - { - } + public static function hello_3($var = 1) {} public static function hello_4( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ) { - } + $other_other_other_var = 3, + ) {} public static function hello_5( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ): ?string { - } + $other_other_other_var = 3, + ): ?string {} - public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() - { - } + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( - $var = 1 - ) { - } + $var = 1, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ) { - } + $other_other_other_var = 3, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ): ?string { - } + $other_other_other_var = 3, + ): ?string {} public static function newlines( $var = 1, - $other_var = 2 - ) { - } + $other_var = 2, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, - $other_var = 2 - ) { - } + $other_var = 2, + ) {} } ================================================================================ `; -exports[`methods.php 2`] = ` +exports[`methods.php 3`] = ` ====================================options===================================== -braceStyle: "psr-2" +braceStyle: "per-cs" parsers: ["php"] printWidth: 80 | printWidth @@ -1052,7 +1399,7 @@ class Foo return "hello"; } - function bar($arg = '') + function bar($arg = "") { echo "In bar(); argument was '$arg'.
\\n"; } @@ -1069,7 +1416,7 @@ class Foo function reeeeeeeeeeaaaaaaaallllllllyyyyyy_llloooooooonnnnnnggggg( $soooooooooooo_looooooooonnnng, - $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr + $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr, ) { return $soooooooooooo_looooooooonnnng; } @@ -1081,7 +1428,7 @@ class Foo float $float_test, iterable $iterable_test, int $int_test, - string $string_test = '' + string $string_test = "", ) { return $int_test; } @@ -1090,90 +1437,75 @@ class Foo $string, $max_length, // @codingStandardsIgnoreLine - $ellipses = ' … ', // the spaces are non-breaking spaces - &$flag = null + $ellipses = " … ", // the spaces are non-breaking spaces + &$flag = null, ) { return "hello"; } - static function staticmethod() - { - } + static function staticmethod() {} public static function ellipsizeMiddle( $string, $max_length, // @codingStandardsIgnoreLine - $ellipses = ' … ', // the spaces are non-breaking spaces - &$flag = null + $ellipses = " … ", // the spaces are non-breaking spaces + &$flag = null, ) { $string = trim($string); } - public static function hello_2() - { - } + public static function hello_2() {} - public static function hello_3($var = 1) - { - } + public static function hello_3($var = 1) {} public static function hello_4( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ) { - } + $other_other_other_var = 3, + ) {} public static function hello_5( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ): ?string { - } + $other_other_other_var = 3, + ): ?string {} - public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() - { - } + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( - $var = 1 - ) { - } + $var = 1, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ) { - } + $other_other_other_var = 3, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ): ?string { - } + $other_other_other_var = 3, + ): ?string {} public static function newlines( $var = 1, - $other_var = 2 - ) { - } + $other_var = 2, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, - $other_var = 2 - ) { - } + $other_var = 2, + ) {} } ================================================================================ `; -exports[`methods.php 3`] = ` +exports[`methods.php 4`] = ` ====================================options===================================== braceStyle: "1tbs" parsers: ["php"] @@ -1299,7 +1631,7 @@ class Foo { return "hello"; } - function bar($arg = '') { + function bar($arg = "") { echo "In bar(); argument was '$arg'.
\\n"; } @@ -1313,7 +1645,7 @@ class Foo { function reeeeeeeeeeaaaaaaaallllllllyyyyyy_llloooooooonnnnnnggggg( $soooooooooooo_looooooooonnnng, - $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr + $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr, ) { return $soooooooooooo_looooooooonnnng; } @@ -1325,7 +1657,7 @@ class Foo { float $float_test, iterable $iterable_test, int $int_test, - string $string_test = '' + string $string_test = "", ) { return $int_test; } @@ -1334,80 +1666,69 @@ class Foo { $string, $max_length, // @codingStandardsIgnoreLine - $ellipses = ' … ', // the spaces are non-breaking spaces - &$flag = null + $ellipses = " … ", // the spaces are non-breaking spaces + &$flag = null, ) { return "hello"; } - static function staticmethod() { - } + static function staticmethod() {} public static function ellipsizeMiddle( $string, $max_length, // @codingStandardsIgnoreLine - $ellipses = ' … ', // the spaces are non-breaking spaces - &$flag = null + $ellipses = " … ", // the spaces are non-breaking spaces + &$flag = null, ) { $string = trim($string); } - public static function hello_2() { - } + public static function hello_2() {} - public static function hello_3($var = 1) { - } + public static function hello_3($var = 1) {} public static function hello_4( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ) { - } + $other_other_other_var = 3, + ) {} public static function hello_5( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ): ?string { - } + $other_other_other_var = 3, + ): ?string {} - public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() { - } + public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( - $var = 1 - ) { - } + $var = 1, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ) { - } + $other_other_other_var = 3, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, $other_var = 2, - $other_other_other_var = 3 - ): ?string { - } + $other_other_other_var = 3, + ): ?string {} public static function newlines( $var = 1, - $other_var = 2 - ) { - } + $other_var = 2, + ) {} public static function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( $var = 1, - $other_var = 2 - ) { - } + $other_var = 2, + ) {} } ================================================================================ diff --git a/tests/brace-style/jsfmt.spec.js b/tests/brace-style/jsfmt.spec.js deleted file mode 100644 index 7121cc2aa..000000000 --- a/tests/brace-style/jsfmt.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -run_spec(__dirname, ["php"]); -run_spec(__dirname, ["php"], { braceStyle: "psr-2" }); -run_spec(__dirname, ["php"], { braceStyle: "1tbs" }); diff --git a/tests/brace-style/jsfmt.spec.mjs b/tests/brace-style/jsfmt.spec.mjs new file mode 100644 index 000000000..8ac8c68a1 --- /dev/null +++ b/tests/brace-style/jsfmt.spec.mjs @@ -0,0 +1,4 @@ +run_spec(import.meta, ["php"]); +run_spec(import.meta, ["php"], { braceStyle: "psr-2" }); +run_spec(import.meta, ["php"], { braceStyle: "per-cs" }); +run_spec(import.meta, ["php"], { braceStyle: "1tbs" }); diff --git a/tests/break/__snapshots__/jsfmt.spec.js.snap b/tests/break/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/break/__snapshots__/jsfmt.spec.js.snap rename to tests/break/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/break/jsfmt.spec.js b/tests/break/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/break/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/break/jsfmt.spec.mjs b/tests/break/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/break/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/call/__snapshots__/jsfmt.spec.js.snap b/tests/call/__snapshots__/jsfmt.spec.mjs.snap similarity index 78% rename from tests/call/__snapshots__/jsfmt.spec.js.snap rename to tests/call/__snapshots__/jsfmt.spec.mjs.snap index 73990eff6..be49c6300 100644 --- a/tests/call/__snapshots__/jsfmt.spec.js.snap +++ b/tests/call/__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[`call.php 1`] = ` ====================================options===================================== @@ -11,6 +11,7 @@ func(); 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 ) ; @@ -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,72 +386,72 @@ $db->Execute( $somewhatLongParameterX, $somewhatLongParameterXYZ, ], - $sql + $sql, ); -$app->get('/hello/{name}', function ($name) use ($app) { - return 'Hello ' . $app->escape($name); +$app->get("/hello/{name}", function ($name) use ($app) { + return "Hello " . $app->escape($name); }); $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); -tap(((int) $raw['data']) + $value, function ($newValue) use ($key, $raw) { - $this->put($key, $newValue, $raw['time']); +tap(((int) $raw["data"]) + $value, function ($newValue) use ($key, $raw) { + $this->put($key, $newValue, $raw["time"]); }); $expire = substr($contents = $this->files->get($path, true), 0, 10); -$this->app->singleton('session', function ($app) { +$this->app->singleton("session", function ($app) { return new SessionManager($app); }); $this->filter([ - new MergeValue(['First', 'Second']), - 'Taylor', - 'Mohamed', - $this->mergeWhen(false, ['Adam', 'Matt']), - 'Jeffrey', - new MergeValue(['Abigail', 'Lydia']), + new MergeValue(["First", "Second"]), + "Taylor", + "Mohamed", + $this->mergeWhen(false, ["Adam", "Matt"]), + "Jeffrey", + new MergeValue(["Abigail", "Lydia"]), ]); $this->assertEquals( - ['First', 'Second', 'Taylor', 'Mohamed', 'Jeffrey', 'Abigail', 'Lydia'], - $results + ["First", "Second", "Taylor", "Mohamed", "Jeffrey", "Abigail", "Lydia"], + $results, ); -$this->assertEquals(['First'], $results); +$this->assertEquals(["First"], $results); $some->other->thing([ - 'foo' => 'bar', - 'buzz' => $this->is->nested([ - 'complex' => 'stuff', - 'foo' => 'bar', - 'buzz' => 'bazz', + "foo" => "bar", + "buzz" => $this->is->nested([ + "complex" => "stuff", + "foo" => "bar", + "buzz" => "bazz", ]), ]); $some->other->thing( [ - 'foo' => 'bar', - 'buzz' => $this->is->nested([12, 34, 45, 67, 89]), + "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", []), + idx($composer, "require-dev", []), ); if ( @@ -467,31 +474,31 @@ if ( function ($acc, $tmp) { return $acc ^ $tmp; }, - 0 + 0, ) ) { return []; } 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,19 +518,19 @@ call( $longArgumentName, $anotherLongArgumentName, $anotherLongArgumentName, - $anotherLongArgumentName + $anotherLongArgumentName, ) ? someOtherThing() - : somethingElse(true, 0) + : somethingElse(true, 0), ); array_map( function ($aligment) { - return 'row-' . $aligment . '-xs'; + return "row-" . $aligment . "-xs"; }, - is_array($attributes['alignment']) - ? $attributes['alignment'] - : explode(' ', $attributes['alignment']) + is_array($attributes["alignment"]) + ? $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,38 +709,25 @@ $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'](); -$var = $this['foo']['bar'](); +$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)(); $var = $var::foo()(); $var = $var::foo()(); -$var = ('test')(); -$var = ('test')(); -$var = ('test')()(); -$var = ('test')()->bar(); -$var = (('test')()->bar)(); -$var = (['Foo', 'bar'])(); -$var = (['Foo', 'bar'])->bar(); -$var = ((['Foo', 'bar'])->bar)(); +$var = ("test")(); +$var = ("test")(); +$var = ("test")()(); +$var = ("test")()->bar(); +$var = (("test")()->bar)(); +$var = (["Foo", "bar"])(); +$var = (["Foo", "bar"])->bar(); +$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 87% rename from tests/case/__snapshots__/jsfmt.spec.js.snap rename to tests/case/__snapshots__/jsfmt.spec.mjs.snap index e9df89b10..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 { @@ -289,15 +287,15 @@ final class MyClass extends Bar implements iTemplate B::bigTalk as talk; } - const CONSTANT = 'CONSTANT'; + const CONSTANT = "CONSTANT"; - public $public = 'Public'; + public $public = "Public"; - protected $protected = 'Protected'; + protected $protected = "Protected"; - private $private = 'Private'; + private $private = "Private"; - var $foo = 'Bar'; + var $foo = "Bar"; function printHello() { @@ -323,18 +321,18 @@ final class MyClass extends Bar implements iTemplate switch ($expr) { case 0: - echo 'First case, with a break'; + echo "First case, with a break"; break; case 1: case 4: - echo 'Third case, return instead of break'; + echo "Third case, return instead of break"; return; default: - echo 'Default case'; + echo "Default case"; 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 }; @@ -396,7 +394,7 @@ final class MyClass extends Bar implements iTemplate $array = [1, 1, 1]; if ($step <= 0) { - throw new LogicException('Logic'); + throw new LogicException("Logic"); } for ($i = $start; $i <= $limit; $i += $step) { @@ -412,7 +410,7 @@ final class MyClass extends Bar implements iTemplate die(); exit(); - eval('test'); + eval("test"); } public function MyPublic() @@ -422,19 +420,19 @@ final class MyClass extends Bar implements iTemplate protected function MyProtected() { - require 'somefile.php'; - require_once 'somefile.php'; - include 'somefile.php'; - include_once 'somefile.php'; + require "somefile.php"; + require_once "somefile.php"; + include "somefile.php"; + include_once "somefile.php"; } private function MyPrivate() { goto a; - echo 'Foo'; + echo "Foo"; a: - echo 'Bar'; + echo "Bar"; } final public static function bar(callable $callback, $coffeeMaker = null) @@ -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 93% rename from tests/cast/__snapshots__/jsfmt.spec.js.snap rename to tests/cast/__snapshots__/jsfmt.spec.mjs.snap index 0f4d8fbff..58b11f144 100644 --- a/tests/cast/__snapshots__/jsfmt.spec.js.snap +++ b/tests/cast/__snapshots__/jsfmt.spec.mjs.snap @@ -91,8 +91,8 @@ print (bool) $someOtherReallyReallyLongVariable ?: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (int) $var->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; $this->reallyLong->testPropertyName = - (bool) 'a' . $someOtherTest . 'n' . $oneLastOneToMakeLineLong; + (bool) "a" . $someOtherTest . "n" . $oneLastOneToMakeLineLong; $var = (array) ["test"] + ["test"]; $var = (array) [ @@ -123,7 +123,7 @@ $var = $veryVeryVeryVeryVeryVeryVeryVeryLongVariable); $category_color = - (int) get_field(Category_Meta::COLOR, 'category_' . $term_id) ?: 'gold'; + (int) get_field(Category_Meta::COLOR, "category_" . $term_id) ?: "gold"; $var = (int) $veryVeryVeryVeryVeryVeryVeryVeryLongVariable ? $veryVeryVeryVeryVeryVeryVeryVeryLongVariable @@ -145,8 +145,8 @@ e.g. \\\\ and \\'. EOD; $array = [ - 'foo' => (bool) $var, - 'bar' => (bool) $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, + "foo" => (bool) $var, + "bar" => (bool) $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, ]; $var = @@ -190,18 +190,18 @@ function bar() $var = (string) $this->databasePath ?: - $this->basePath . DIRECTORY_SEPARATOR . 'database'; + $this->basePath . DIRECTORY_SEPARATOR . "database"; $var = $this->databasePath ?: - (string) $this->basePath . DIRECTORY_SEPARATOR . 'database'; + (string) $this->basePath . DIRECTORY_SEPARATOR . "database"; $var = (string) ($this->databasePath ?: - $this->basePath . DIRECTORY_SEPARATOR . 'database'); + $this->basePath . DIRECTORY_SEPARATOR . "database"); print (bool) $someOtherReallyReallyLongVariable ?: (bool) $someOtherReallyReallyLongVariable ?: (bool) $someOtherReallyReallyLongVariable ?: - 'string'; + "string"; ================================================================================ `; @@ -219,7 +219,7 @@ printWidth: 80 =====================================output===================================== setLogger( { echo $msg; } - } + }, ); $app->setLogger( new class { @@ -311,11 +311,11 @@ $app->setLogger( { echo $msg; } - } + }, ); var_dump( - new class(10) extends SomeClass implements SomeInterface { + new class (10) extends SomeClass implements SomeInterface { private $num; public function __construct($num) @@ -324,7 +324,7 @@ var_dump( } use SomeTrait; - } + }, ); class Outer @@ -339,7 +339,7 @@ class Outer public function func2() { - return new class($this->prop) extends Outer { + return new class ($this->prop) extends Outer { private $prop3; public function __construct($prop) @@ -379,250 +379,218 @@ $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( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) implements MyOtherClass {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) implements MyOtherClass, MyOtherClass1, MyOtherClass2 {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyOtherClass {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) implements MyOtherClass, MyOtherClass, MyOtherOtherOtherClass, - MyOtherOtherOtherOtherClass -{ -}; + MyOtherOtherOtherOtherClass {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends MyOtherClass {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements MyI {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements MyI, MyII, MyIII {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements - VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass -{ -}; + VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends MyOtherClass implements MyInterface, MyOtherInterface, - MyOtherOtherInterface -{ -}; + MyOtherOtherInterface {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass - implements MyI -{ -}; + implements MyI {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $other_arg, function () { return 1; - } + }, ) extends VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongMyClass implements MyI, MyII, - MyIII -{ -}; + MyIII {}; -$class = new class( +$class = new class ( $arg, - 'string', + "string", 2100, $var ? true : false, $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 {} @@ -929,6 +906,43 @@ class User { } } +class Promoted { + public function __construct( public int $a, private float $b, 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; +} + =====================================output===================================== other = $test_string; $this->current_version = @@ -996,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; } @@ -1028,7 +1048,7 @@ abstract class ReallyReallyReallyLongClassName public function reallyReallyReallyReallyReallyReallyReallyLongMethodName( $input, - $otherInput = 1 + $otherInput = 1, ) { return true; } @@ -1041,7 +1061,7 @@ abstract class ReallyReallyReallyLongClassName public function returnTypeTest(): string { - return 'hi'; + return "hi"; } final public static function bar() @@ -1058,17 +1078,17 @@ abstract class ReallyReallyReallyLongClassName public function method1() { - return 'hi'; + return "hi"; } public function method2() { - return 'hi'; + return "hi"; } public function method3() { - return 'hi'; + return "hi"; } public function testReturn(?string $name): ?string @@ -1095,17 +1115,17 @@ abstract class ReallyReallyReallyLongClassName public function longLongAnotherFunction( string $foo, string $bar, - int $baz + int $baz, ): string { - return 'foo'; + return "foo"; } public function longLongAnotherFunctionOther( string $foo, string $bar, - int $baz + int $baz, ) { - return 'foo'; + return "foo"; } public function testReturnTypeDeclaration(): object @@ -1121,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(); @@ -1139,12 +1157,8 @@ class FooBar { public $property; public $property2; - public function method() - { - } - public function method2() - { - } + public function method() {} + public function method2() {} } class FooBarFoo @@ -1155,90 +1169,66 @@ 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 { protected function pre_save($input, $fields) { - $input['configs'] = json_encode( + $input["configs"] = json_encode( array_merge( $configs, $field_type->process_field_config_from_user( - $input['definition'] - ) - ) + $input["definition"], + ), + ), ); - unset($input['definition']); + unset($input["definition"]); } } @@ -1246,186 +1236,136 @@ class test { public function test_method() { - $customer = (object) ['name' => 'Bob']; - $job = (object) ['customer' => $customer]; + $customer = (object) ["name" => "Bob"]; + $job = (object) ["customer" => $customer]; return "The customer for that job, {$job->customer->name} has an error that shows up after the line gets waaaaay toooo long."; } } -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 { public int $id; public string $name; - public ?string $b = 'foo'; + public ?string $b = "foo"; private Foo $prop; - protected static string $static = 'default'; + protected static string $static = "default"; public function __construct(int $id, string $name) { @@ -1434,5 +1374,54 @@ class User } } +class Promoted +{ + public function __construct( + public int $a, + private float $b, + 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 058750ee0..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 {} @@ -293,3 +302,40 @@ public function __construct(int $id, string $name) { $this->name = $name; } } + +class Promoted { + public function __construct( public int $a, private float $b, 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/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 75% rename from tests/classconstant/__snapshots__/jsfmt.spec.js.snap rename to tests/classconstant/__snapshots__/jsfmt.spec.mjs.snap index a467fcf78..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===================================== @@ -78,12 +78,12 @@ class ConstDemo { const PUBLIC_CONST_A = 1; const TEST_CLASS_CONSTANT = 3; - public const PUBLIC_TEST_CLASS_CONSTANT = 'value'; - protected const PROTECTED_TEST_CLASS_CONSTANT = 'value'; - private const PRIVATE_TEST_CLASS_CONSTANT = 'value'; + public const PUBLIC_TEST_CLASS_CONSTANT = "value"; + protected const PROTECTED_TEST_CLASS_CONSTANT = "value"; + private const PRIVATE_TEST_CLASS_CONSTANT = "value"; public const THREE = TWO + 1; public const ONE_THIRD = ONE / self::THREE; - public const SENTENCE = 'The value of THREE is ' . self::THREE; + public const SENTENCE = "The value of THREE is " . self::THREE; public static function testClassConstant() { @@ -96,18 +96,18 @@ class ConstDemo } const CONST_1 = 1024; - const CONST_2 = 'string'; + const CONST_2 = "string"; const CONST_3 = 11111111111111111111111111111111111111111111111111111111; - const CONST_4 = 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; + const CONST_4 = "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; const CONST_5 = - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; const CONST_6 = true; const CONST_7 = false; const CONST_8 = @@ -125,27 +125,27 @@ class ConstDemo 1200 + 1300; const CONST_9 = << 'value', 'other-key' => 'other-value']; + const CONST_13 = ["key" => "value", "other-key" => "other-value"]; const CONST_14 = [ - 'key' => 'value', - 'other-key' => 'other-value', - 'other-other-key' => 'other-other-value', + "key" => "value", + "other-key" => "other-value", + "other-other-key" => "other-other-value", ]; const FIRST = "Hello", @@ -161,24 +161,24 @@ EOD; VERY_VERY_VERY_VERY_VERY_VERY_VERY_LONG_SECOND_1 = "world", VERY_VERY_VERY_VERY_VERY_VERY_VERY_LONG_FIRST_THIRD = "!"; const CONST_15 = [ - 'key' => 'value', - 'other-key' => 'other-value', - 'other-other-key' => 'other-other-value', + "key" => "value", + "other-key" => "other-value", + "other-other-key" => "other-other-value", ], FOO_BAR = "test", - BAR_FOOR = ['value', 'other-value']; + BAR_FOOR = ["value", "other-value"]; - const ARRAY_1 = ['value', 'other-value'], - ARRAY_2 = ['value', 'other-value']; + const ARRAY_1 = ["value", "other-value"], + ARRAY_2 = ["value", "other-value"]; const STRING = - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; const FOOF = 'string string string', diff --git a/tests/classconstant/jsfmt.spec.js b/tests/classconstant/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/classconstant/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/classconstant/jsfmt.spec.mjs b/tests/classconstant/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/classconstant/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/clone/__snapshots__/jsfmt.spec.js.snap b/tests/clone/__snapshots__/jsfmt.spec.mjs.snap similarity index 94% rename from tests/clone/__snapshots__/jsfmt.spec.js.snap rename to tests/clone/__snapshots__/jsfmt.spec.mjs.snap index 727869139..92712af2f 100644 --- a/tests/clone/__snapshots__/jsfmt.spec.js.snap +++ b/tests/clone/__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[`clone.php 1`] = ` ====================================options===================================== @@ -23,7 +23,7 @@ $obj2 = clone $obj; $obj2 = clone $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClass; $obj2 = clone $this->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 95% rename from tests/comments/__snapshots__/jsfmt.spec.js.snap rename to tests/comments/__snapshots__/jsfmt.spec.mjs.snap index eb8cb1c68..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===================================== @@ -158,12 +158,12 @@ return [ ]; $array = [ - 'type' => [], - 'config' => [ + "type" => [], + "config" => [ // comments in nested arrays break things - 'key' => 1, + "key" => 1, ], - 'accepted' => [], + "accepted" => [], ]; // Comment @@ -175,22 +175,22 @@ $array /* Comment */ = /* Comment */ []; /* Comment */ /* Comment */ $array = [ - 'key' => + "key" => // Comment A // Comment B - 'string', + "string", ]; $array = [ // Comment A - 'key' => + "key" => // Comment B - 'string', + "string", ]; $array = [ // Comment A - 'key' => 'string', + "key" => "string", ]; []; // Comment @@ -199,18 +199,18 @@ $array = []; // Comment $array = [ // Comment - 'string', - 'other-string', + "string", + "other-string", ]; call( - [] // Comment + [], // Comment ); call([ // Comment - 'string', - 'other-string', + "string", + "other-string", ]); ================================================================================ @@ -293,64 +293,64 @@ $var3; modelData instanceof \\Traversable && 0 === iterator_count($this->modelData)); -if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) { - mb_internal_encoding('ASCII'); +if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get("mbstring.func_overload")) { + mb_internal_encoding("ASCII"); } $bool = /*Comment */ true /*Comment */ || /*Comment */ false /*Comment */; @@ -464,7 +464,7 @@ if ( $this->pricingQueryOfferResult->offer->offerGroup->state_id) ) { $this->hasResult = false; - $this->removedReason = 'State Mismatch'; + $this->removedReason = "State Mismatch"; } if ( @@ -588,40 +588,40 @@ $var->render( foo( /* Comment */ $a /* Comment */, /* Comment */ [] /* Comment */, - /* Comment */ $a + 2 /* Comment */ + /* Comment */ $a + 2 /* Comment */, ); foo(/* A */); $foo->bar(/* B */); render( // Comment - 'string', - $container + "string", + $container, ); $var->render( // Comment - 'string', - $var + "string", + $var, ); render( - 'string', - $container + "string", + $container, // Comment ); $var->render( - 'string', - $var + "string", + $var, // Comment ); $var->render( // Comment - 'string', + "string", // Comment - $var + $var, // Comment ); @@ -648,7 +648,7 @@ $var = (int) // Comment =====================================output===================================== dump(); $var = $a /* Comment*/->/*Comment*/ bar; -$var = $a /* Comment */['test']; +$var = $a /* Comment */["test"]; $var = $a /* Comment */ ->/* Comment */ bar(); $var = $a /* Comment */ ::/* Comment */ bar(); $a /* Comment*/->/*Comment*/ bar /* Comment */; -$a /* Comment */['test']; +$a /* Comment */["test"]; $a /* Comment */->/* Comment */ bar(); $a /* Comment */::/* Comment */ bar(); @@ -859,6 +859,8 @@ $var = new class { // Comment }; +$foo = /*a*/ new /* b */ class {}; + =====================================output===================================== taxonomy, $this->post_types) extends Taxonomy_Config { +return new class ($this->taxonomy, $this->post_types) extends Taxonomy_Config { // body of anonymous class public function get_args() { @@ -893,7 +895,7 @@ return new class($this->taxonomy, $this->post_types) extends Taxonomy_Config { } // after member function on anonymous class }; -$test = new class($arg1) extends Test { +$test = new class ($arg1) extends Test { // some comment }; @@ -941,9 +943,7 @@ class ResponseMethodFailure // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} // 424 : Method failure class ResponseMethodFailure @@ -953,9 +953,7 @@ class ResponseMethodFailure // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} // 424 : Method failure class ResponseMethodFailure @@ -965,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 { @@ -1001,6 +991,8 @@ $var = new class { // Comment }; +$foo = /*a*/ new /* b */ class {}; + ================================================================================ `; @@ -1054,13 +1046,13 @@ $var = new class { const CONSTANT = // Comment 1 // Comment 2 - 'string'; + "string"; }; $var = new class { const CONSTANT = // Comment 1 // Comment 2 - 'string'; + "string"; }; $var = new class { @@ -1068,7 +1060,7 @@ $var = new class { const CONSTANT = // Comment 2 // Comment 3 - 'string'; + "string"; }; $var = new class { @@ -1077,7 +1069,7 @@ $var = new class { public const CONSTANT = // Comment 3 // Comment 4 - 'string'; + "string"; }; ================================================================================ @@ -1467,7 +1459,7 @@ $test = foo }); $constraint = new UniqueEntity([ - 'message' => 'myMessage', + "message" => "myMessage", // no "em" option set ]); @@ -2360,14 +2352,14 @@ class Net_Sample * This is a "Docblock Comment," also known as a "docblock." The class' * docblock, below, contains a complete description of how to write these. */ -require_once 'PEAR.php'; +require_once "PEAR.php"; // {{{ constants /** * Methods return this if they succeed */ -define('NET_SAMPLE_OK', 1); +define("NET_SAMPLE_OK", 1); // }}} // {{{ GLOBALS @@ -2376,7 +2368,7 @@ define('NET_SAMPLE_OK', 1); * The number of objects created * @global int $GLOBALS['_NET_SAMPLE_Count'] */ -$GLOBALS['_NET_SAMPLE_Count'] = 0; +$GLOBALS["_NET_SAMPLE_Count"] = 0; // }}} // {{{ Net_Sample @@ -2438,7 +2430,7 @@ class Net_Sample * * @var string */ - var $foo = 'unknown'; + var $foo = "unknown"; /** * The status of life @@ -2542,11 +2534,11 @@ class Net_Sample * Docblock Comments except there is only one asterisk at the * top. phpDocumentor doesn't parse these. */ - if ($arg1 == 'good' || $arg1 == 'fair') { + if ($arg1 == "good" || $arg1 == "fair") { $this->foo = $arg1; return 1; - } elseif ($arg1 == 'poor' && $arg2 > 1) { - $this->foo = 'poor'; + } elseif ($arg1 == "poor" && $arg2 > 1) { + $this->foo = "poor"; return 2; } else { return false; @@ -2667,7 +2659,7 @@ class Foo /** @var \\Sqlite3 $sqlite */ foreach ($connections as $sqlite) { // there should be no docblock here - $sqlite->open('/my/database/path'); + $sqlite->open("/my/database/path"); } /** @@ -2686,9 +2678,7 @@ foreach ($connections as $sqlite) { * * @return string */ -function test($parameter1, $e) -{ -} +function test($parameter1, $e) {} ================================================================================ `; @@ -2755,22 +2745,22 @@ echo // Comment call( $veryVeryVeryVeryVeryVeryVeryLongArg, $veryVeryVeryVeryVeryVeryVeryLongArg, - $veryVeryVeryVeryVeryVeryVeryLongArg + $veryVeryVeryVeryVeryVeryVeryLongArg, ); echo // Comment <<> @@ -4637,6 +4610,29 @@ $a = 1; ?> ================================================================================ `; +exports[`inline9.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + exports[`interface.php 1`] = ` ====================================options===================================== parsers: ["php"] @@ -4694,9 +4690,7 @@ interface IFoo // Comment interface IFoo extends // Comment - MyClass -{ -} + MyClass {} // Comment interface IFoo extends @@ -4705,18 +4699,12 @@ interface IFoo extends // Comment MyOtherClass, // Comment - OtherClass -{ -} + OtherClass {} -interface MyInterface -{ -} +interface MyInterface {} // Comment -interface MyInterface -{ -} +interface MyInterface {} interface MyInterface { @@ -4759,7 +4747,7 @@ if (isset(/* Comment */ $a[1] /* Comment */)) { if ( isset( // Comment - $a + $a, ) ) { } @@ -4767,7 +4755,7 @@ if ( if ( isset( // Comment - $a + $a, ) ) { } @@ -4788,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 +}; ================================================================================ `; @@ -4878,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 @@ -4912,12 +4944,12 @@ class add_vendor extends request $qb_vendor->setVendorAddress( $vendor->address_1, // address 1 $vendor->address_2, // address 2 - '', // address 3 mike testing - '', // address 4 - '', // address 5 + "", // address 3 mike testing + "", // address 4 + "", // address 5 $vendor->city, // city $vendor->state, // state - $vendor->zip // state + $vendor->zip, // state ); } } @@ -5099,9 +5131,7 @@ class Foo namespace Acme; -class Foo -{ -} +class Foo {} ================================================================================ `; @@ -5143,9 +5173,7 @@ class Foo namespace Acme; -class Foo -{ -} +class Foo {} ================================================================================ `; @@ -5343,9 +5371,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5377,9 +5403,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5417,9 +5441,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5453,9 +5475,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5489,9 +5509,7 @@ namespace Monolog\\Formatter; // Comment * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5521,9 +5539,7 @@ namespace Monolog\\Formatter; // Comment * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5555,9 +5571,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5593,9 +5607,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5632,9 +5644,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5863,27 +5873,26 @@ $a = new // Comment Foo(); $a = new class// Comment - { -}; + {}; $a = new class { // Comment }; -$a = new class( +$a = new class ( // Comment $a, $b, - $c + $c, ) {}; -$a = new class( +$a = new class ( // Comemnt $a, // Comment $b, // Comment - $c + $c, ) {}; $a = new class { @@ -5908,7 +5917,7 @@ $a = new class { * * @var string */ - var $foo = 'unknown'; + var $foo = "unknown"; /** * The status of life @@ -6012,11 +6021,11 @@ $a = new class { * Docblock Comments except there is only one asterisk at the * top. phpDocumentor doesn't parse these. */ - if ($arg1 == 'good' || $arg1 == 'fair') { + if ($arg1 == "good" || $arg1 == "fair") { $this->foo = $arg1; return 1; - } elseif ($arg1 == 'poor' && $arg2 > 1) { - $this->foo = 'poor'; + } elseif ($arg1 == "poor" && $arg2 > 1) { + $this->foo = "poor"; return 2; } else { return false; @@ -6171,16 +6180,16 @@ echo /*Comment*/ $a /*Comment*/[/*Comment*/ 1 /*Comment*/] /*Comment*/; $var = $var[ // Comment - 'foo' + "foo" ][ // Comment // Comment - 'bar' + "bar" ][ // Comment // Comment - 'baz' + "baz" ][ // Comment // Comment - 'qqq' + "qqq" ]; ================================================================================ @@ -6212,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 */, + ) {} } ================================================================================ @@ -6332,7 +6333,7 @@ print // Comment print call( // Comment - $a + $a, ); print // Comment @@ -6426,13 +6427,13 @@ $var = new class { public $name = // Comment 1 // Comment 2 - 'string'; + "string"; }; $var = new class { public $name = // Comment 1 // Comment 2 - 'string'; + "string"; }; $var = new class { @@ -6440,7 +6441,7 @@ $var = new class { public $name = // Comment 2 // Comment 3 - 'string'; + "string"; }; $var = new class { @@ -6449,43 +6450,43 @@ $var = new class { public static $name = // Comment 3 // Comment 4 - 'string'; + "string"; }; class Foo { var $name1 = // Comment 1 // Comment 2 - 'string'; + "string"; private $name2 = // Comment 1 // Comment 2 - 'string'; + "string"; protected $name3 = // Comment 1 // Comment 2 - 'string'; + "string"; public $name4 = // Comment 1 // Comment 2 - 'string'; + "string"; public $bar = // Comment 1 // Comment 2 <<<'EOT' -bar -EOT; + bar + EOT; public $baz = // Comment 1 // Comment 2 << 0.8.x function ($v, $colors) { - return $util->inspect($v, ['colors' => colors]); + return $util->inspect($v, ["colors" => colors]); }; $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("../")] : []; $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 = @@ -6747,7 +6748,8 @@ static // Comment // Comment static // Comment - $a = // Comment // Comment + $a = // Comment + // Comment // Comment // Comment 2021; @@ -6913,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 */ @@ -7025,14 +7027,10 @@ class ImplementingClass } } -trait MyTrait -{ -} +trait MyTrait {} // Comment -trait MyTrait -{ -} +trait MyTrait {} trait MyTrait { @@ -7232,12 +7230,12 @@ unset(/* Comment */ $foo /* Comment */); unset( // Comment - $var + $var, ); unset( // Comment - $var + $var, ); ================================================================================ @@ -7266,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 @@ -7372,42 +7370,42 @@ $obj = // Comment $obj = // Comment 1 [ - 'key' => 'val', + "key" => "val", ]; $obj = [ // Comment 2 - 'key' => 'val', + "key" => "val", ]; $obj = [ // Comment 3 - 'key' => 'val', + "key" => "val", ]; $obj = [ // Comment 4 - 'key' => 'val', + "key" => "val", ]; $obj = // Comment 5 - ['val']; + ["val"]; -$obj = ['val']; // Comment 6 +$obj = ["val"]; // Comment 6 $obj = [ // Comment 7 - 'val', + "val", ]; $obj = [ // Comment 8 - 'val', + "val", ]; $obj = // Comment 9 - 'val'; + "val"; $obj = // Comment @@ -7527,7 +7525,7 @@ while (true) { while (true) { // Comment 2 // Comment 3 - echo 'Foo'; // Comment 4 + echo "Foo"; // Comment 4 // Comment 5 } // Comment diff --git a/tests/comments/class.php b/tests/comments/class.php index a82ac7d1a..c195da91f 100644 --- a/tests/comments/class.php +++ b/tests/comments/class.php @@ -134,3 +134,5 @@ class MyClass $var = new class { // Comment }; + +$foo = /*a*/ new /* b */ class {}; 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 91% rename from tests/constant/__snapshots__/jsfmt.spec.js.snap rename to tests/constant/__snapshots__/jsfmt.spec.mjs.snap index 4736e82ce..fe4aacc34 100644 --- a/tests/constant/__snapshots__/jsfmt.spec.js.snap +++ b/tests/constant/__snapshots__/jsfmt.spec.mjs.snap @@ -63,18 +63,18 @@ const VERY_VERY_VERY_VERY_VERY_VERY_VERY_LONG_FIRST_FIRST = "Hello", VERY_VERY_VERY_VERY_VERY_VERY_VERY_LONG_SECOND = "world", VERY_VERY_VERY_VERY_VERY_VERY_VERY_LONG_FIRST_THIRD = "!"; -const ARRAY_1 = ['value', 'other-value'], - ARRAY_2 = ['value', 'other-value']; +const ARRAY_1 = ["value", "other-value"], + ARRAY_2 = ["value", "other-value"]; const STRING = - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; const FOOF = 'string string 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 98% rename from tests/declare/__snapshots__/jsfmt.spec.js.snap rename to tests/declare/__snapshots__/jsfmt.spec.mjs.snap index e66ef6be2..cca4e56e0 100644 --- a/tests/declare/__snapshots__/jsfmt.spec.js.snap +++ b/tests/declare/__snapshots__/jsfmt.spec.mjs.snap @@ -44,7 +44,7 @@ $test = 1; declare(ticks=1) { $test = 1; } -declare(encoding='ISO-8859-1'); +declare(encoding="ISO-8859-1"); $test = 1; declare(ticks=1): $test = 1; @@ -484,16 +484,16 @@ enddeclare; =====================================output===================================== property, $object->method(), method(), $foo ? true : false; -echo 1000000000 . 'String', +echo 1000000000 . "String", $object->property + $object->method(), - method(method('string')), - $foo ? $bar . 'foo' . 'test' : false; + method(method("string")), + $foo ? $bar . "foo" . "test" : false; echo $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable->veryVeryVeryVeryVeryVeryLongProperty; @@ -317,98 +317,98 @@ echo "Loop start!\\n", sleep(1); echo esc_html( sprintf( __( - 'Hi there. Your recent order on %s has been completed. ' . - 'Your order details are shown below for your reference:', - 'woocommerce' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "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' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "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' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "woocommerce", ), - get_option('blogname') - ) + get_option("blogname"), + ), ) . "\\n\\n", "string"; echo esc_html( sprintf( __( - 'Hi there. Your recent order on %s has been completed. ' . - 'Your order details are shown below for your reference:', - 'woocommerce' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "woocommerce", ), - get_option('blogname') - ) + get_option("blogname"), + ), ) . "\\n\\n", "string" . "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; echo esc_html( sprintf( __( - 'Hi there. Your recent order on %s has been completed. ' . - 'Your order details are shown below for your reference:', - 'woocommerce' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "woocommerce", ), - get_option('blogname') - ) + get_option("blogname"), + ), ), "string", "string"; echo esc_html( sprintf( __( - 'Hi there. Your recent order on %s has been completed. ' . - 'Your order details are shown below for your reference:', - 'woocommerce' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "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' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "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' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "woocommerce", ), - get_option('blogname') - ) + get_option("blogname"), + ), ), "string", esc_html( sprintf( __( - 'Hi there. Your recent order on %s has been completed. ' . - 'Your order details are shown below for your reference:', - 'woocommerce' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "woocommerce", ), - get_option('blogname') - ) + get_option("blogname"), + ), ); echo <<notExisting); empty($registry->notExisting->foo); empty($this->_items[$key]); diff --git a/tests/empty/jsfmt.spec.js b/tests/empty/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/empty/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/empty/jsfmt.spec.mjs b/tests/empty/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/empty/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/encapsed/__snapshots__/jsfmt.spec.js.snap b/tests/encapsed/__snapshots__/jsfmt.spec.js.snap deleted file mode 100644 index 3c3d99261..000000000 --- a/tests/encapsed/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,1000 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`encapsed.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -bzr_{1}; -$var = $foo->bzr_{'string'}; -$var = $foo->bzr_{$baz}; -$var = $foo->bzr_{$baz->foo}; -$var = $foo->bzr_{$var ? 'one' : 'two'}; -$var = $foo->bzr_{$veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar ? $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar : $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar}; -$var = $foo->bzr_{(function () { return 1; })($var)}; - -$var = "{$this->target->resource->binary}"; -$var = "{$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVar()}"; -$var = "{$this->target->resource->binary['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVertyVeryLongString']}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; -$var = "{$this->target->resource->binary} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; -$var = "My name is {\${getName($arg, 'string', 1024, $var ? true : false, ['foo' => 'bar', 'bar' => 'foo'])}}"; -$var = "My name is {\${getName($veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar)}}"; - -$encapsHereDoc = <<target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} - Hello World {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} -STR; - - -$var = $this->swift->{'set'}($address, $name); -$var = $this->swift->{'set' . 'Offset'}($address, $name); -$var = $this->swift->{"set"}($address, $name); -$var = $this->swift->{"set{$type}"}($address, $name); - -$var = "string \${$var} string"; -$var = "string $var string"; -$var = "string {$var} string"; -$var = "string $var->foo string"; -$var = "string {$var->foo} string"; -$var = "string $var->foo->baz string"; -$var = "string {$var->foo->bar} string"; -$var = "string {$var->call()} string"; -$var = "string {$var::$foo} string"; -$var = "string {$var::call()} string"; -$var = "string $var[0] string"; -$var = "string {$var[0]} string"; -$var = "string $var[0][0] string"; -$var = "string {$var[0][0]} string"; -$var = "string $var[0]->bar string"; -$var = "string {$var[0]->bar} string"; -$var = "string {\${$var}} string"; -$var = "string {\${call()}} string"; -$var = "string {\${$var->foo}} string"; -$var = "string {\${$var->call()}} string"; -$var = "string {\${$var::$var}} string"; -$var = "string {\${$var::call()}} string"; -$var = "string $foo->{$baz[1]} string"; -$var = "string {$foo->{$baz[1]}} string"; -$var = "string {$var->foo->bar/* Comment */} string"; -$var = "string {$var->foo->bar /* Comment */ } string"; -$var = "string {$var->foo->bar -} string"; - -$expected = array( - 'test' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'foo' => 'bar' -); -$expected = array( - 'foo' => 'bar', - 'test' => <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - 'foo' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'baz' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'test' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -$var = <<bar text."; - -// T_DOLLAR_OPEN_CURLY_BRACES expr '}' -echo "text \${$test} text."; -echo "text \${$$$test} text."; -echo "text \${call()} text."; -echo "text \${true || false} text."; -echo "text \${$var ? 'foo' : 'bar'} text."; -echo "text \${'test' + 'test'} text."; -echo "text \${'test'} text."; - -// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' -echo "text \${foo} text"; - -// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' -echo "text \${foo['foo']} text"; -echo "text \${foo[foo]} text"; -echo "text \${foo[call()]} text"; -echo "text \${foo[$var ? 'foo' : 'bar']} text"; - -// T_CURLY_OPEN variable '}' -echo "text {$var} text"; -echo "text {$var['test']} text"; -echo "text {$var->test} text"; -echo "text {$var::$test} text"; - -echo <<< END - a - b -c -END; - -echo <<< END - a - b -c -END; - -echo <<< 'END' - a - b -c -END; - -echo <<< 'END' - a - b -c -END; - -$php73FlexibleHeredoc = <<bzr_[1]; -$var = $foo->bzr_['string']; -$var = $foo->bzr_[$baz]; -$var = $foo->bzr_[$baz->foo]; -$var = $foo->bzr_[$var ? 'one' : 'two']; -$var = - $foo->bzr_[ - $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar - ? $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar - : $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar - ]; -$var = - $foo->bzr_[ - (function () { - return 1; - })($var) - ]; - -$var = "{$this->target->resource->binary}"; -$var = "{$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVar()}"; -$var = "{$this->target->resource->binary['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVertyVeryLongString']}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; -$var = "{$this->target->resource->binary} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; -$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; -$var = "My name is {\${getName($arg, 'string', 1024, $var ? true : false, [ - 'foo' => 'bar', - 'bar' => 'foo', -])}}"; -$var = "My name is {\${getName( - $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, - $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, - $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar -)}}"; - -$encapsHereDoc = <<target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} - Hello World {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} -STR; - -$var = $this->swift->{'set'}($address, $name); -$var = $this->swift->{'set' . 'Offset'}($address, $name); -$var = $this->swift->{"set"}($address, $name); -$var = $this->swift->{"set{$type}"}($address, $name); - -$var = "string \${$var} string"; -$var = "string $var string"; -$var = "string {$var} string"; -$var = "string $var->foo string"; -$var = "string {$var->foo} string"; -$var = "string $var->foo->baz string"; -$var = "string {$var->foo->bar} string"; -$var = "string {$var->call()} string"; -$var = "string {$var::$foo} string"; -$var = "string {$var::call()} string"; -$var = "string $var[0] string"; -$var = "string {$var[0]} string"; -$var = "string $var[0][0] string"; -$var = "string {$var[0][0]} string"; -$var = "string $var[0]->bar string"; -$var = "string {$var[0]->bar} string"; -$var = "string {\${$var}} string"; -$var = "string {\${call()}} string"; -$var = "string {\${$var->foo}} string"; -$var = "string {\${$var->call()}} string"; -$var = "string {\${$var::$var}} string"; -$var = "string {\${$var::call()}} string"; -$var = "string $foo->{$baz[1]} string"; -$var = "string {$foo->{$baz[1]}} string"; -$var = "string {$var->foo->bar /* Comment */} string"; -$var = "string {$var->foo->bar /* Comment */} string"; -$var = "string {$var->foo->bar} string"; - -$expected = [ - 'test' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'foo' => 'bar', -]; -$expected = [ - 'foo' => 'bar', - 'test' => <<<'EOT' -foo -# bar -baz - -EOT -, -]; -$expected = [ - 'foo' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'baz' => <<<'EOT' -foo -# bar -baz - -EOT -, -]; -$expected = [ - 'test' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'collection' => [ - [ - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - , - ], - [ - 'two' => <<<'EOT' -foo -# bar -baz -EOT - , - ], - ], -]; - -$var = - <<bar text."; - -// T_DOLLAR_OPEN_CURLY_BRACES expr '}' -echo "text \${$test} text."; -echo "text \${$$$test} text."; -echo "text \${call()} text."; -echo "text \${true || false} text."; -echo "text \${$var ? 'foo' : 'bar'} text."; -echo "text \${'test' + 'test'} text."; -echo "text \${'test'} text."; - -// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' -echo "text \${foo} text"; - -// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' -echo "text \${foo['foo']} text"; -echo "text \${foo[foo]} text"; -echo "text \${foo[call()]} text"; -echo "text \${foo[$var ? 'foo' : 'bar']} text"; - -// T_CURLY_OPEN variable '}' -echo "text {$var} text"; -echo "text {$var['test']} text"; -echo "text {$var->test} text"; -echo "text {$var::$test} text"; - -echo <<bzr_{1}; +$var = $foo->bzr_{'string'}; +$var = $foo->bzr_{$baz}; +$var = $foo->bzr_{$baz->foo}; +$var = $foo->bzr_{$var ? 'one' : 'two'}; +$var = $foo->bzr_{$veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar ? $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar : $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar}; +$var = $foo->bzr_{(function () { return 1; })($var)}; + +$var = "{$this->target->resource->binary}"; +$var = "{$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVar()}"; +$var = "{$this->target->resource->binary['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVertyVeryLongString']}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "{$this->target->resource->binary} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "My name is {\${getName($arg, 'string', 1024, $var ? true : false, ['foo' => 'bar', 'bar' => 'foo'])}}"; +$var = "My name is {\${getName($veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar)}}"; + +$encapsHereDoc = <<target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} + Hello World {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} +STR; + + +$var = $this->swift->{'set'}($address, $name); +$var = $this->swift->{'set' . 'Offset'}($address, $name); +$var = $this->swift->{"set"}($address, $name); +$var = $this->swift->{"set{$type}"}($address, $name); + +$var = "string \${$var} string"; +$var = "string $var string"; +$var = "string {$var} string"; +$var = "string $var->foo string"; +$var = "string {$var->foo} string"; +$var = "string $var->foo->baz string"; +$var = "string {$var->foo->bar} string"; +$var = "string {$var->call()} string"; +$var = "string {$var::$foo} string"; +$var = "string {$var::call()} string"; +$var = "string $var[0] string"; +$var = "string {$var[0]} string"; +$var = "string $var[0][0] string"; +$var = "string {$var[0][0]} string"; +$var = "string $var[0]->bar string"; +$var = "string {$var[0]->bar} string"; +$var = "string {\${$var}} string"; +$var = "string {\${call()}} string"; +$var = "string {\${$var->foo}} string"; +$var = "string {\${$var->call()}} string"; +$var = "string {\${$var::$var}} string"; +$var = "string {\${$var::call()}} string"; +$var = "string $foo->{$baz[1]} string"; +$var = "string {$foo->{$baz[1]}} string"; +$var = "string {$var->foo->bar/* Comment */} string"; +$var = "string {$var->foo->bar /* Comment */ } string"; +$var = "string {$var->foo->bar +} string"; + +$expected = array( + 'test' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'foo' => 'bar' +); +$expected = array( + 'foo' => 'bar', + 'test' => <<<'EOT' +foo +# bar +baz + +EOT +); +$expected = array( + 'foo' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'baz' => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'test' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + ) + ) +); + +$var = <<bar text."; + +// T_DOLLAR_OPEN_CURLY_BRACES expr '}' +echo "text \${$test} text."; +echo "text \${$$$test} text."; +echo "text \${call()} text."; +echo "text \${true || false} text."; +echo "text \${$var ? 'foo' : 'bar'} text."; +echo "text \${'test' + 'test'} text."; +echo "text \${'test'} text."; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' +echo "text \${foo} text"; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' +echo "text \${foo['foo']} text"; +echo "text \${foo[foo]} text"; +echo "text \${foo[call()]} text"; +echo "text \${foo[$var ? 'foo' : 'bar']} text"; + +// T_CURLY_OPEN variable '}' +echo "text {$var} text"; +echo "text {$var['test']} text"; +echo "text {$var->test} text"; +echo "text {$var::$test} text"; + +echo <<< END + a + b +c +END; + +echo <<< END + a + b +c +END; + +echo <<< 'END' + a + b +c +END; + +echo <<< 'END' + a + b +c +END; + +$php73FlexibleHeredoc = <<bzr_[1]; +$var = $foo->bzr_["string"]; +$var = $foo->bzr_[$baz]; +$var = $foo->bzr_[$baz->foo]; +$var = $foo->bzr_[$var ? "one" : "two"]; +$var = + $foo->bzr_[ + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar + ? $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar + : $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar + ]; +$var = + $foo->bzr_[ + (function () { + return 1; + })($var) + ]; + +$var = "{$this->target->resource->binary}"; +$var = "{$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVar()}"; +$var = "{$this->target->resource->binary["veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVertyVeryLongString"]}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "{$this->target->resource->binary} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "My name is {\${getName($arg, "string", 1024, $var ? true : false, [ + "foo" => "bar", + "bar" => "foo", +])}}"; +$var = "My name is {\${getName( + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar +)}}"; + +$encapsHereDoc = <<target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} + Hello World {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} +STR; + +$var = $this->swift->{'set'}($address, $name); +$var = $this->swift->{"set" . "Offset"}($address, $name); +$var = $this->swift->{"set"}($address, $name); +$var = $this->swift->{"set{$type}"}($address, $name); + +$var = "string \${$var} string"; +$var = "string $var string"; +$var = "string {$var} string"; +$var = "string $var->foo string"; +$var = "string {$var->foo} string"; +$var = "string $var->foo->baz string"; +$var = "string {$var->foo->bar} string"; +$var = "string {$var->call()} string"; +$var = "string {$var::$foo} string"; +$var = "string {$var::call()} string"; +$var = "string $var[0] string"; +$var = "string {$var[0]} string"; +$var = "string $var[0][0] string"; +$var = "string {$var[0][0]} string"; +$var = "string $var[0]->bar string"; +$var = "string {$var[0]->bar} string"; +$var = "string {\${$var}} string"; +$var = "string {\${call()}} string"; +$var = "string {\${$var->foo}} string"; +$var = "string {\${$var->call()}} string"; +$var = "string {\${$var::$var}} string"; +$var = "string {\${$var::call()}} string"; +$var = "string $foo->{$baz[1]} string"; +$var = "string {$foo->{$baz[1]}} string"; +$var = "string {$var->foo->bar /* Comment */} string"; +$var = "string {$var->foo->bar /* Comment */} string"; +$var = "string {$var->foo->bar} string"; + +$expected = [ + "test" => <<<'EOT' +foo +# bar +baz + +EOT + , + "foo" => "bar", +]; +$expected = [ + "foo" => "bar", + "test" => <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "foo" => <<<'EOT' +foo +# bar +baz + +EOT + , + "bar" => <<<'EOT' +foo +# bar +baz + +EOT + , + "baz" => <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "test" => <<<'EOT' +foo +# bar +baz + +EOT + , + "collection" => [ + [ + "one" => <<<'EOT' +foo +# bar +baz + +EOT + , + ], + [ + "two" => <<<'EOT' +foo +# bar +baz +EOT + , + ], + ], +]; + +$var = + <<veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall["offset"]} string"; +$var = "String {$veryVeryVeryVeryVeryVeryVeryVeryVaryVaryVaryVaryVaryLongNameObj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall()["offset"]->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall()["offset"]} string"; + +echo "This is my array value: $anArray[key]"; +echo "This is my array value: $anArray[$key]"; +echo "This is my array value: {$anArray[key]}"; +echo "This is my array value: {$anArray[$var]}"; + +$message = "Unresolvable dependency resolving [$parameter] in class {$parameter->getDeclaringClass()->getName()}"; + +$var = "string \${juices["FOO"]} string"; + +// T_VARIABLE +echo "text $foo text."; + +// T_VARIABLE '[' encaps_var_offset ']' +echo "text $foo[name] text."; +echo "text $foo[1] text."; +// echo "text $foo[-1] text."; +echo "text $foo[$var] text."; +echo "text $foo[koolaid1] text."; + +// T_VARIABLE T_OBJECT_OPERATOR T_STRING +echo "text $foo->bar text."; + +// T_DOLLAR_OPEN_CURLY_BRACES expr '}' +echo "text \${$test} text."; +echo "text \${$$$test} text."; +echo "text \${call()} text."; +echo "text \${true || false} text."; +echo "text \${$var ? "foo" : "bar"} text."; +echo "text \${"test" + "test"} text."; +echo "text \${"test"} text."; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' +echo "text \${foo} text"; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' +echo "text \${foo["foo"]} text"; +echo "text \${foo[foo]} text"; +echo "text \${foo[call()]} text"; +echo "text \${foo[$var ? "foo" : "bar"]} text"; + +// T_CURLY_OPEN variable '}' +echo "text {$var} text"; +echo "text {$var["test"]} text"; +echo "text {$var->test} text"; +echo "text {$var::$test} text"; + +echo <<bzr_{1}; +$var = $foo->bzr_{'string'}; +$var = $foo->bzr_{$baz}; +$var = $foo->bzr_{$baz->foo}; +$var = $foo->bzr_{$var ? 'one' : 'two'}; +$var = $foo->bzr_{$veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar ? $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar : $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar}; +$var = $foo->bzr_{(function () { return 1; })($var)}; + +$var = "{$this->target->resource->binary}"; +$var = "{$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVar()}"; +$var = "{$this->target->resource->binary['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVertyVeryLongString']}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "{$this->target->resource->binary} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "My name is {\${getName($arg, 'string', 1024, $var ? true : false, ['foo' => 'bar', 'bar' => 'foo'])}}"; +$var = "My name is {\${getName($veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar)}}"; + +$encapsHereDoc = <<target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} + Hello World {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} +STR; + + +$var = $this->swift->{'set'}($address, $name); +$var = $this->swift->{'set' . 'Offset'}($address, $name); +$var = $this->swift->{"set"}($address, $name); +$var = $this->swift->{"set{$type}"}($address, $name); + +$var = "string \${$var} string"; +$var = "string $var string"; +$var = "string {$var} string"; +$var = "string $var->foo string"; +$var = "string {$var->foo} string"; +$var = "string $var->foo->baz string"; +$var = "string {$var->foo->bar} string"; +$var = "string {$var->call()} string"; +$var = "string {$var::$foo} string"; +$var = "string {$var::call()} string"; +$var = "string $var[0] string"; +$var = "string {$var[0]} string"; +$var = "string $var[0][0] string"; +$var = "string {$var[0][0]} string"; +$var = "string $var[0]->bar string"; +$var = "string {$var[0]->bar} string"; +$var = "string {\${$var}} string"; +$var = "string {\${call()}} string"; +$var = "string {\${$var->foo}} string"; +$var = "string {\${$var->call()}} string"; +$var = "string {\${$var::$var}} string"; +$var = "string {\${$var::call()}} string"; +$var = "string $foo->{$baz[1]} string"; +$var = "string {$foo->{$baz[1]}} string"; +$var = "string {$var->foo->bar/* Comment */} string"; +$var = "string {$var->foo->bar /* Comment */ } string"; +$var = "string {$var->foo->bar +} string"; + +$expected = array( + 'test' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'foo' => 'bar' +); +$expected = array( + 'foo' => 'bar', + 'test' => <<<'EOT' +foo +# bar +baz + +EOT +); +$expected = array( + 'foo' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'baz' => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'test' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + ) + ) +); + +$var = <<bar text."; + +// T_DOLLAR_OPEN_CURLY_BRACES expr '}' +echo "text \${$test} text."; +echo "text \${$$$test} text."; +echo "text \${call()} text."; +echo "text \${true || false} text."; +echo "text \${$var ? 'foo' : 'bar'} text."; +echo "text \${'test' + 'test'} text."; +echo "text \${'test'} text."; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' +echo "text \${foo} text"; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' +echo "text \${foo['foo']} text"; +echo "text \${foo[foo]} text"; +echo "text \${foo[call()]} text"; +echo "text \${foo[$var ? 'foo' : 'bar']} text"; + +// T_CURLY_OPEN variable '}' +echo "text {$var} text"; +echo "text {$var['test']} text"; +echo "text {$var->test} text"; +echo "text {$var::$test} text"; + +echo <<< END + a + b +c +END; + +echo <<< END + a + b +c +END; + +echo <<< 'END' + a + b +c +END; + +echo <<< 'END' + a + b +c +END; + +$php73FlexibleHeredoc = <<bzr_[1]; +$var = $foo->bzr_["string"]; +$var = $foo->bzr_[$baz]; +$var = $foo->bzr_[$baz->foo]; +$var = $foo->bzr_[$var ? "one" : "two"]; +$var = + $foo->bzr_[ + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar + ? $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar + : $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar + ]; +$var = + $foo->bzr_[ + (function () { + return 1; + })($var) + ]; + +$var = "{$this->target->resource->binary}"; +$var = "{$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVar()}"; +$var = "{$this->target->resource->binary["veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVertyVeryLongString"]}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "{$this->target->resource->binary} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo}"; +$var = "{$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()}"; +$var = "My name is {\${getName($arg, "string", 1024, $var ? true : false, [ + "foo" => "bar", + "bar" => "foo", +])}}"; +$var = "My name is {\${getName( + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, + $veryVeryVeryVeryVeryVeryVeryVeryVeryLongVar, +)}}"; + +$encapsHereDoc = <<target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo} + Hello World {$this->target->resource->binary->foo->bar->foobar->bar->foo->foobar->bar->foo()} +STR; + +$var = $this->swift->{'set'}($address, $name); +$var = $this->swift->{"set" . "Offset"}($address, $name); +$var = $this->swift->{"set"}($address, $name); +$var = $this->swift->{"set{$type}"}($address, $name); + +$var = "string \${$var} string"; +$var = "string $var string"; +$var = "string {$var} string"; +$var = "string $var->foo string"; +$var = "string {$var->foo} string"; +$var = "string $var->foo->baz string"; +$var = "string {$var->foo->bar} string"; +$var = "string {$var->call()} string"; +$var = "string {$var::$foo} string"; +$var = "string {$var::call()} string"; +$var = "string $var[0] string"; +$var = "string {$var[0]} string"; +$var = "string $var[0][0] string"; +$var = "string {$var[0][0]} string"; +$var = "string $var[0]->bar string"; +$var = "string {$var[0]->bar} string"; +$var = "string {\${$var}} string"; +$var = "string {\${call()}} string"; +$var = "string {\${$var->foo}} string"; +$var = "string {\${$var->call()}} string"; +$var = "string {\${$var::$var}} string"; +$var = "string {\${$var::call()}} string"; +$var = "string $foo->{$baz[1]} string"; +$var = "string {$foo->{$baz[1]}} string"; +$var = "string {$var->foo->bar /* Comment */} string"; +$var = "string {$var->foo->bar /* Comment */} string"; +$var = "string {$var->foo->bar} string"; + +$expected = [ + "test" => <<<'EOT' + foo + # bar + baz + + EOT + , + "foo" => "bar", +]; +$expected = [ + "foo" => "bar", + "test" => <<<'EOT' + foo + # bar + baz + + EOT +, +]; +$expected = [ + "foo" => <<<'EOT' + foo + # bar + baz + + EOT + , + "bar" => <<<'EOT' + foo + # bar + baz + + EOT + , + "baz" => <<<'EOT' + foo + # bar + baz + + EOT +, +]; +$expected = [ + "test" => <<<'EOT' + foo + # bar + baz + + EOT + , + "collection" => [ + [ + "one" => <<<'EOT' + foo + # bar + baz + + EOT + , + ], + [ + "two" => <<<'EOT' + foo + # bar + baz + EOT + , + ], + ], +]; + +$var = + <<veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall["offset"]} string"; +$var = "String {$veryVeryVeryVeryVeryVeryVeryVeryVaryVaryVaryVaryVaryLongNameObj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall()["offset"]->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongCall()["offset"]} string"; + +echo "This is my array value: $anArray[key]"; +echo "This is my array value: $anArray[$key]"; +echo "This is my array value: {$anArray[key]}"; +echo "This is my array value: {$anArray[$var]}"; + +$message = "Unresolvable dependency resolving [$parameter] in class {$parameter->getDeclaringClass()->getName()}"; + +$var = "string \${juices["FOO"]} string"; + +// T_VARIABLE +echo "text $foo text."; + +// T_VARIABLE '[' encaps_var_offset ']' +echo "text $foo[name] text."; +echo "text $foo[1] text."; +// echo "text $foo[-1] text."; +echo "text $foo[$var] text."; +echo "text $foo[koolaid1] text."; + +// T_VARIABLE T_OBJECT_OPERATOR T_STRING +echo "text $foo->bar text."; + +// T_DOLLAR_OPEN_CURLY_BRACES expr '}' +echo "text \${$test} text."; +echo "text \${$$$test} text."; +echo "text \${call()} text."; +echo "text \${true || false} text."; +echo "text \${$var ? "foo" : "bar"} text."; +echo "text \${"test" + "test"} text."; +echo "text \${"test"} text."; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' +echo "text \${foo} text"; + +// T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' +echo "text \${foo["foo"]} text"; +echo "text \${foo[foo]} text"; +echo "text \${foo[call()]} text"; +echo "text \${foo[$var ? "foo" : "bar"]} text"; + +// T_CURLY_OPEN variable '}' +echo "text {$var} text"; +echo "text {$var["test"]} text"; +echo "text {$var->test} text"; +echo "text {$var::$test} text"; + +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 78% rename from tests/errors/__snapshots__/jsfmt.spec.js.snap rename to tests/errors/__snapshots__/jsfmt.spec.mjs.snap index d9d90ad26..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,14 +55,27 @@ try { // Comment } +// PHP 8.0 non-capturing exception catch +try { + // Something +} catch (\\Exception) { + // Nothing +} + +try { + // Something +} catch (MyException | OtherException) { + // Nothing +} + =====================================output===================================== getMessage(); + echo "Caught exception: ", $e->getMessage(); } catch (OtherException $i) { - echo 'Caugh other'; + echo "Caugh other"; } finally { echo "First finally"; } @@ -84,10 +97,10 @@ try { } throw new VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassException( - 'exception' + "exception", ); throw $e; -throw new \\Exception('Bad logic in order cancel'); +throw new \\Exception("Bad logic in order cancel"); try { } catch (Exception $e) { @@ -107,5 +120,18 @@ try { // Comment } +// PHP 8.0 non-capturing exception catch +try { + // Something +} catch (\\Exception) { + // Nothing +} + +try { + // Something +} catch (MyException | OtherException) { + // Nothing +} + ================================================================================ `; diff --git a/tests/errors/errors.php b/tests/errors/errors.php index a79e3096d..e6a9ab14f 100644 --- a/tests/errors/errors.php +++ b/tests/errors/errors.php @@ -46,3 +46,16 @@ } finally { // Comment } + +// PHP 8.0 non-capturing exception catch +try { + // Something +} catch (\Exception) { + // Nothing +} + +try { + // Something +} catch (MyException | OtherException) { + // Nothing +} diff --git a/tests/errors/jsfmt.spec.js b/tests/errors/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/errors/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/errors/jsfmt.spec.mjs b/tests/errors/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/errors/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/eval/__snapshots__/jsfmt.spec.js.snap b/tests/eval/__snapshots__/jsfmt.spec.mjs.snap similarity index 93% rename from tests/eval/__snapshots__/jsfmt.spec.js.snap rename to tests/eval/__snapshots__/jsfmt.spec.mjs.snap index cadcfa131..e818cc48c 100644 --- a/tests/eval/__snapshots__/jsfmt.spec.js.snap +++ b/tests/eval/__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[`eval.php 1`] = ` ====================================options===================================== @@ -81,7 +81,7 @@ $obj = eval('return new class($value) =====================================output===================================== ['very-very-very-long-value'], - 'bar' => ['very-very-very-long-value'], + "foo" => ["very-very-very-long-value"], + "bar" => ["very-very-very-long-value"], ] as $veryVeryVeryVeryVeryVeryVeryVeryLongKey ) { } foreach ( [ - 'foo' => ['very-very-very-long-value'], - 'bar' => ['very-very-very-long-value'], + "foo" => ["very-very-very-long-value"], + "bar" => ["very-very-very-long-value"], ] as $veryVeryVeryVeryVeryVeryVeryVeryLongKey => $veryVeryVeryVeryVeryVeryVeryVeryLongValue @@ -159,8 +159,8 @@ foreach ( foreach ( [ - 'one' => ['string', 'other-string'], - 'two' => ['string', 'other-string'], + "one" => ["string", "other-string"], + "two" => ["string", "other-string"], ] as $key => $aliases ) { diff --git a/tests/foreach/jsfmt.spec.js b/tests/foreach/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/foreach/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/foreach/jsfmt.spec.mjs b/tests/foreach/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/foreach/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/formatting/__snapshots__/jsfmt.spec.js.snap b/tests/formatting/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/formatting/__snapshots__/jsfmt.spec.js.snap rename to tests/formatting/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/formatting/jsfmt.spec.js b/tests/formatting/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/formatting/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/formatting/jsfmt.spec.mjs b/tests/formatting/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/formatting/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/functions/__snapshots__/jsfmt.spec.js.snap b/tests/functions/__snapshots__/jsfmt.spec.mjs.snap similarity index 88% rename from tests/functions/__snapshots__/jsfmt.spec.js.snap rename to tests/functions/__snapshots__/jsfmt.spec.mjs.snap index d1f444fad..eb4b28444 100644 --- a/tests/functions/__snapshots__/jsfmt.spec.js.snap +++ b/tests/functions/__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[`functions.php 1`] = ` ====================================options===================================== @@ -82,6 +82,10 @@ function testReturn(?string $name): ?string return $name; } +function test_return_never(): never { + exit(); +} + function swap(&$left, &$right): void { if ($left === $right) { @@ -201,7 +205,7 @@ function two_args_other($x, $y, $z, $foo, $bar) function reeeeeeeeeeaaaaaaaallllllllyyyyyy_llloooooooonnnnnnggggg( $soooooooooooo_looooooooonnnng, - $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr + $eeeeeeeeevvveeeeeeeennnn_loooooonnngggeeeerrrr, ) { return $soooooooooooo_looooooooonnnng; } @@ -225,7 +229,7 @@ function type_hinting_test( float $float_test, iterable $iterable_test, int $int_test, - string $string_test = '' + string $string_test = "", ) { return $int_test; } @@ -238,7 +242,7 @@ $anonymousLongVariableName = function ( $name, $more, $params, - $looooooooooooooooooooooooooooooooong + $looooooooooooooooooooooooooooooooong, ) use ($all, $kinds, $of, $stuff) { printf("Hello %s", $name); }; @@ -252,7 +256,7 @@ $silent = @hello(); function returnTypeTest(): string { - return 'hi'; + return "hi"; } function &passByReferenceTest() @@ -261,9 +265,7 @@ function &passByReferenceTest() return $a; } -function foo(iterable $iterable = []) -{ -} +function foo(iterable $iterable = []) {} function bar(): iterable { @@ -282,6 +284,11 @@ function testReturn(?string $name): ?string return $name; } +function test_return_never(): never +{ + exit(); +} + function swap(&$left, &$right): void { if ($left === $right) { @@ -300,21 +307,21 @@ function test(object $obj): object function returnTypeTestOther(): string { - return 'hi'; + return "hi"; } function returnTypeTestOtherOther(): string { - return 'hi'; + return "hi"; } function the_panel_title( $title = null, - $classes = 'panel-title', + $classes = "panel-title", $data_name = null, $data_livetext = false, $depth = 0, - $index = 0 + $index = 0, ) { if (empty($title) && !is_panel_preview()) { return ""; @@ -323,9 +330,7 @@ function the_panel_title( return $title; } -function emptyFunction() -{ -} +function emptyFunction() {} function emptyFunctionWithComment() { /* Comment */ @@ -337,59 +342,42 @@ abstract class AbstractClass abstract public function otherVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName(); abstract public function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongNameAndBreak( $title = null, - $classes = 'panel-title', + $classes = "panel-title", $data_name = null, $data_livetext = false, $depth = 0, - $index = 0 + $index = 0, ); } class Foo { - public function shortName() - { - } - public function floatShortName(): float - { - } - public function otherShortName() - { - } - public function otherOtherShortName($arg) - { - } + public function shortName() {} + public function floatShortName(): float {} + public function otherShortName() {} + public function otherOtherShortName($arg) {} public function shortNameAndBreak( $title = null, - $classes = 'panel-title', + $classes = "panel-title", $data_name = null, $data_livetext = false, $depth = 0, - $index = 0 - ) { - } - public function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() - { - } - public function floatVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName(): float - { - } - public function otherVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() - { - } + $index = 0, + ) {} + public function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() {} + public function floatVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName(): float {} + public function otherVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName() {} public function otherOtherVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongName( - $arg - ) { - } + $arg, + ) {} public function veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongNameAndBreak( $title = null, - $classes = 'panel-title', + $classes = "panel-title", $data_name = null, $data_livetext = false, $depth = 0, - $index = 0 - ) { - } + $index = 0, + ) {} } ================================================================================ diff --git a/tests/functions/functions.php b/tests/functions/functions.php index e69a8ba35..536683f1d 100644 --- a/tests/functions/functions.php +++ b/tests/functions/functions.php @@ -74,6 +74,10 @@ function testReturn(?string $name): ?string return $name; } +function test_return_never(): never { + exit(); +} + function swap(&$left, &$right): void { if ($left === $right) { diff --git a/tests/functions/jsfmt.spec.js b/tests/functions/jsfmt.spec.js deleted file mode 100644 index 5378de169..000000000 --- a/tests/functions/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/functions/jsfmt.spec.mjs b/tests/functions/jsfmt.spec.mjs new file mode 100644 index 000000000..4d43d0cbd --- /dev/null +++ b/tests/functions/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/global/__snapshots__/jsfmt.spec.js.snap b/tests/global/__snapshots__/jsfmt.spec.mjs.snap similarity index 100% rename from tests/global/__snapshots__/jsfmt.spec.js.snap rename to tests/global/__snapshots__/jsfmt.spec.mjs.snap diff --git a/tests/global/jsfmt.spec.js b/tests/global/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/global/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/global/jsfmt.spec.mjs b/tests/global/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/global/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/goto/__snapshots__/jsfmt.spec.js.snap b/tests/goto/__snapshots__/jsfmt.spec.mjs.snap similarity index 96% rename from tests/goto/__snapshots__/jsfmt.spec.js.snap rename to tests/goto/__snapshots__/jsfmt.spec.mjs.snap index c4db9342e..debc8f6c2 100644 --- a/tests/goto/__snapshots__/jsfmt.spec.js.snap +++ b/tests/goto/__snapshots__/jsfmt.spec.mjs.snap @@ -16,10 +16,10 @@ echo 'Bar'; =====================================output===================================== null]; -$var = ['foo' => null]; +$var = ["foo" => null]; +$var = ["foo" => null]; // Should don't change diff --git a/tests/identifier-and-reference/jsfmt.spec.js b/tests/identifier-and-reference/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/identifier-and-reference/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/identifier-and-reference/jsfmt.spec.mjs b/tests/identifier-and-reference/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/identifier-and-reference/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/if/__snapshots__/jsfmt.spec.js.snap b/tests/if/__snapshots__/jsfmt.spec.mjs.snap similarity index 98% rename from tests/if/__snapshots__/jsfmt.spec.js.snap rename to tests/if/__snapshots__/jsfmt.spec.mjs.snap index 9c2056132..e975389ae 100644 --- a/tests/if/__snapshots__/jsfmt.spec.js.snap +++ b/tests/if/__snapshots__/jsfmt.spec.mjs.snap @@ -227,7 +227,7 @@ if (true) { } if ( - $showNoticeValue === '1' && + $showNoticeValue === "1" && !is_null($currentService) && $currentService->getServiceId() === $activation->getServiceId() ) { @@ -235,7 +235,7 @@ if ( } if ( - $showNoticeValue === '1' && + $showNoticeValue === "1" && !is_null($currentService) && $currentService->getServiceIdWithReallyReallyReallyLongName() === $activation->getServiceId() diff --git a/tests/if/jsfmt.spec.js b/tests/if/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/if/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/if/jsfmt.spec.mjs b/tests/if/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/if/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/ignore/__snapshots__/jsfmt.spec.js.snap b/tests/ignore/__snapshots__/jsfmt.spec.mjs.snap similarity index 57% rename from tests/ignore/__snapshots__/jsfmt.spec.js.snap rename to tests/ignore/__snapshots__/jsfmt.spec.mjs.snap index e454a298d..f7a165bbf 100644 --- a/tests/ignore/__snapshots__/jsfmt.spec.js.snap +++ b/tests/ignore/__snapshots__/jsfmt.spec.mjs.snap @@ -7,6 +7,10 @@ printWidth: 80 | printWidth =====================================input====================================== 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 84% rename from tests/include/__snapshots__/jsfmt.spec.js.snap rename to tests/include/__snapshots__/jsfmt.spec.mjs.snap index 380a5edef..763cd21dc 100644 --- a/tests/include/__snapshots__/jsfmt.spec.js.snap +++ b/tests/include/__snapshots__/jsfmt.spec.mjs.snap @@ -56,28 +56,28 @@ include_once "other.php"; require "test/test.php"; require_once "other/other.php"; -if ((include 'vars.php') == true) { - echo 'OK'; +if ((include "vars.php") == true) { + echo "OK"; } -if ((include 'vars.php') == true) { - echo 'OK'; +if ((include "vars.php") == true) { + echo "OK"; } -include 'php/product' . $variable . '.php'; +include "php/product" . $variable . ".php"; include "test.php"; include_once "other.php"; require "test/test.php"; require_once "other/other.php"; -include 'http://www.example.com/file.php?foo=1&bar=2'; +include "http://www.example.com/file.php?foo=1&bar=2"; include $filename; -isset($_GET['p']) && $_GET['p'] === 'home' ? include 'pages/home.php' : ''; -include Kohana::find_file('views', 'admin/system/errors'); +isset($_GET["p"]) && $_GET["p"] === "home" ? include "pages/home.php" : ""; +include Kohana::find_file("views", "admin/system/errors"); include "test.php"; -include 'foo.php' . ' MORE OUTPUT'; -include 'foo.php' . ' MORE OUTPUT'; +include "foo.php" . " MORE OUTPUT"; +include "foo.php" . " MORE OUTPUT"; ================================================================================ `; 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 89% rename from tests/inline/__snapshots__/jsfmt.spec.js.snap rename to tests/inline/__snapshots__/jsfmt.spec.mjs.snap index c030117ee..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===================================== @@ -300,22 +300,22 @@ function test() function otherTest() { - echo '1'; ?> + echo "1"; ?>
- +
-
- +
foo
@@ -391,27 +391,27 @@ function ffffff()
FooBar
Test.

- +

Test.

Test.

@@ -520,8 +520,8 @@ echo 'bar'; '; ?>
@@ -765,31 +765,31 @@ printWidth: 80 =====================================output=====================================
- element('collection/item-title', [ - 'class' => $itemTitleClass, - 'small_title' => $item->small_title, - 'title' => $item->title, - 'url' => $url, - 'color' => $item->title_color ?: 'primary', + element("collection/item-title", [ + "class" => $itemTitleClass, + "small_title" => $item->small_title, + "title" => $item->title, + "url" => $url, + "color" => $item->title_color ?: "primary", ]); ?>
- element('collection/item-title', [ - 'class' => $itemTitleClass, - 'small_title' => $item->small_title, - 'title' => $item->title, - 'url' => $url, - 'color' => $item->title_color ?: 'primary', + element("collection/item-title", [ + "class" => $itemTitleClass, + "small_title" => $item->small_title, + "title" => $item->title, + "url" => $url, + "color" => $item->title_color ?: "primary", ]); ?> -
element('collection/item-title', [ - 'class' => $itemTitleClass, - 'small_title' => $item->small_title, - 'title' => $item->title, - 'url' => $url, - 'color' => $item->title_color ?: 'primary', + element("collection/item-title", [ + "class" => $itemTitleClass, + "small_title" => $item->small_title, + "title" => $item->title, + "url" => $url, + "color" => $item->title_color ?: "primary", ]) ?>
@@ -1012,7 +1012,7 @@ printWidth: 80 =====================================output===================================== - + ================================================================================ `; @@ -1026,7 +1026,7 @@ printWidth: 80 =====================================output===================================== - - + + ================================================================================ `; @@ -1057,8 +1057,8 @@ printWidth: 80 - + =====================================output===================================== - - - + + + ================================================================================ `; @@ -1092,9 +1092,9 @@ printWidth: 80 - - + +">
element( - 'collection/item-title', + "collection/item-title", [ - 'class' => $itemTitleClass, - 'small_title' => $item->small_title, - 'title' => $item->title, - 'url' => $url, - 'color' => $item->title_color ?: 'primary', + "class" => $itemTitleClass, + "small_title" => $item->small_title, + "title" => $item->title, + "url" => $url, + "color" => $item->title_color ?: "primary", ], [ - 'foo' => 'bar', - 'bar' => 'foo', - 'barfoo' => 'foobar', - 'foobar' => 'barfoo', - ] + "foo" => "bar", + "bar" => "foo", + "barfoo" => "foobar", + "foobar" => "barfoo", + ], ); ?>
element( - 'collection/item-title', + "collection/item-title", [ - 'class' => $itemTitleClass, - 'small_title' => $item->small_title, - 'title' => $item->title, - 'url' => $url, - 'color' => $item->title_color ?: 'primary', + "class" => $itemTitleClass, + "small_title" => $item->small_title, + "title" => $item->title, + "url" => $url, + "color" => $item->title_color ?: "primary", ], [ - 'foo' => 'bar', - 'bar' => 'foo', - 'barfoo' => 'foobar', - 'foobar' => 'barfoo', - ] + "foo" => "bar", + "bar" => "foo", + "barfoo" => "foobar", + "foobar" => "barfoo", + ], ); ?>
@@ -1240,8 +1240,8 @@ printWidth: 80 =====================================output=====================================
@@ -1413,7 +1413,7 @@ declare(ticks=1) { =====================================output=====================================
FooBar
@@ -1457,7 +1457,7 @@ echo 'test'; namespace Foo; -echo 'test'; ?> +echo "test"; ?>
Test
================================================================================ @@ -1486,7 +1486,7 @@ declare(strict_types=1); namespace Foo; -echo 'test'; ?> +echo "test"; ?>
Test
================================================================================ @@ -1504,7 +1504,7 @@ echo '1'; =====================================output===================================== ================================================================================ @@ -1519,7 +1519,7 @@ printWidth: 80 =====================================output===================================== - + ================================================================================ `; @@ -1538,11 +1538,11 @@ echo 'foo'; ?> =====================================output===================================== - +
Foo Bar
@@ -1563,7 +1563,7 @@ printWidth: 80 =====================================output===================================== - + ================================================================================ @@ -1587,11 +1587,11 @@ printWidth: 80 =====================================output=====================================
- +
- +
================================================================================ @@ -1613,7 +1613,7 @@ if (true) =====================================output=====================================
@@ -1633,7 +1633,7 @@ printWidth: 80 =====================================output=====================================
@@ -1708,36 +1708,36 @@ function testTwo() =====================================output===================================== - + - + - + - + - + - + - + - + - + @@ -1746,7 +1746,7 @@ function test() { ?> - + - + - + - + id); ?>" chosen, true); ?> data-text="order_button_text + $gateway->order_button_text, ); ?>"
@@ -1872,57 +1872,57 @@ func( =====================================output=====================================
@@ -2347,6 +2347,74 @@ try { ================================================================================ `; +exports[`mixed-54.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + +exports[`mixed-55.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + +exports[`mixed-56.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + +=====================================output===================================== + + + +================================================================================ +`; + exports[`namespace-1.php 1`] = ` ====================================options===================================== parsers: ["php"] 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/inline/mixed-54.php b/tests/inline/mixed-54.php new file mode 100644 index 000000000..a030a0d4d --- /dev/null +++ b/tests/inline/mixed-54.php @@ -0,0 +1,7 @@ + + + diff --git a/tests/inline/mixed-55.php b/tests/inline/mixed-55.php new file mode 100644 index 000000000..a46e4d794 --- /dev/null +++ b/tests/inline/mixed-55.php @@ -0,0 +1,7 @@ + + + diff --git a/tests/inline/mixed-56.php b/tests/inline/mixed-56.php new file mode 100644 index 000000000..40a6a0371 --- /dev/null +++ b/tests/inline/mixed-56.php @@ -0,0 +1,2 @@ + + 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 79% rename from tests/isset/__snapshots__/jsfmt.spec.js.snap rename to tests/isset/__snapshots__/jsfmt.spec.mjs.snap index d0d3feb45..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,53 +60,53 @@ class T a); isset($a->a->b); isset( $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty - ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty + ->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty, ); if (isset($var)) { echo "This var is set so I will print."; } -if (isset($var['val1'], $var['val2']) && $var['val2'] === 'on') { - unset($var['val1']); +if (isset($var["val1"], $var["val2"]) && $var["val2"] === "on") { + unset($var["val1"]); } -$a = isset($a['pie']['a']); -$a = isset($a['pie']['a']['b']); +$a = isset($a["pie"]["a"]); +$a = isset($a["pie"]["a"]["b"]); -var_dump(isset($expected_array_got_string['some_key'])); +var_dump(isset($expected_array_got_string["some_key"])); var_dump(isset($expected_array_got_string[0])); -var_dump(isset($expected_array_got_string['0'])); +var_dump(isset($expected_array_got_string["0"])); var_dump(isset($expected_array_got_string[0.5])); -var_dump(isset($expected_array_got_string['0.5'])); -var_dump(isset($expected_array_got_string['0 Mostel'])); +var_dump(isset($expected_array_got_string["0.5"])); +var_dump(isset($expected_array_got_string["0 Mostel"])); -$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; +$username = isset($_GET["user"]) ? $_GET["user"] : "nobody"; function foo() { - return isset($array['foo']) || array_key_exists('foo', $array); + return isset($array["foo"]) || array_key_exists("foo", $array); } -echo isset($foo) ? 'yes ' : 'no ', isset($foo['aaaa']) ? 'yes ' : 'no '; -echo isset($veryVeryVeryVeryLongVariable) ? 'yes ' : 'no ', - isset($veryVeryVeryVeryLongVariable['aaaa']) ? 'yes ' : 'no '; +echo isset($foo) ? "yes " : "no ", isset($foo["aaaa"]) ? "yes " : "no "; +echo isset($veryVeryVeryVeryLongVariable) ? "yes " : "no ", + isset($veryVeryVeryVeryLongVariable["aaaa"]) ? "yes " : "no "; class T { 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.js.snap deleted file mode 100644 index 6945603c6..000000000 --- a/tests/list/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,398 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`list.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -fetch(PDO::FETCH_NUM)) {} - -list($a, list($b, $c)) = array(1, array(2, 3)); - -$info = array('coffee', 'brown', 'caffeine'); -list($a[0], $a[1], $a[2]) = $info; - -list("id" => $id1, "name" => $name1) = $data[0]; -list("veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue) = $data[0]; -list("veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue) = $data[0]; - -foreach ($data as list("id" => $id, "name" => $name)) { - // logic here with $id and $name -} - -foreach ($data as list("veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue)) { - // logic here with $id and $name -} - -foreach ($data as list("veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue)) { - // logic here with $id and $name -} - -list(, $b) = ['a', 'b']; -list(, , $c) = ['a', 'b', 'c']; - -while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) { - echo " \\n" . - " $name\\n" . - " $salary\\n" . - " \\n"; -} - -list($a, list($b, $c)) = array(1, array(2, 3)); - -list($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; - -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; - -list(0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong) = $arr; -list(,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,) = $arr; -list(,,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,,) = $arr; -list(,,0 => $firstVeryVeryVeryVeryLong,, 1 => $secondVeryVeryVeryVeryLong,, 2 => $threeVeryVeryVeryVeryLong,, 3 => $fourthVeryVeryVeryVeryLong,,) = $arr; -list(,,,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,,,) = $arr; -list(,,,0 => $firstVeryVeryVeryVeryLong,,, 1 => $secondVeryVeryVeryVeryLong,,, 2 => $threeVeryVeryVeryVeryLong,,, 3 => $fourthVeryVeryVeryVeryLong,,,) = $arr; - -list( - 0 => $firstVeryVeryVeryVeryLong, - - 1 => $secondVeryVeryVeryVeryLong, - - - 2 => $threeVeryVeryVeryVeryLong, - - - - 3 => $fourthVeryVeryVeryVeryLong -) = $arr; - -list("id" => $id1, "name" => $name1) = $data[0]; -["id" => $id1, "name" => $name1] = $data[0]; - -foreach ($data as list("id" => $id, "name" => $name)) { - // logic here with $id and $name -} - -foreach ($data as ["id" => $id, "name" => $name]) { - // logic here with $id and $name -} - -function swap( &$a, &$b ): void -{ [ $a, $b ] = [ $b, $a ]; } - -$array = [1, 2]; -list($a, &$b) = $array; -[$a, &$b] = $array; -list(&$a, $b,, list(&$c, $d)) = $array; -[&$a, $b,, [&$c, $d]] = $array; - -foreach ($array as list(&$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; -list( - ,0 => $var) = $arr; -list( - ,0 => $var,) = $arr; -list( - ,0 => $var,,) = $arr; -list( - 0 => $var, 1 => $other_var) = $arr; -list( - ,0 => $var, 1 => $other_var) = $arr; -list( - ,0 => $var, 1 => $other_var,) = $arr; -list( - ,0 => $var, 1 => $other_var,,) = $arr; -list(0 - => $var) = $arr; -list( - 0 - => - $var -) = $arr; - -=====================================output===================================== -fetch(PDO::FETCH_NUM)) { -} - -list($a, list($b, $c)) = [1, [2, 3]]; - -$info = ['coffee', 'brown', 'caffeine']; -list($a[0], $a[1], $a[2]) = $info; - -list("id" => $id1, "name" => $name1) = $data[0]; -list( - "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, - "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, -) = $data[0]; -list( - "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, - "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, -) = $data[0]; - -foreach ($data as list("id" => $id, "name" => $name)) { - // logic here with $id and $name -} - -foreach ( - $data - as list( - "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, - "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, - ) -) { - // logic here with $id and $name -} - -foreach ( - $data - as list( - "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, - "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, - ) -) { - // logic here with $id and $name -} - -list(, $b) = ['a', 'b']; -list(, , $c) = ['a', 'b', 'c']; - -while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) { - echo " \\n" . - " $name\\n" . - " $salary\\n" . - " \\n"; -} - -list($a, list($b, $c)) = [1, [2, 3]]; - -list($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; - -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; - -list( - 0 => $firstVeryVeryVeryVeryLong, - 1 => $secondVeryVeryVeryVeryLong, - 2 => $threeVeryVeryVeryVeryLong, - 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( - , - 0 => $firstVeryVeryVeryVeryLong, - 1 => $secondVeryVeryVeryVeryLong, - 2 => $threeVeryVeryVeryVeryLong, - 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( - , - , - 0 => $firstVeryVeryVeryVeryLong, - 1 => $secondVeryVeryVeryVeryLong, - 2 => $threeVeryVeryVeryVeryLong, - 3 => $fourthVeryVeryVeryVeryLong, - , -) = $arr; -list( - , - , - 0 => $firstVeryVeryVeryVeryLong, - , - 1 => $secondVeryVeryVeryVeryLong, - , - 2 => $threeVeryVeryVeryVeryLong, - , - 3 => $fourthVeryVeryVeryVeryLong, - , -) = $arr; -list( - , - , - , - 0 => $firstVeryVeryVeryVeryLong, - 1 => $secondVeryVeryVeryVeryLong, - 2 => $threeVeryVeryVeryVeryLong, - 3 => $fourthVeryVeryVeryVeryLong, - , - , -) = $arr; -list( - , - , - , - 0 => $firstVeryVeryVeryVeryLong, - , - , - 1 => $secondVeryVeryVeryVeryLong, - , - , - 2 => $threeVeryVeryVeryVeryLong, - , - , - 3 => $fourthVeryVeryVeryVeryLong, - , - , -) = $arr; - -list( - 0 => $firstVeryVeryVeryVeryLong, - - 1 => $secondVeryVeryVeryVeryLong, - - 2 => $threeVeryVeryVeryVeryLong, - - 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; - -list("id" => $id1, "name" => $name1) = $data[0]; -["id" => $id1, "name" => $name1] = $data[0]; - -foreach ($data as list("id" => $id, "name" => $name)) { - // logic here with $id and $name -} - -foreach ($data as ["id" => $id, "name" => $name]) { - // logic here with $id and $name -} - -function swap(&$a, &$b): void -{ - [$a, $b] = [$b, $a]; -} - -$array = [1, 2]; -list($a, &$b) = $array; -[$a, &$b] = $array; -list(&$a, $b, , list(&$c, $d)) = $array; -[&$a, $b, , [&$c, $d]] = $array; - -foreach ($array as list(&$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; -list( - , - 0 => $var, -) = $arr; -list( - , - 0 => $var, -) = $arr; -list( - , - 0 => $var, - , -) = $arr; -list( - 0 => $var, - 1 => $other_var, -) = $arr; -list( - , - 0 => $var, - 1 => $other_var, -) = $arr; -list( - , - 0 => $var, - 1 => $other_var, -) = $arr; -list( - , - 0 => $var, - 1 => $other_var, - , -) = $arr; -list(0 => $var) = $arr; -list( - 0 => $var, -) = $arr; - -================================================================================ -`; diff --git a/tests/list/__snapshots__/jsfmt.spec.mjs.snap b/tests/list/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..c21e367f4 --- /dev/null +++ b/tests/list/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,796 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`list.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +fetch(PDO::FETCH_NUM)) {} + +list($a, list($b, $c)) = array(1, array(2, 3)); + +$info = array('coffee', 'brown', 'caffeine'); +list($a[0], $a[1], $a[2]) = $info; + +list("id" => $id1, "name" => $name1) = $data[0]; +list("veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue) = $data[0]; +list("veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue) = $data[0]; + +foreach ($data as list("id" => $id, "name" => $name)) { + // logic here with $id and $name +} + +foreach ($data as list("veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue)) { + // logic here with $id and $name +} + +foreach ($data as list("veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue)) { + // logic here with $id and $name +} + +list(, $b) = ['a', 'b']; +list(, , $c) = ['a', 'b', 'c']; + +while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) { + echo " \\n" . + " $name\\n" . + " $salary\\n" . + " \\n"; +} + +list($a, list($b, $c)) = array(1, array(2, 3)); + +list($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; + +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; + +list(0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong) = $arr; +list(,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,) = $arr; +list(,,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,,) = $arr; +list(,,0 => $firstVeryVeryVeryVeryLong,, 1 => $secondVeryVeryVeryVeryLong,, 2 => $threeVeryVeryVeryVeryLong,, 3 => $fourthVeryVeryVeryVeryLong,,) = $arr; +list(,,,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,,,) = $arr; +list(,,,0 => $firstVeryVeryVeryVeryLong,,, 1 => $secondVeryVeryVeryVeryLong,,, 2 => $threeVeryVeryVeryVeryLong,,, 3 => $fourthVeryVeryVeryVeryLong,,,) = $arr; + +list( + 0 => $firstVeryVeryVeryVeryLong, + + 1 => $secondVeryVeryVeryVeryLong, + + + 2 => $threeVeryVeryVeryVeryLong, + + + + 3 => $fourthVeryVeryVeryVeryLong +) = $arr; + +list("id" => $id1, "name" => $name1) = $data[0]; +["id" => $id1, "name" => $name1] = $data[0]; + +foreach ($data as list("id" => $id, "name" => $name)) { + // logic here with $id and $name +} + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +function swap( &$a, &$b ): void +{ [ $a, $b ] = [ $b, $a ]; } + +$array = [1, 2]; +list($a, &$b) = $array; +[$a, &$b] = $array; +list(&$a, $b,, list(&$c, $d)) = $array; +[&$a, $b,, [&$c, $d]] = $array; + +foreach ($array as list(&$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; +list( + ,0 => $var) = $arr; +list( + ,0 => $var,) = $arr; +list( + ,0 => $var,,) = $arr; +list( + 0 => $var, 1 => $other_var) = $arr; +list( + ,0 => $var, 1 => $other_var) = $arr; +list( + ,0 => $var, 1 => $other_var,) = $arr; +list( + ,0 => $var, 1 => $other_var,,) = $arr; +list(0 + => $var) = $arr; +list( + 0 + => + $var +) = $arr; + +=====================================output===================================== +fetch(PDO::FETCH_NUM)) { +} + +[$a, [$b, $c]] = [1, [2, 3]]; + +$info = ["coffee", "brown", "caffeine"]; +[$a[0], $a[1], $a[2]] = $info; + +["id" => $id1, "name" => $name1] = $data[0]; +[ + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, +] = $data[0]; +[ + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, +] = $data[0]; + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +foreach ( + $data + as [ + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, + ] +) { + // logic here with $id and $name +} + +foreach ( + $data + as [ + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + ] +) { + // logic here with $id and $name +} + +[, $b] = ["a", "b"]; +[, , $c] = ["a", "b", "c"]; + +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { + echo " \\n" . + " $name\\n" . + " $salary\\n" . + " \\n"; +} + +[$a, [$b, $c]] = [1, [2, 3]]; + +[$a[0], $a[1], $a[2]] = $info; + +foreach ($data as ["id" => $id, "name" => $name]) { + echo "id: $id, name: $name\\n"; +} + +[0 => $first, 1 => $second, 2 => $three, 3 => $fourth] = $arr; +[ + 0 => $first, + 1 => $second, + 2 => $three, + 3 => $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; + +[ + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, +] = $arr; +[ + , + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, +] = $arr; +[ + , + , + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, + , +] = $arr; +[ + , + , + 0 => $firstVeryVeryVeryVeryLong, + , + 1 => $secondVeryVeryVeryVeryLong, + , + 2 => $threeVeryVeryVeryVeryLong, + , + 3 => $fourthVeryVeryVeryVeryLong, + , +] = $arr; +[ + , + , + , + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, + , + , +] = $arr; +[ + , + , + , + 0 => $firstVeryVeryVeryVeryLong, + , + , + 1 => $secondVeryVeryVeryVeryLong, + , + , + 2 => $threeVeryVeryVeryVeryLong, + , + , + 3 => $fourthVeryVeryVeryVeryLong, + , + , +] = $arr; + +[ + 0 => $firstVeryVeryVeryVeryLong, + + 1 => $secondVeryVeryVeryVeryLong, + + 2 => $threeVeryVeryVeryVeryLong, + + 3 => $fourthVeryVeryVeryVeryLong, +] = $arr; + +["id" => $id1, "name" => $name1] = $data[0]; +["id" => $id1, "name" => $name1] = $data[0]; + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +function swap(&$a, &$b): void +{ + [$a, $b] = [$b, $a]; +} + +$array = [1, 2]; +[$a, &$b] = $array; +[$a, &$b] = $array; +[&$a, $b, , [&$c, $d]] = $array; +[&$a, $b, , [&$c, $d]] = $array; + +foreach ($array as [&$a, $b]) { +} +foreach ($array as [&$a, $b]) { +} + +[0 => $var] = $arr; +[0 => $var] = $arr; +[, 0 => $var] = $arr; +[0 => $var] = $arr; +[ + 0 => $var, +] = $arr; +[ + , + 0 => $var, +] = $arr; +[ + , + 0 => $var, +] = $arr; +[ + , + 0 => $var, + , +] = $arr; +[ + 0 => $var, + 1 => $other_var, +] = $arr; +[ + , + 0 => $var, + 1 => $other_var, +] = $arr; +[ + , + 0 => $var, + 1 => $other_var, +] = $arr; +[ + , + 0 => $var, + 1 => $other_var, + , +] = $arr; +[0 => $var] = $arr; +[ + 0 => $var, +] = $arr; + +================================================================================ +`; + +exports[`list.php 2`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.1" +printWidth: 80 + | printWidth +=====================================input====================================== +fetch(PDO::FETCH_NUM)) {} + +list($a, list($b, $c)) = array(1, array(2, 3)); + +$info = array('coffee', 'brown', 'caffeine'); +list($a[0], $a[1], $a[2]) = $info; + +list("id" => $id1, "name" => $name1) = $data[0]; +list("veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue) = $data[0]; +list("veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue) = $data[0]; + +foreach ($data as list("id" => $id, "name" => $name)) { + // logic here with $id and $name +} + +foreach ($data as list("veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue)) { + // logic here with $id and $name +} + +foreach ($data as list("veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue)) { + // logic here with $id and $name +} + +list(, $b) = ['a', 'b']; +list(, , $c) = ['a', 'b', 'c']; + +while (list($id, $name, $salary) = $result->fetch(PDO::FETCH_NUM)) { + echo " \\n" . + " $name\\n" . + " $salary\\n" . + " \\n"; +} + +list($a, list($b, $c)) = array(1, array(2, 3)); + +list($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; + +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; + +list(0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong) = $arr; +list(,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,) = $arr; +list(,,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,,) = $arr; +list(,,0 => $firstVeryVeryVeryVeryLong,, 1 => $secondVeryVeryVeryVeryLong,, 2 => $threeVeryVeryVeryVeryLong,, 3 => $fourthVeryVeryVeryVeryLong,,) = $arr; +list(,,,0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong,,,) = $arr; +list(,,,0 => $firstVeryVeryVeryVeryLong,,, 1 => $secondVeryVeryVeryVeryLong,,, 2 => $threeVeryVeryVeryVeryLong,,, 3 => $fourthVeryVeryVeryVeryLong,,,) = $arr; + +list( + 0 => $firstVeryVeryVeryVeryLong, + + 1 => $secondVeryVeryVeryVeryLong, + + + 2 => $threeVeryVeryVeryVeryLong, + + + + 3 => $fourthVeryVeryVeryVeryLong +) = $arr; + +list("id" => $id1, "name" => $name1) = $data[0]; +["id" => $id1, "name" => $name1] = $data[0]; + +foreach ($data as list("id" => $id, "name" => $name)) { + // logic here with $id and $name +} + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +function swap( &$a, &$b ): void +{ [ $a, $b ] = [ $b, $a ]; } + +$array = [1, 2]; +list($a, &$b) = $array; +[$a, &$b] = $array; +list(&$a, $b,, list(&$c, $d)) = $array; +[&$a, $b,, [&$c, $d]] = $array; + +foreach ($array as list(&$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; +list( + ,0 => $var) = $arr; +list( + ,0 => $var,) = $arr; +list( + ,0 => $var,,) = $arr; +list( + 0 => $var, 1 => $other_var) = $arr; +list( + ,0 => $var, 1 => $other_var) = $arr; +list( + ,0 => $var, 1 => $other_var,) = $arr; +list( + ,0 => $var, 1 => $other_var,,) = $arr; +list(0 + => $var) = $arr; +list( + 0 + => + $var +) = $arr; + +=====================================output===================================== +fetch(PDO::FETCH_NUM)) { +} + +[$a, [$b, $c]] = [1, [2, 3]]; + +$info = ["coffee", "brown", "caffeine"]; +[$a[0], $a[1], $a[2]] = $info; + +["id" => $id1, "name" => $name1] = $data[0]; +[ + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, +] = $data[0]; +[ + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, +] = $data[0]; + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +foreach ( + $data + as [ + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryLongValue, + ] +) { + // logic here with $id and $name +} + +foreach ( + $data + as [ + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + ] +) { + // logic here with $id and $name +} + +[, $b] = ["a", "b"]; +[, , $c] = ["a", "b", "c"]; + +while ([$id, $name, $salary] = $result->fetch(PDO::FETCH_NUM)) { + echo " \\n" . + " $name\\n" . + " $salary\\n" . + " \\n"; +} + +[$a, [$b, $c]] = [1, [2, 3]]; + +[$a[0], $a[1], $a[2]] = $info; + +foreach ($data as ["id" => $id, "name" => $name]) { + echo "id: $id, name: $name\\n"; +} + +[0 => $first, 1 => $second, 2 => $three, 3 => $fourth] = $arr; +[ + 0 => $first, + 1 => $second, + 2 => $three, + 3 => $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; + +[ + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, +] = $arr; +[ + , + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, +] = $arr; +[ + , + , + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, + , +] = $arr; +[ + , + , + 0 => $firstVeryVeryVeryVeryLong, + , + 1 => $secondVeryVeryVeryVeryLong, + , + 2 => $threeVeryVeryVeryVeryLong, + , + 3 => $fourthVeryVeryVeryVeryLong, + , +] = $arr; +[ + , + , + , + 0 => $firstVeryVeryVeryVeryLong, + 1 => $secondVeryVeryVeryVeryLong, + 2 => $threeVeryVeryVeryVeryLong, + 3 => $fourthVeryVeryVeryVeryLong, + , + , +] = $arr; +[ + , + , + , + 0 => $firstVeryVeryVeryVeryLong, + , + , + 1 => $secondVeryVeryVeryVeryLong, + , + , + 2 => $threeVeryVeryVeryVeryLong, + , + , + 3 => $fourthVeryVeryVeryVeryLong, + , + , +] = $arr; + +[ + 0 => $firstVeryVeryVeryVeryLong, + + 1 => $secondVeryVeryVeryVeryLong, + + 2 => $threeVeryVeryVeryVeryLong, + + 3 => $fourthVeryVeryVeryVeryLong, +] = $arr; + +["id" => $id1, "name" => $name1] = $data[0]; +["id" => $id1, "name" => $name1] = $data[0]; + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +foreach ($data as ["id" => $id, "name" => $name]) { + // logic here with $id and $name +} + +function swap(&$a, &$b): void +{ + [$a, $b] = [$b, $a]; +} + +$array = [1, 2]; +[$a, &$b] = $array; +[$a, &$b] = $array; +[&$a, $b, , [&$c, $d]] = $array; +[&$a, $b, , [&$c, $d]] = $array; + +foreach ($array as [&$a, $b]) { +} +foreach ($array as [&$a, $b]) { +} + +[0 => $var] = $arr; +[0 => $var] = $arr; +[, 0 => $var] = $arr; +[0 => $var] = $arr; +[ + 0 => $var, +] = $arr; +[ + , + 0 => $var, +] = $arr; +[ + , + 0 => $var, +] = $arr; +[ + , + 0 => $var, + , +] = $arr; +[ + 0 => $var, + 1 => $other_var, +] = $arr; +[ + , + 0 => $var, + 1 => $other_var, +] = $arr; +[ + , + 0 => $var, + 1 => $other_var, +] = $arr; +[ + , + 0 => $var, + 1 => $other_var, + , +] = $arr; +[0 => $var] = $arr; +[ + 0 => $var, +] = $arr; + +================================================================================ +`; diff --git a/tests/list/jsfmt.spec.js b/tests/list/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/list/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); 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 91% rename from tests/markdown/__snapshots__/jsfmt.spec.js.snap rename to tests/markdown/__snapshots__/jsfmt.spec.mjs.snap index 78590c770..7c306ec51 100644 --- a/tests/markdown/__snapshots__/jsfmt.spec.js.snap +++ b/tests/markdown/__snapshots__/jsfmt.spec.mjs.snap @@ -95,14 +95,15 @@ test # PHP in Markdown \`\`\`php -$foo = 'bar'; +$foo = "bar"; \`\`\` \`\`\`php -$foo = 'bar'; +$foo = "bar"; \`\`\` \`\`\`php + \`\`\` \`\`\`php @@ -121,9 +122,9 @@ if ($foo) { \`\`\`php test test \`\`\` 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.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.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 new file mode 100644 index 000000000..907a13086 --- /dev/null +++ b/tests/match/match.php @@ -0,0 +1,61 @@ + 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/member_chain/__snapshots__/jsfmt.spec.js.snap b/tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap similarity index 79% rename from tests/member_chain/__snapshots__/jsfmt.spec.js.snap rename to tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap index f85929c23..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===================================== @@ -32,19 +32,19 @@ function call($store) function ($response) { return next( actionWith([ - 'response' => $response, - 'type' => $successType, - ]) + "response" => $response, + "type" => $successType, + ]), ); }, function ($error) { return next( actionWith([ - 'type' => $failureType, - 'error' => $error->message || 'Something bad happened', - ]) + "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(); @@ -291,7 +313,7 @@ $someLongVariableName = (idx( 'bar', 'bar' => 'foo', 'foobar' => 'barfoor']) || [] + idx($prop, ["foo" => "bar", "bar" => "foo", "foobar" => "barfoor"]) || [] )->map(function ($edge) { return $edge->node; }); @@ -436,23 +458,19 @@ $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') +Route::prefix("api") + ->middleware("api") ->namespace($this->namespace) - ->group(base_path('routes/api.php')); + ->group(base_path("routes/api.php")); return tap( $this->forceFill([ - 'approver_id' => $user instanceof User ? $user->id : $user, - 'approved_at' => $this->freshTimestamp(), - ]) + "approver_id" => $user instanceof User ? $user->id : $user, + "approved_at" => $this->freshTimestamp(), + ]), )->save(); return collect(parent::jsonSerialize()) @@ -476,46 +494,44 @@ $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 -$t->shouldReceive('signUp') - ->with(anInstanceOf('Foo\\\\Bar\\\\Baz'), $this->app['foo.bar.baz']->getEmail()) +$t->shouldReceive("signUp") + ->with(anInstanceOf("Foo\\\\Bar\\\\Baz"), $this->app["foo.bar.baz"]->getEmail()) ->once(); -$te->shouldReceive('signUp') - ->with(anInstanceOf('Foo\\\\Bar\\\\Baz'), $this->app['foo.bar.baz']->getEmail()) +$te->shouldReceive("signUp") + ->with(anInstanceOf("Foo\\\\Bar\\\\Baz"), $this->app["foo.bar.baz"]->getEmail()) ->once(); -$tes->shouldReceive('signUp') - ->with(anInstanceOf('Foo\\\\Bar\\\\Baz'), $this->app['foo.bar.baz']->getEmail()) +$tes->shouldReceive("signUp") + ->with(anInstanceOf("Foo\\\\Bar\\\\Baz"), $this->app["foo.bar.baz"]->getEmail()) ->once(); // should break $test - ->shouldReceive('signUp') - ->with(anInstanceOf('Foo\\\\Bar\\\\Baz'), $this->app['foo.bar.baz']->getEmail()) + ->shouldReceive("signUp") + ->with(anInstanceOf("Foo\\\\Bar\\\\Baz"), $this->app["foo.bar.baz"]->getEmail()) ->once(); $a = $t - ->shouldReceive('signUp') - ->with(anInstanceOf('Foo\\\\Bar\\\\Baz'), $this->app['foo.bar.baz']->getEmail()) + ->shouldReceive("signUp") + ->with(anInstanceOf("Foo\\\\Bar\\\\Baz"), $this->app["foo.bar.baz"]->getEmail()) ->once(); $this->loooooooooooong->lookup = (int) $this->getRequest()->getParam( - 'some-param' + "some-param", ); $this->loooooooooooong->lookup = (int) $variable ->getRequest() - ->getParam('some-param'); + ->getParam("some-param"); $aVariable = $theThing ->aLongFunction(1, 2, 3) - ->anotherReallyLongFunciton('a', 'b', 'c'); + ->anotherReallyLongFunciton("a", "b", "c"); $anotherVariables = $theOtherThing ->aLongFunction(1, 2, 3, 4, 5, 6, 7) - ->anotherReallyLongFunciton('a', 'b', 'c'); + ->anotherReallyLongFunciton("a", "b", "c"); $aVariable = $theThing->veryVeryVeryVeryVeryVeryVeryVeryLongCall() ->veryVeryVeryVeryVeryVeryVeryVery; @@ -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) { @@ -656,32 +624,32 @@ $wrapper->find('SomewhatLongNodeName')->prop('longPropFunctionName')->then(funct find('SomewhatLongNodeName') - ->prop('longPropFunctionName') + ->find("SomewhatLongNodeName") + ->prop("longPropFunctionName") ->then(function () { doSomething(); }); $wrapper - ->find('SomewhatLongNodeName') - ->prop('longPropFunctionName') + ->find("SomewhatLongNodeName") + ->prop("longPropFunctionName") ->then(function () { doSomething(); }); $wrapper - ->find('SomewhatLongNodeName') + ->find("SomewhatLongNodeName") ->prop( - 'longPropFunctionName', - 'second argument that pushes this group past 80 characters' + "longPropFunctionName", + "second argument that pushes this group past 80 characters", ) ->then(function () { doSomething(); }); $wrapper - ->find('SomewhatLongNodeName') - ->prop('longPropFunctionName') + ->find("SomewhatLongNodeName") + ->prop("longPropFunctionName") ->then(function () { doSomething(); }); @@ -751,49 +719,59 @@ $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===================================== split('jest version =') + ->split("jest version =") ->pop() ->split(EOL)[0] ->trim(); -$component = find('.org-lclp-edit-copy-url-banner__link')[0] - ->getAttribute('href') +$component = find(".org-lclp-edit-copy-url-banner__link")[0] + ->getAttribute("href") ->indexOf($this->landingPageLink); -nock('test') - ->matchHeader('Accept', 'application/json') - ['string']('/foo') +nock("test") + ->matchHeader("Accept", "application/json") + ["string"]("/foo") ->reply(200, [ - 'foo' => 'bar', + "foo" => "bar", ]); $data->forEach(function ($key) { $data - ['key']('foo') + ["key"]("foo") ->then(function () { - $console->log('bar'); + $console->log("bar"); }) ->catch(function () { - $console->log('baz'); + $console->log("baz"); }); }); $data->forEach(function ($key) { - $data('foo') - [$key]('bar') + $data("foo") + [$key]("bar") ->then(function () { - $console->log('bar'); + $console->log("bar"); }) ->catch(function () { - $console->log('baz'); + $console->log("baz"); }); }); -$window->Data['key']("foo") +$window->Data["key"]("foo") ->then(function () { return $a; }) @@ -801,8 +779,8 @@ $window->Data['key']("foo") return $b; }); -$window->Data['key'] - ['foo']("foo") +$window->Data["key"] + ["foo"]("foo") ->then(function () { return $a; }) @@ -810,8 +788,8 @@ $window->Data['key'] return $b; }); -$window->foo_['bar' . 'baz'] - ['key']("foo") +$window->foo_["bar" . "baz"] + ["key"]("foo") ->then(function () { return $a; }) @@ -820,7 +798,7 @@ $window->foo_['bar' . 'baz'] }); $window->{call()} - ['key']("foo") + ["key"]("foo") ->then(function () { return $a; }) @@ -828,6 +806,23 @@ $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(); + ================================================================================ `; @@ -963,63 +958,63 @@ Foo =====================================output===================================== insert([ - 'ref' => $ref, - 'handle' => $handle, +DB::table("identity")->insert([ + "ref" => $ref, + "handle" => $handle, ]); -DB::table('identity')->insert([ - 'ref' => $ref, - 'handle' => $handle, - 'foo' => $bar, - 'bar' => $foo, +DB::table("identity")->insert([ + "ref" => $ref, + "handle" => $handle, + "foo" => $bar, + "bar" => $foo, ]); DB::table( - 'identity' + "identity", )->insertReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName([ - 'ref' => $ref, - 'handle' => $handle, - 'foo' => $bar, - 'bar' => $foo, + "ref" => $ref, + "handle" => $handle, + "foo" => $bar, + "bar" => $foo, ]); -$page = TableRegistry::get('Pages') +$page = TableRegistry::get("Pages") ->findByPath($path) - ->find('published') - ->find('frontend') - ->find('somethingElse') + ->find("published") + ->find("frontend") + ->find("somethingElse") ->first(); -Logger::use_logger('albus')->info( - 'Albus: failed to find active version for albus object', +Logger::use_logger("albus")->info( + "Albus: failed to find active version for albus object", [ - 'uuid' => $uuid, - 'requested_date' => $date, - ] + "uuid" => $uuid, + "requested_date" => $date, + ], ); -DBwithlongname::table('identity') +DBwithlongname::table("identity") ->insertReallyReallyReallyLongName() ->someOtherReallyReallyLong(); $DBwithlongname - ->table('identity') + ->table("identity") ::insertReallyReallyReallyLongName() ->someOtherReallyReallyLong(); -$page = TableRegistry::get('Pages') +$page = TableRegistry::get("Pages") ::findByPath($path) - ::find('published') - ::find('frontend') - ::find('somethingElse') + ::find("published") + ::find("frontend") + ::find("somethingElse") ::first(); -$page = TableRegistry::insertReallyReallyReallyLongName('Pages') +$page = TableRegistry::insertReallyReallyReallyLongName("Pages") ::insertReallyReallyReallyLongName($path) - ::insertReallyReallyReallyLongName('published') - ::insertReallyReallyReallyLongName('frontend') - ::insertReallyReallyReallyLongName('somethingElse') + ::insertReallyReallyReallyLongName("published") + ::insertReallyReallyReallyLongName("frontend") + ::insertReallyReallyReallyLongName("somethingElse") ::insertReallyReallyReallyLongName(); $page = TableRegistry::insertReallyReallyReallyLongName[0]; @@ -1034,20 +1029,20 @@ $page = TableRegistry::insertReallyReallyReallyReallyReallyReallyReallyReallyRea ::insertReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName() ::insertReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName[0]; -$page = TableRegistry::insertReallyReallyReallyLongName('Pages')[0]; +$page = TableRegistry::insertReallyReallyReallyLongName("Pages")[0]; $page = TableRegistry::insertReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName( - 'Pages' + "Pages", )[0]; -$component = find('.org-lclp-edit-copy-url-banner__link')[0] - ::getAttribute('href') +$component = find(".org-lclp-edit-copy-url-banner__link")[0] + ::getAttribute("href") ::indexOf($this->landingPageLink); $component = Foo::test([ - 'foo' => 'bar', - 'bar' => 'foo', - 'foobar' => 'barfoo', - 'barfoo' => 'foobar', + "foo" => "bar", + "bar" => "foo", + "foobar" => "barfoo", + "barfoo" => "foobar", ]); $component = Foo @@ -1057,32 +1052,32 @@ static::viewFactory() ->make( $view ?: static::$defaultSimpleView, array_merge($data, [ - 'paginator' => $this, - ]) + "paginator" => $this, + ]), ) ->render(); static::viewFactory() ->make( $view ?: static::$defaultSimpleView, array_merge($data, [ - 'paginator' => $this, - ]) + "paginator" => $this, + ]), ) ->render(); self::viewFactory() ->make( $view ?: static::$defaultSimpleView, array_merge($data, [ - 'paginator' => $this, - ]) + "paginator" => $this, + ]), ) ->render(); parent::viewFactory() ->make( $view ?: static::$defaultSimpleView, array_merge($data, [ - 'paginator' => $this, - ]) + "paginator" => $this, + ]), ) ->render(); @@ -1090,8 +1085,8 @@ Foo::viewFactory() ->make( $view ?: static::$defaultSimpleView, array_merge($data, [ - 'paginator' => $this, - ]) + "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 87% rename from tests/method/__snapshots__/jsfmt.spec.js.snap rename to tests/method/__snapshots__/jsfmt.spec.mjs.snap index 2ece24a89..2e31fde39 100644 --- a/tests/method/__snapshots__/jsfmt.spec.js.snap +++ b/tests/method/__snapshots__/jsfmt.spec.mjs.snap @@ -60,22 +60,20 @@ class Foo public function publishMethod() { - return 'public'; + return "public"; } private function protectedMethod() { - return 'protected'; + return "protected"; } private function privateMethod() { - return 'private'; + return "private"; } - public function emptyMethod() - { - } + public function emptyMethod() {} public function emptyMethodWithComment() { @@ -84,12 +82,10 @@ class Foo function aMemberFunc() { - print 'Inside \`aMemberFunc()\`'; + 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/.jsfmt.spec.js.swo b/tests/namedarguments/.jsfmt.spec.js.swo new file mode 100644 index 000000000..517570411 Binary files /dev/null and b/tests/namedarguments/.jsfmt.spec.js.swo differ diff --git a/tests/namedarguments/__snapshots__/jsfmt.spec.mjs.snap b/tests/namedarguments/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..584418c04 --- /dev/null +++ b/tests/namedarguments/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`namedarguments.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 + | printWidth +=====================================input====================================== + bar (arg1: $arg1, arg2: $arg2,$arg3, $arg4 , $arg5 ) ; +Foo :: bar( arg1:$arg1,arg2:$arg2 ,$arg3, $arg4 , $arg5 ) ; + +$db->Execute($sql, config: [ + $foo, + $bar, + $foobar, + $somewhatLongParameter, + $somewhatLongParameterX, + $somewhatLongParameterXYZ +]); + +$app->get('/hello/{name}', callback: function ($name) use ($app) { + return 'Hello ' . $app->escape($name); +}); + +$this->something->method($argument, val: $this->more->stuff( + $this->even->more->things->complicatedMethod() +)); + +=====================================output===================================== +bar(arg1: $arg1, arg2: $arg2, $arg3, $arg4, $arg5); +Foo::bar(arg1: $arg1, arg2: $arg2, $arg3, $arg4, $arg5); + +$db->Execute( + $sql, + config: [ + $foo, + $bar, + $foobar, + $somewhatLongParameter, + $somewhatLongParameterX, + $somewhatLongParameterXYZ, + ], +); + +$app->get( + "/hello/{name}", + callback: function ($name) use ($app) { + return "Hello " . $app->escape($name); + }, +); + +$this->something->method( + $argument, + val: $this->more->stuff($this->even->more->things->complicatedMethod()), +); + +================================================================================ +`; 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/namedarguments/namedarguments.php b/tests/namedarguments/namedarguments.php new file mode 100644 index 000000000..743e6824d --- /dev/null +++ b/tests/namedarguments/namedarguments.php @@ -0,0 +1,24 @@ + bar (arg1: $arg1, arg2: $arg2,$arg3, $arg4 , $arg5 ) ; +Foo :: bar( arg1:$arg1,arg2:$arg2 ,$arg3, $arg4 , $arg5 ) ; + +$db->Execute($sql, config: [ + $foo, + $bar, + $foobar, + $somewhatLongParameter, + $somewhatLongParameterX, + $somewhatLongParameterXYZ +]); + +$app->get('/hello/{name}', callback: function ($name) use ($app) { + return 'Hello ' . $app->escape($name); +}); + +$this->something->method($argument, val: $this->more->stuff( + $this->even->more->things->complicatedMethod() +)); 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 99% rename from tests/newline/__snapshots__/jsfmt.spec.js.snap rename to tests/newline/__snapshots__/jsfmt.spec.mjs.snap index 9c76eaa8f..ea78e2a95 100644 --- a/tests/newline/__snapshots__/jsfmt.spec.js.snap +++ b/tests/newline/__snapshots__/jsfmt.spec.mjs.snap @@ -508,7 +508,7 @@ printWidth: 80 - + @@ -547,7 +547,7 @@ printWidth: 80 - + @@ -586,7 +586,7 @@ printWidth: 80 - + @@ -625,7 +625,7 @@ printWidth: 80 - + @@ -664,7 +664,7 @@ printWidth: 80 - + @@ -703,7 +703,7 @@ printWidth: 80 - + 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 98% rename from tests/nowdoc/__snapshots__/jsfmt.spec.js.snap rename to tests/nowdoc/__snapshots__/jsfmt.spec.mjs.snap index 7fb440a53..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====================================== @@ -1299,7 +1300,7 @@ EOD $b ); -$var = new class( +$var = new class ( <<<'EOD' string string @@ -1307,7 +1308,7 @@ string EOD ) {}; -$var = new class( +$var = new class ( $a, <<<'EOD' string @@ -1316,7 +1317,7 @@ string EOD ) {}; -$var = new class( +$var = new class ( <<<'EOD' string string @@ -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) { @@ -1514,7 +1512,7 @@ EOD ]; $a = [ - 'key' => <<<'EOD' + "key" => <<<'EOD' string string string @@ -1523,7 +1521,7 @@ EOD ]; $a = [ - 'key' => <<<'EOD' + "key" => <<<'EOD' string string string @@ -1532,8 +1530,8 @@ EOD ]; $a = [ - 'other-key' => $a, - 'key' => <<<'EOD' + "other-key" => $a, + "key" => <<<'EOD' string string string @@ -1542,13 +1540,13 @@ EOD ]; $a = [ - 'key' => <<<'EOD' + "key" => <<<'EOD' string string string EOD , - 'other-key' => $a, + "other-key" => $a, ]; switch ($i) { @@ -1619,7 +1617,7 @@ string string EOD ) { - echo 'test'; + echo "test"; } do { @@ -3105,8 +3103,8 @@ $str = sprintf( $str = sprintf( << <<<'EOD' + "key" => <<<'EOD' string string string @@ -3597,7 +3592,7 @@ $a = [ ]; $a = [ - 'key' => <<<'EOD' + "key" => <<<'EOD' string string string @@ -3606,8 +3601,8 @@ $a = [ ]; $a = [ - 'other-key' => $a, - 'key' => <<<'EOD' + "other-key" => $a, + "key" => <<<'EOD' string string string @@ -3616,13 +3611,13 @@ $a = [ ]; $a = [ - 'key' => <<<'EOD' + "key" => <<<'EOD' string string string EOD , - 'other-key' => $a, + "other-key" => $a, ]; switch ($i) { @@ -3695,7 +3690,7 @@ if ( string EOD ) { - echo 'test'; + echo "test"; } do { @@ -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.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.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 new file mode 100644 index 000000000..c56f9d646 --- /dev/null +++ b/tests/nullsafepropertylookup/offsets.php @@ -0,0 +1,28 @@ +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(); 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===================================== registered[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; $variable = get_taxonomy_function(get_queried_object_function()->taxonomy) ->object_type[0]; @@ -60,14 +60,14 @@ $variable = "abcdef"[-2]; $variable[1]; $variable[11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111]; -$variable['string']; +$variable["string"]; $variable[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; $variable[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ][ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; $var = $a[$b]; diff --git a/tests/offsetlookup/jsfmt.spec.js b/tests/offsetlookup/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/offsetlookup/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); diff --git a/tests/offsetlookup/jsfmt.spec.mjs b/tests/offsetlookup/jsfmt.spec.mjs new file mode 100644 index 000000000..8829c872f --- /dev/null +++ b/tests/offsetlookup/jsfmt.spec.mjs @@ -0,0 +1 @@ +run_spec(import.meta, ["php"]); diff --git a/tests/parameter/__snapshots__/jsfmt.spec.js.snap b/tests/parameter/__snapshots__/jsfmt.spec.mjs.snap similarity index 83% rename from tests/parameter/__snapshots__/jsfmt.spec.js.snap rename to tests/parameter/__snapshots__/jsfmt.spec.mjs.snap index 695e3a7c2..04cb4cb00 100644 --- a/tests/parameter/__snapshots__/jsfmt.spec.js.snap +++ b/tests/parameter/__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[`parameter.php 1`] = ` ====================================options===================================== @@ -180,7 +180,7 @@ function testReturn(?string $name): ?string } function intArg( - int $c = 111111111111111111111111111111111111111111111111111111111111111111111111 + int $c = 111111111111111111111111111111111111111111111111111111111111111111111111, ) { var_dump($c); } @@ -190,7 +190,7 @@ function bar( "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", - ] + ], ) { return $arg; } @@ -202,7 +202,7 @@ function bar1( "key2" => "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()); - -=====================================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(); - -================================================================================ -`; - -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====================================== -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/lookups.php b/tests/parens/lookups.php index 53ef82495..3cb7310f8 100644 --- a/tests/parens/lookups.php +++ b/tests/parens/lookups.php @@ -81,3 +81,10 @@ $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)(); 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/parens/throw.php b/tests/parens/throw.php index 004add31b..b6cdebd6f 100644 --- a/tests/parens/throw.php +++ b/tests/parens/throw.php @@ -15,3 +15,7 @@ throw new \Exception("Bye"); throw (new \Exception("Bye")); } + +die(throw new \Exception('In Statement')); +$throws = fn() => throw new \RuntimeException('In arrow function'); +$value = $a ? $a : throw new \InvalidArgumentException('In ternary'); \ No newline at end of file diff --git a/tests/preserve_line/__snapshots__/jsfmt.spec.js.snap b/tests/preserve_line/__snapshots__/jsfmt.spec.mjs.snap similarity index 93% rename from tests/preserve_line/__snapshots__/jsfmt.spec.js.snap rename to tests/preserve_line/__snapshots__/jsfmt.spec.mjs.snap index 2d805f862..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,48 +244,48 @@ differentArgTypes( return true; }, - isTrue ? doSomething() : 12 + isTrue ? doSomething() : 12, ); moreArgTypes( [1, 2, 3], [ - 'name' => 'Hello World', - 'age' => 29, + "name" => "Hello World", + "age" => 29, ], doSomething( // Hello world // Hello world again - ['name' => 'Hello World', 'age' => 34], + ["name" => "Hello World", "age" => 34], - $oneThing + $anotherThing + $oneThing + $anotherThing, // Comment - ) + ), ); evenMoreArgTypes( doSomething( - ['name' => 'Hello World', 'age' => 34], + ["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,16 +293,16 @@ $bar->on( function () { doStuff(); - } + }, ); foo( - ['A, B'], + ["A, B"], /* 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( @@ -324,10 +324,10 @@ $stuff->doThing( -1, [ - 'accept' => function ($node) { + "accept" => function ($node) { doSomething($node); }, - ] + ], ); doThing( @@ -336,10 +336,10 @@ doThing( // This is important true, [ - 'decline' => function ($creditCard) { + "decline" => function ($creditCard) { takeMoney($creditCard); }, - ] + ], ); func( @@ -347,18 +347,18 @@ func( thing(); }, - ['yes' => true, 'no' => 5] + ["yes" => true, "no" => 5], ); doSomething( - ['tomorrow' => $maybe, 'today' => $never[$always]], + ["tomorrow" => $maybe, "today" => $never[$always]], 1337, /* Comment */ // This is important - [$helloWorld, $someImportantStuff] + [$helloWorld, $someImportantStuff], ); ================================================================================ @@ -426,10 +426,10 @@ class Foo class Foo { // property declaration - public $var = 'a default value'; - public $var_1 = 'a default value'; + public $var = "a default value"; + public $var_1 = "a default value"; - public $var_2 = 'a default value'; + public $var_2 = "a default value"; // method declaration public function displayVar() @@ -446,17 +446,17 @@ class Foo echo $this->var_2; } - const CONSTANT = 'constant value'; - const CONSTANT_1 = 'constant value'; + const CONSTANT = "constant value"; + const CONSTANT_1 = "constant value"; - const CONSTANT_2 = 'constant value'; + const CONSTANT_2 = "constant value"; // Comment // Comment public function __sleep() { - return ['dsn', 'username', 'password']; + return ["dsn", "username", "password"]; } // Comment @@ -617,50 +617,50 @@ $sel = $this->connections doSomething('Hello World') - ->doAnotherThing('Foo', ['foo' => $bar]) + ->doSomething("Hello World") + ->doAnotherThing("Foo", ["foo" => $bar]) // App configuration. ->doOneMoreThing($config) ->run(function () { - $console->log('Bar'); + $console->log("Bar"); }); $bigDeal - ->doSomething('Hello World') + ->doSomething("Hello World") // Hello world - ->doAnotherThing('Foo', ['foo' => $bar]) + ->doAnotherThing("Foo", ["foo" => $bar]) // App configuration. ->doOneMoreThing($config) ->run(function () { - $console->log('Bar'); + $console->log("Bar"); }); $foo->bar->baz - ->doSomething('Hello World') + ->doSomething("Hello World") // Hello world - ->foo->bar->doAnotherThing('Foo', ['foo' => $bar]) + ->foo->bar->doAnotherThing("Foo", ["foo" => $bar]) ->doOneMoreThing($config) ->bar->run(function () { - $console->log('Bar'); + $console->log("Bar"); }); ($somethingGood ? $thisIsIt : $maybeNot) // Hello world - ->doSomething('Hello World') + ->doSomething("Hello World") - ->doAnotherThing('Foo', ['foo' => $bar]) // Run this + ->doAnotherThing("Foo", ["foo" => $bar]) // Run this ->run(function () { - $console->log('Bar'); + $console->log("Bar"); }); // Do this $helloWorld 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 90% rename from tests/print/__snapshots__/jsfmt.spec.js.snap rename to tests/print/__snapshots__/jsfmt.spec.mjs.snap index a567b9ac8..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===================================== @@ -180,18 +180,18 @@ line with just a semicolon no extra whitespace! END; // However, the following examples will work: -$some_var ? print 'true' : print 'false'; +$some_var ? print "true" : print "false"; // print is also a construct, but // it behaves like a function, so // it may be used in this context. -print $some_var ? 'true' : 'false'; +print $some_var ? "true" : "false"; print $some_var - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + : "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; -print 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; +print "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; print 1000000000 + 1000000000 + 1000000000 + @@ -214,11 +214,11 @@ print 1000000000 + 1000000000 + 1000000000 + 1000000000; -print 'foo' . ($bar ? 2 : 1); +print "foo" . ($bar ? 2 : 1); print $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable->veryVeryVeryVeryVeryVeryLongProperty; -print str_replace('test', 'test', 'test'); -print str_replace('test', 'test', 'test'); +print str_replace("test", "test", "test"); +print str_replace("test", "test", "test"); print 1; print 1; @@ -227,12 +227,12 @@ print 1; print esc_html( sprintf( __( - 'Hi there. Your recent order on %s has been completed. ' . - 'Your order details are shown below for your reference:', - 'woocommerce' + "Hi there. Your recent order on %s has been completed. " . + "Your order details are shown below for your reference:", + "woocommerce", ), - get_option('blogname') - ) + get_option("blogname"), + ), ); print << $var, 'foo' => $var, 'bar' => $var]; +print ["key" => $var, "foo" => $var, "bar" => $var]; print [ - 'key' => $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, - 'other-key' => $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, - 'ohter-other-key' => $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, + "key" => $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, + "other-key" => $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, + "ohter-other-key" => $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable, ]; print $var->foo->bar->baz; @@ -299,10 +299,7 @@ print $var->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 99% rename from tests/program/__snapshots__/jsfmt.spec.js.snap rename to tests/program/__snapshots__/jsfmt.spec.mjs.snap index 11a14bafb..a29616c2d 100644 --- a/tests/program/__snapshots__/jsfmt.spec.js.snap +++ b/tests/program/__snapshots__/jsfmt.spec.mjs.snap @@ -80,7 +80,7 @@ echo 'test'; =====================================output===================================== 'value', 'other_key' => 'other_value']; + public $var7_2 = ["key" => "value", "other_key" => "other_value"]; public $var7_3 = [ - 'very_very_very_long_key' => 'very_very_very_long_value', - 'very_very_very_long_other_key' => 'very_very_very_long_other_value', + "very_very_very_long_key" => "very_very_very_long_value", + "very_very_very_long_other_key" => "very_very_very_long_other_value", ]; public $var8 = <<<'EOD' -hello world -EOD; + hello world + EOD; public $var9 = 11111111111111111111111111111111111111111111111111111111111111111111; - public $var10 = 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; + public $var10 = "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; public $var11 = true; - public $public = 'Public'; - protected $protected = 'Protected'; - private $private = 'Private'; + public $public = "Public"; + protected $protected = "Protected"; + private $private = "Private"; public $prop; private static $static_property; - public static $my_static = 'foo'; - static $my_static_1 = 'foo'; - public static $my_public_static = 'bar'; + public static $my_static = "foo"; + static $my_static_1 = "foo"; + public static $my_public_static = "bar"; static $foo; // visibility is empty var $bar; // visibility is null public $string = 'string 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 93% rename from tests/propertylookup/__snapshots__/jsfmt.spec.js.snap rename to tests/propertylookup/__snapshots__/jsfmt.spec.mjs.snap index fae4ba637..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===================================== @@ -23,8 +23,7 @@ $obj->{call()}; // encapsed (offset type) $obj->foo_{'test' . 'bar'}; // variable with literal with call -// TODO https://github.com/glayzzle/php-parser/issues/254 -// $obj->\${call()}; +$obj->\${call()}; =====================================output===================================== {$var}; // literal with call $obj->{call()}; // encapsed (offset type) -$obj->foo_['test' . 'bar']; +$obj->foo_["test" . "bar"]; // variable with literal with call -// TODO https://github.com/glayzzle/php-parser/issues/254 -// $obj->\${call()}; +$obj->\${call()}; ================================================================================ `; @@ -105,10 +103,10 @@ $obj->value = 2; $b = $this->foo; $b = $this->{foo}; -$b = $this->{foo['bar']}; -$b = $this->{'foo' . $bar}; +$b = $this->{foo["bar"]}; +$b = $this->{"foo" . $bar}; $b = $this->{self::STUFF}; -$object = $this->{'bar' . $foo}->buzz(); +$object = $this->{"bar" . $foo}->buzz(); $this->loooooooooooongloooooooooooongloooooooooooonglookup = "teeeeeeeeeeeeeeeeeeeeest"; @@ -117,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/propertylookup/offsets.php b/tests/propertylookup/offsets.php index a4e61e9f9..9916b0840 100644 --- a/tests/propertylookup/offsets.php +++ b/tests/propertylookup/offsets.php @@ -15,5 +15,4 @@ // encapsed (offset type) $obj->foo_{'test' . 'bar'}; // variable with literal with call -// TODO https://github.com/glayzzle/php-parser/issues/254 -// $obj->${call()}; +$obj->${call()}; diff --git a/tests/propertystatement/__snapshots__/jsfmt.spec.js.snap b/tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap similarity index 74% rename from tests/propertystatement/__snapshots__/jsfmt.spec.js.snap rename to tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap index ba1069ef8..2d9815817 100644 --- a/tests/propertystatement/__snapshots__/jsfmt.spec.js.snap +++ b/tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap @@ -37,18 +37,18 @@ class Foo { var $a; var $a, $b, $c; - var $a = 'foo', - $b = 'bar', - $c = 'baz'; - var $a = 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo', - $b = 'baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar', - $c = 'baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz'; + var $a = "foo", + $b = "bar", + $c = "baz"; + var $a = "foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", + $b = "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar", + $c = "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz"; var $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, $bbbbbbbbbbbbbbbbbbbbbbbbbbbbb, $cccccccccccccccccccccccccc; - var $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo', - $bbbbbbbbbbbbbbbbbbbbbbbbbbbbb = 'baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar', - $cccccccccccccccccccccccccc = 'baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz'; + var $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = "foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", + $bbbbbbbbbbbbbbbbbbbbbbbbbbbbb = "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar", + $cccccccccccccccccccccccccc = "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz"; private $a, $b, $c; private $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, $bbbbbbbbbbbbbbbbbbbbbbbbbbbbb, @@ -65,22 +65,22 @@ class Foo public static $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, $bbbbbbbbbbbbbbbbbbbbbbbbbbbbb, $cccccccccccccccccccccccccc; - public static $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = 'foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo', - $bbbbbbbbbbbbbbbbbbbbbbbbbbbbb = 'baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar', - $cccccccccccccccccccccccccc = 'baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz'; + public static $aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = "foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", + $bbbbbbbbbbbbbbbbbbbbbbbbbbbbb = "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar", + $cccccccccccccccccccccccccc = "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz"; public $a = [ - 'very_very_very_long_key' => 'very_very_very_long_value', - 'very_very_very_long_other_key' => - 'very_very_very_long_other_value', + "very_very_very_long_key" => "very_very_very_long_value", + "very_very_very_long_other_key" => + "very_very_very_long_other_value", ], $b = [ - 'very_very_very_long_key' => 'very_very_very_long_value', - 'very_very_very_long_other_key' => - 'very_very_very_long_other_value', + "very_very_very_long_key" => "very_very_very_long_value", + "very_very_very_long_other_key" => + "very_very_very_long_other_value", ]; - static $a = 'foo'; - static $a = 'foo', - $b = 'baz'; + static $a = "foo"; + static $a = "foo", + $b = "baz"; } ================================================================================ 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 89% rename from tests/require-pragma/__snapshots__/jsfmt.spec.js.snap rename to tests/require-pragma/__snapshots__/jsfmt.spec.mjs.snap index f29a25c93..14730b47b 100644 --- a/tests/require-pragma/__snapshots__/jsfmt.spec.js.snap +++ b/tests/require-pragma/__snapshots__/jsfmt.spec.mjs.snap @@ -25,16 +25,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @prettier */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -65,16 +65,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @prettier */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -105,16 +105,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @prettier */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -145,16 +145,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @prettier */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -185,16 +185,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @prettier */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -225,16 +225,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @prettier */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -265,16 +265,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @format */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -305,16 +305,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @format */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -345,16 +345,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @format */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -385,16 +385,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @format */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -425,16 +425,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @format */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ @@ -465,16 +465,16 @@ echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . 'This ' . * @format */ -echo 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . - 'This ' . - 'string ' . - 'was ' . - 'made ' . - 'with concatenation.' . +echo "This " . + "string " . + "was " . + "made " . + "with concatenation." . + "This " . + "string " . + "was " . + "made " . + "with concatenation." . "\\n"; ================================================================================ 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 82% rename from tests/retif/__snapshots__/jsfmt.spec.js.snap rename to tests/retif/__snapshots__/jsfmt.spec.mjs.snap index 146326917..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===================================== @@ -231,7 +231,7 @@ $test ?: doSomething(); return $test ?: doSomething(); $category_color = - get_field(Category_Meta::COLOR, 'category_' . $term_id) ?: 'gold'; + get_field(Category_Meta::COLOR, "category_" . $term_id) ?: "gold"; $var = ($someOtherReallyReallyLongVariable ? ($someOtherReallyReallyLongVariable @@ -259,55 +259,55 @@ $test = bar( $someOtherReallyReallyLongVariable, $someOtherReallyReallyLongVariable, - $someOtherReallyReallyLongVariable + $someOtherReallyReallyLongVariable, ); $test = $testReallyReallyReallyReallyReallyReallyLong >= 1 ?: $someOtherReallyReallyReallyReallyReallyReallyLongVariable; -$test = $foo ?: bar(['foo' => 'bar', 'bar' => 'foo']); +$test = $foo ?: bar(["foo" => "bar", "bar" => "foo"]); $test = $foo ?: bar([ - 'foo' => $someOtherReallyReallyLongVariable, - 'bar' => $someOtherReallyReallyLongVariable, + "foo" => $someOtherReallyReallyLongVariable, + "bar" => $someOtherReallyReallyLongVariable, ]); $var = ($this->databasePath ?: - $this->basePath . DIRECTORY_SEPARATOR . 'database') . + $this->basePath . DIRECTORY_SEPARATOR . "database") . ($path ? DIRECTORY_SEPARATOR . $path : $path); $var = ($this->databasePath - ? $this->basePath . DIRECTORY_SEPARATOR . 'other' - : $this->basePath . DIRECTORY_SEPARATOR . 'database') . + ? $this->basePath . DIRECTORY_SEPARATOR . "other" + : $this->basePath . DIRECTORY_SEPARATOR . "database") . ($path ? DIRECTORY_SEPARATOR . $path : $path); return ($this->databasePath ?: - $this->basePath . DIRECTORY_SEPARATOR . 'database') . + $this->basePath . DIRECTORY_SEPARATOR . "database") . ($path ? DIRECTORY_SEPARATOR . $path : $path); $test = $foo ? foo([ - 'foo' => $someOtherReallyReallyLongVariable, - 'bar' => $someOtherReallyReallyLongVariable, + "foo" => $someOtherReallyReallyLongVariable, + "bar" => $someOtherReallyReallyLongVariable, ]) : bar([ - 'foo' => $someOtherReallyReallyLongVariable, - 'bar' => $someOtherReallyReallyLongVariable, + "foo" => $someOtherReallyReallyLongVariable, + "bar" => $someOtherReallyReallyLongVariable, ]); $var = - 'string' . + "string" . $someOtherReallyReallyLongVariable . $someOtherReallyReallyLongVariable ? 1 : 2; $var = 1 - ? 'string' . + ? "string" . $someOtherReallyReallyLongVariable . $someOtherReallyReallyLongVariable : 2; $var = 1 ? 2 - : 'string' . + : "string" . $someOtherReallyReallyLongVariable . $someOtherReallyReallyLongVariable; @@ -332,7 +332,7 @@ $var = ? 1 : $someOtherReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongVariable); $var = $test - ? 'string' + ? "string" : ($someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable); @@ -340,42 +340,42 @@ $var = $test ? ($someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable) - : 'string'; + : "string"; $arr = [ - 'step' => - !empty($field['sliderStep']) && $field['sliderStep'] - ? (int) $field['sliderStep'] + "step" => + !empty($field["sliderStep"]) && $field["sliderStep"] + ? (int) $field["sliderStep"] : 1, - 'step' => true ? (int) $field['sliderStep'] : 1, - 'step' => true + "step" => true ? (int) $field["sliderStep"] : 1, + "step" => true ? $someOtherReallyReallyLongVariable . $someOtherReallyReallyLongVariable : 1, - 'step' => $someOtherReallyReallyLongVariable - ? (int) $field['sliderStep'] + "step" => $someOtherReallyReallyLongVariable + ? (int) $field["sliderStep"] : 1, - 'step' => - $someOtherReallyReallyLongVariable . 'string' - ? (int) $field['sliderStep'] + "step" => + $someOtherReallyReallyLongVariable . "string" + ? (int) $field["sliderStep"] : 1, - 'step' => + "step" => $someOtherReallyReallyLongVariable . $someOtherReallyReallyLongVariable - ? (int) $field['sliderStep'] + ? (int) $field["sliderStep"] : 1, - 'step' => + "step" => $someOtherReallyReallyReallyReallyLongVariable . $someOtherReallyReallyReallyReallyLongVariable - ? (int) $field['sliderStep'] + ? (int) $field["sliderStep"] : 1, - 'step' => + "step" => $someOtherReallyReallyReallyReallyLongVariable && $someOtherReallyReallyReallyReallyLongVariable - ? (int) $field['sliderStep'] + ? (int) $field["sliderStep"] : 1, ]; -$var = $var ?: $var ?: $var ?: 'string'; +$var = $var ?: $var ?: $var ?: "string"; $var = $var ?: $var ?: @@ -389,52 +389,52 @@ $var = $var ?: $var ?: $var ?: - 'string'; + "string"; -($var ? 'string' : 'other-string')(); -($var ?: $var ?: $var ?: 'string')(); +($var ? "string" : "other-string")(); +($var ?: $var ?: $var ?: "string")(); ( $someOtherReallyReallyLongVariable ?: - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" )(); ( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string' + "string" )(); ($someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable)(); ($var ? $var : $var)->call(); -($var ?: $var ?: $var ?: 'string')->call(); +($var ?: $var ?: $var ?: "string")->call(); ( $someOtherReallyReallyLongVariable ?: - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" )->call(); ( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string' + "string" )->call(); ($someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable )->call(); -($var ?: $var ?: $var ?: 'string')->foo; +($var ?: $var ?: $var ?: "string")->foo; ($var ? $var : $var)->foo; ( $someOtherReallyReallyLongVariable ?: - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" )->foo; ( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string' + "string" )->foo; ($someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable @@ -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,106 +464,106 @@ call( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'test' + "test", ); $var = [ - 'foo' => $var ?: $var ?: $var ?: 'string', - 'other-foo' => + "foo" => $var ?: $var ?: $var ?: "string", + "other-foo" => $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string', + "string", ]; -return $var ? 'string' : 'other-string'; -return $var ?: $var ?: $var ?: 'string'; +return $var ? "string" : "other-string"; +return $var ?: $var ?: $var ?: "string"; return $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable; return $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string'; + "string"; $var = - $this->databasePath ?: $this->basePath . DIRECTORY_SEPARATOR . 'database'; + $this->databasePath ?: $this->basePath . DIRECTORY_SEPARATOR . "database"; -$var = $var ?: $otherVar ?: 'string' . 'string'; +$var = $var ?: $otherVar ?: "string" . "string"; $var = $var ?: $otherVar ?: - 'string' . 'string' . 'string' . 'string' . 'string' . 'string'; + "string" . "string" . "string" . "string" . "string" . "string"; $var = $var ?: $otherVar ?: - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; - -echo $var ? 'string' : 'other-string'; -echo $var ?: $var ?: $var ?: 'string'; + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; + +echo $var ? "string" : "other-string"; +echo $var ?: $var ?: $var ?: "string"; echo $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable; echo $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string'; + "string"; -print $var ? 'string' : 'other-string'; -print $var ?: $var ?: $var ?: 'string'; +print $var ? "string" : "other-string"; +print $var ?: $var ?: $var ?: "string"; print $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable; print $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string'; + "string"; -include $var ? 'string' : 'other-string'; -include $var ?: $var ?: $var ?: 'string'; +include $var ? "string" : "other-string"; +include $var ?: $var ?: $var ?: "string"; include $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable; include $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string'; + "string"; -$var = include $var ? 'string' : 'other-string'; -$var = include $var ?: $var ?: $var ?: 'string'; +$var = include $var ? "string" : "other-string"; +$var = include $var ?: $var ?: $var ?: "string"; $var = include $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable; $var = include $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string'; + "string"; -call($var ? 'string' : 'other-string'); -call($var ?: $var ?: $var ?: 'string'); +call($var ? "string" : "other-string"); +call($var ?: $var ?: $var ?: "string"); call( $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable - : $someOtherReallyReallyLongVariable + : $someOtherReallyReallyLongVariable, ); call( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string' + "string", ); -exit($var ? 'string' : 'other-string'); -exit($var ?: $var ?: $var ?: 'string'); +exit($var ? "string" : "other-string"); +exit($var ?: $var ?: $var ?: "string"); exit( $someOtherReallyReallyLongVariable ? $someOtherReallyReallyLongVariable @@ -573,50 +573,50 @@ exit( $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: $someOtherReallyReallyLongVariable ?: - 'string' + "string" ); $var = $abilities ?: []; -$var = $abilities ?: ['foo', 'bar', 'bar']; +$var = $abilities ?: ["foo", "bar", "bar"]; $var = $abilities ?: [ - 'foo', - 'bar', - 'bar', - 'veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey', + "foo", + "bar", + "bar", + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey", ]; $var = $abilities ?: [ - 'foo', - 'bar', - 'bar', - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey', + "foo", + "bar", + "bar", + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey", ]; -$var = $abilities ?: ['view' => 'view']; +$var = $abilities ?: ["view" => "view"]; $var = $abilities ?: [ - 'view' => 'view', + "view" => "view", ]; $var = $abilities ?: [ - 'view' => 'view', - 'create' => 'create', - 'update' => 'update', - 'delete' => 'delete', + "view" => "view", + "create" => "create", + "update" => "update", + "delete" => "delete", ]; -$var = $abilities ?: ['foo', 'bar', 'bar'] ?: ['foo', 'bar', 'bar']; -$var = $abilities ?: ['foo', 'bar', 'bar'] ?: [ - 'foo', - 'bar', - 'bar', - 'veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey', +$var = $abilities ?: ["foo", "bar", "bar"] ?: ["foo", "bar", "bar"]; +$var = $abilities ?: ["foo", "bar", "bar"] ?: [ + "foo", + "bar", + "bar", + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongKey", ]; $var = $abilities ?: [ - 'view' => 'view', - 'create' => 'create', - 'update' => 'update', - 'delete' => 'delete', + "view" => "view", + "create" => "create", + "update" => "update", + "delete" => "delete", ] ?: [ - 'view' => 'view', - 'create' => 'create', - 'update' => 'update', - 'delete' => 'delete', + "view" => "view", + "create" => "create", + "update" => "update", + "delete" => "delete", ]; $callback = @@ -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 @@ -661,10 +657,10 @@ string string'; $var = [ - 'foo' => is_my() || !current_user_can("read") ? call_1() : call_2(), - 'bar' => + "foo" => is_my() || !current_user_can("read") ? call_1() : call_2(), + "bar" => is_my_very_long() || !current_user_can("read") ? call_1() : call_2(), - 'bar' => + "bar" => is_my_very_very_very_long() || !current_user_can("read") ? call_1() : call_2(), 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 79% rename from tests/return/__snapshots__/jsfmt.spec.js.snap rename to tests/return/__snapshots__/jsfmt.spec.mjs.snap index bd190f0a3..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===================================== @@ -256,9 +256,9 @@ return $VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName; return [1, 2, 3]; return [ $veryVeryVeryVeryVeryVeryLongKey => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", $veryVeryVeryVeryVeryVeryLongKey => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", 3, ]; return $a + $b; @@ -296,53 +296,33 @@ return $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable ? true : false; return $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongVariable->veryVeryVeryVeryVeryVeryLongProperty; -return $true ? 'foo' . ('foo' . 'bar') : "foobarfoo"; -return 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; -return 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; +return $true ? "foo" . ("foo" . "bar") : "foobarfoo"; +return "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; +return "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; return function () {}; 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 @@ -372,54 +352,54 @@ return new class { return null; -return json_decode(file_get_contents($this->basePath . '/composer.json'), true)[ - 'extra' -]['laravel']['dont-discover'] ?? []; +return json_decode(file_get_contents($this->basePath . "/composer.json"), true)[ + "extra" +]["laravel"]["dont-discover"] ?? []; -return json_decode(file_get_contents($this->basePath . '/composer.json'), true)[ - 'extra' -]['laravel']['dont-discover'] +return json_decode(file_get_contents($this->basePath . "/composer.json"), true)[ + "extra" +]["laravel"]["dont-discover"] ? [] : []; -return json_decode(file_get_contents($this->basePath . '/composer.json'), true)[ - 'extra' -]['laravel']['dont-discover'] . 'string'; +return json_decode(file_get_contents($this->basePath . "/composer.json"), true)[ + "extra" +]["laravel"]["dont-discover"] . "string"; -return 'string' . - json_decode(file_get_contents($this->basePath . '/composer.json'), true)[ - 'extra' - ]['laravel']['dont-discover']; +return "string" . + json_decode(file_get_contents($this->basePath . "/composer.json"), true)[ + "extra" + ]["laravel"]["dont-discover"]; -return json_decode(file_get_contents($this->basePath . '/composer.json'), true) +return json_decode(file_get_contents($this->basePath . "/composer.json"), true) ->foo->bar->foo->bar; -return json_decode(file_get_contents($this->basePath . '/composer.json'), true) +return json_decode(file_get_contents($this->basePath . "/composer.json"), true) ->foo() ->bar() ->foo() ->bar(); -return json_decode(file_get_contents($this->basePath . '/composer.json'), true) +return json_decode(file_get_contents($this->basePath . "/composer.json"), true) ::foo() ::bar() ::foo() ::bar(); -return json_decode(file_get_contents($this->basePath . '/composer.json'), true) - ->foo->bar->foo->bar . 'string'; +return json_decode(file_get_contents($this->basePath . "/composer.json"), true) + ->foo->bar->foo->bar . "string"; -return json_decode(file_get_contents($this->basePath . '/composer.json'), true) +return json_decode(file_get_contents($this->basePath . "/composer.json"), true) ->foo() ->bar() ->foo() - ->bar() . 'string'; + ->bar() . "string"; -return json_decode(file_get_contents($this->basePath . '/composer.json'), true) +return json_decode(file_get_contents($this->basePath . "/composer.json"), true) ::foo() ::bar() ::foo() - ::bar() . 'string'; + ::bar() . "string"; return isset($veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongLine) ? true @@ -429,86 +409,86 @@ return eval( '$var = "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongLine"; $var .= $var;' ); -return include 'foo.php' . ' MORE OUTPUT'; -return include 'foo.php' . - ' MORE OUTPUT' . - ' MORE OUTPUT' . - ' MORE OUTPUT' . - ' MORE OUTPUT' . - ' MORE OUTPUT' . - ' MORE OUTPUT'; +return include "foo.php" . " MORE OUTPUT"; +return include "foo.php" . + " MORE OUTPUT" . + " MORE OUTPUT" . + " MORE OUTPUT" . + " MORE OUTPUT" . + " MORE OUTPUT" . + " MORE OUTPUT"; return new Foo($arg); return new Foo( $arg, - 'string', + "string", 1024, $veryVeryVeryVeryVeryVeryLongLine, true, - false + false, ); return new Foo( $arg, - 'string', + "string", 1024, $veryVeryVeryVeryVeryVeryLongLine, true, - false -) . 'string'; -return 'string' . + false, +) . "string"; +return "string" . new Foo( $arg, - 'string', + "string", 1024, $veryVeryVeryVeryVeryVeryLongLine, true, - false + false, ); return []; -return ['foo', 'bar']; -return ['key' => 'foo', 'other-key' => 'bar']; +return ["foo", "bar"]; +return ["key" => "foo", "other-key" => "bar"]; return [ - 'key' => 'foo', - 'other-key' => 'bar', + "key" => "foo", + "other-key" => "bar", ]; return [ - 'foo', - 'bar', - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongLine', + "foo", + "bar", + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongLine", ]; return [ - 'bootstrap' => '^4.0.0', - 'jquery' => '^3.2', - 'popper.js' => '^1.12', + "bootstrap" => "^4.0.0", + "jquery" => "^3.2", + "popper.js" => "^1.12", ] || $packages; return $packages || [ - 'bootstrap' => '^4.0.0', - 'jquery' => '^3.2', - 'popper.js' => '^1.12', + "bootstrap" => "^4.0.0", + "jquery" => "^3.2", + "popper.js" => "^1.12", ]; 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'] ?? - 'https://api.sparkpost.com/api/v1/transmissions'; -return $this->getOptions()['endpoint'] ?? - ('https://api.sparkpost.com/api/v1/transmissions' ?? - ('https://api.sparkpost.com/api/v1/transmissions' ?? - 'https://api.sparkpost.com/api/v1/transmissions')); +return $this->getOptions()["endpoint"] ?? + "https://api.sparkpost.com/api/v1/transmissions"; +return $this->getOptions()["endpoint"] ?? + ("https://api.sparkpost.com/api/v1/transmissions" ?? + ("https://api.sparkpost.com/api/v1/transmissions" ?? + "https://api.sparkpost.com/api/v1/transmissions")); 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) && @@ -558,24 +538,24 @@ return call_user_func($this->passwordValidator, $credentials) && return $password === $confirm && call_user_func($this->passwordValidator, $credentials); -return is_string($this->recaller) && Str::contains($this->recaller, '|'); +return is_string($this->recaller) && Str::contains($this->recaller, "|"); return is_string($this->recallerWithClass) && - Str::contains($this->recaller, '|'); -return Str::contains($this->recaller, '|') && + Str::contains($this->recaller, "|"); +return Str::contains($this->recaller, "|") && is_string($this->recallerWithClass); -return in_array('odbc', $this->getAvailableDrivers()) && $config['odbc'] ?? +return in_array("odbc", $this->getAvailableDrivers()) && $config["odbc"] ?? null === true; -return in_array('odbc', $this->getAvailableDrivers()) && $config['odbc'] ?? +return in_array("odbc", $this->getAvailableDrivers()) && $config["odbc"] ?? null === true; -return in_array('odbc', $this->getAvailableDrivers()) && - ($config['odbc'] ?? null) === true; -return in_array('odbc', $this->getAvailableDrivers()) && - ($config['odbc'] ?? null) === true; +return in_array("odbc", $this->getAvailableDrivers()) && + ($config["odbc"] ?? null) === true; +return in_array("odbc", $this->getAvailableDrivers()) && + ($config["odbc"] ?? null) === true; return ($map[$name] ?? $name) . - (!is_null($parameters) ? ':' . $parameters : ''); + (!is_null($parameters) ? ":" . $parameters : ""); return ($map[$name] ?? $name) . - (!is_null($parameters) ? ':' . $parameters : ''); + (!is_null($parameters) ? ":" . $parameters : ""); ================================================================================ `; 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 83% rename from tests/silent/__snapshots__/jsfmt.spec.js.snap rename to tests/silent/__snapshots__/jsfmt.spec.mjs.snap index 4bc17084a..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===================================== @@ -24,24 +24,24 @@ $value = @ $cache[$key]; - 'veryVeryVeryVeryVeryVeryLongValue', + "veryVeryVeryVeryVeryVeryVeryLongKey" => + "veryVeryVeryVeryVeryVeryLongValue", ]); $variable = @foo() ->veryVeryVeryVeryVeryLongMethod() ->veryVeryVeryVeryVeryLongMethod() ->veryVeryVeryVeryVeryLongMethod(); $variable = @foo( - 'VeryVeryVeryVeryVeryVeryLongArgument', - 'VeryVeryVeryVeryVeryVeryLongArgument', - '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 92% rename from tests/statement/__snapshots__/jsfmt.spec.js.snap rename to tests/statement/__snapshots__/jsfmt.spec.mjs.snap index 8c4a7284e..c16c117e9 100644 --- a/tests/statement/__snapshots__/jsfmt.spec.js.snap +++ b/tests/statement/__snapshots__/jsfmt.spec.mjs.snap @@ -19,12 +19,10 @@ function foo() } class Test { - public function method() - { - } + public function method() {} } if (true) { - echo 'good'; + 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 69% rename from tests/static/__snapshots__/jsfmt.spec.js.snap rename to tests/static/__snapshots__/jsfmt.spec.mjs.snap index d9f6ba4bc..b7053ed68 100644 --- a/tests/static/__snapshots__/jsfmt.spec.js.snap +++ b/tests/static/__snapshots__/jsfmt.spec.mjs.snap @@ -55,63 +55,63 @@ static $testReallyReallyLong = 1, $someOtherReallyReallyLongVariable = 2, $oneMoreReallyLongVariable = 3; static $a = - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; static $b = - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", $b = - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; -static $a = ['value', 'other-value']; + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; +static $a = ["value", "other-value"]; static $a = [ - 'value', - 'other-value', - 'other-other-other-other-other-other-other-other-value', + "value", + "other-value", + "other-other-other-other-other-other-other-other-value", ]; -static $a = ['value', 'other-value'], - $b = ['value', 'other-value']; +static $a = ["value", "other-value"], + $b = ["value", "other-value"]; static $a = [ - 'value', - 'other-value', - 'other-other-other-other-other-other-other-other-value', + "value", + "other-value", + "other-other-other-other-other-other-other-other-value", ], $b = [ - 'value', - 'other-value', - 'other-other-other-other-other-other-other-other-value', + "value", + "other-value", + "other-other-other-other-other-other-other-other-value", ]; -static $a = ['key' => 'value', 'other-key' => 'other-value']; +static $a = ["key" => "value", "other-key" => "other-value"]; static $a = [ - 'key' => 'value', - 'other-key' => 'other-value', + "key" => "value", + "other-key" => "other-value", ]; -static $a = ['key' => 'value', 'other-key' => 'other-value'], - $b = ['key' => 'value', 'other-key' => 'other-value']; +static $a = ["key" => "value", "other-key" => "other-value"], + $b = ["key" => "value", "other-key" => "other-value"]; static $a = [ - 'key' => 'value', - 'other-key' => 'other-value', + "key" => "value", + "other-key" => "other-value", ], $b = [ - 'key' => 'value', - 'other-key' => 'other-value', + "key" => "value", + "other-key" => "other-value", ]; static $a = - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; static $a, $b = - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string' . - 'string'; + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string" . + "string"; static $a = 'string string string'; 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 95% rename from tests/staticlookup/__snapshots__/jsfmt.spec.js.snap rename to tests/staticlookup/__snapshots__/jsfmt.spec.mjs.snap index 0a43fc38f..121cb5059 100644 --- a/tests/staticlookup/__snapshots__/jsfmt.spec.js.snap +++ b/tests/staticlookup/__snapshots__/jsfmt.spec.mjs.snap @@ -193,14 +193,14 @@ $var = $bar->foo_{$property}; =====================================output===================================== 'bar', - 'bar' => 'foo', - 'foobar' => 'barfoo', - 'barfoo' => 'foobar', + "foo" => "bar", + "bar" => "foo", + "foobar" => "barfoo", + "barfoo" => "foobar", ]); MyClass::$aStaticProp; MyClass::$aStaticProp = 1; @@ -209,7 +209,7 @@ MyClass::$$b; class Foo { - public static $my_static = 'foo'; + public static $my_static = "foo"; public function staticValue() { @@ -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 @@ -314,7 +310,7 @@ class Foo } } -$var = $this->modelClass::where('name', 'like', strtoupper("%\${key}%"))->get(); +$var = $this->modelClass::where("name", "like", strtoupper("%\${key}%"))->get(); MyVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClass::class; @@ -348,15 +344,15 @@ $var = $var[0]::foo; $var = $var[0][1]::foo; $var = $var[0][1]::foo; $var = $var[0][1]::foo; -$var = (new Foo())::bar; -$var = Foo::$bar['baz'](); -$var = Foo::$bar['baz'](); -$var = Foo::{$bar['baz']}(); -$var = Foo::$bar['baz'](); +$var = new Foo()::bar; +$var = Foo::$bar["baz"](); +$var = Foo::$bar["baz"](); +$var = Foo::{$bar["baz"]}(); +$var = Foo::$bar["baz"](); get_class($this->resource)::$wrap; -$var = Foo::$bar['baz'](); +$var = Foo::$bar["baz"](); $var = get_class($var)::property; $var = get_class($var)::$property; 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.mjs.snap b/tests/string-double-quote/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..e8f8159a1 --- /dev/null +++ b/tests/string-double-quote/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,88 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`quoting.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 +singleQuote: false + | printWidth +=====================================input====================================== +john drank some $juices[0] juice."; $string = "This is { $great}"; $string = "This is {$great}"; $string = "This square is {$square->width}00 centimeters broad."; -$string = "This works: {$arr['key']}"; +$string = "This works: {$arr["key"]}"; $string = "This works: {$arr[4][3]}"; -$string = "This works: " . $arr['foo'][3]; +$string = "This works: " . $arr["foo"][3]; $string = "This works too: {$obj->values[3]->name}"; $string = "This is the value of the var named $name: {\${$name}}"; $string = "This is the value of the var named by the return value of getName(): {\${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"; $string = "I'd like an {\${beers::$ale}}\\n"; $test = "\\\\"; -$test = '\\\\'; +$test = "\\\\"; printf("Query run in $queryTimeTaken seconds.\\n"); $test = "You can also have embedded\\n newlines in strings this way as it is okay to do"; -$test = '/(<]*)>/i'; +$test = "/(<]*)>/i"; $string = "\\"encapsed $escaping\\""; $string = - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'; + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString"; $string = "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString\\n"; $string = "ShortString\\n"; @@ -336,7 +336,7 @@ $string = "\\'"; $string = '\\''; $string = '\\"'; $string = "\\#"; -$string = '\\#'; +$string = "\\#"; $string = "\\e"; $string = '\\e'; $string = "\\""; @@ -346,9 +346,9 @@ $string = "\\"\${foo}\\""; $string = '\\'\${foo}\\''; $string = '\\"\${foo}\\"'; $string = "/\\!/"; -$string = '/\\!/'; +$string = "/\\!/"; +$string = "/\\@/"; $string = "/\\@/"; -$string = '/\\@/'; $string = '\\n'; $string = '\\r'; $string = "\\n"; @@ -365,7 +365,7 @@ $string = "\\777"; $string = "\\xFF"; $string = "\\u{FFFF}"; $string = "\\:"; -$string = '\\:'; +$string = "\\:"; ================================================================================ `; 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 95% rename from tests/switch/__snapshots__/jsfmt.spec.js.snap rename to tests/switch/__snapshots__/jsfmt.spec.mjs.snap index 55d2ca4d5..293cb2ff0 100644 --- a/tests/switch/__snapshots__/jsfmt.spec.js.snap +++ b/tests/switch/__snapshots__/jsfmt.spec.mjs.snap @@ -263,14 +263,14 @@ switch (1) { 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 - 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 80% rename from tests/sys/__snapshots__/jsfmt.spec.js.snap rename to tests/sys/__snapshots__/jsfmt.spec.mjs.snap index 0dfcf60af..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===================================== @@ -39,13 +39,13 @@ isset($expected_array_got_string['0 Mostel']); echo "test echo"; echo $test, $other; -$info = ['coffee', 'brown', 'caffeine']; -list($drink, $color, $power) = $info; -list( +$info = ["coffee", "brown", "caffeine"]; +[$drink, $color, $power] = $info; +[ $reallyReallyReallyReallyLongName, $otherReallyReallyReallyLongName, $lastOne, -) = $info; +] = $info; print "test print"; print "parens test"; @@ -68,17 +68,17 @@ isset( $test, $test, $test, - $test + $test, ); -isset($test['foo']); -isset($a['cake']['a']['b']); -isset($expected_array_got_string['some_key']); +isset($test["foo"]); +isset($a["cake"]["a"]["b"]); +isset($expected_array_got_string["some_key"]); isset($expected_array_got_string[0]); -isset($expected_array_got_string['0']); +isset($expected_array_got_string["0"]); isset($expected_array_got_string[0.5]); -isset($expected_array_got_string['0.5']); -isset($expected_array_got_string['0 Mostel']); +isset($expected_array_got_string["0.5"]); +isset($expected_array_got_string["0 Mostel"]); ================================================================================ `; 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 81% rename from tests/trailing_commas/__snapshots__/jsfmt.spec.js.snap rename to tests/trailing_commas/__snapshots__/jsfmt.spec.mjs.snap index d09d9a883..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====================================== @@ -208,45 +209,45 @@ EOT =====================================output===================================== 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; -$foo = ['foo', 'bar']; -$foo = ['foo', 'bar']; +$foo = ["foo", "bar"]; +$foo = ["foo", "bar"]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) + idx($composer, "require", []), + idx($composer, "require-dev", []) ); // nowdoc @@ -260,7 +261,7 @@ EOT , ]; $expected = [ - 'foo', + "foo", <<<'EOT' foo # bar @@ -277,7 +278,7 @@ baz EOT , - 'bar', + "bar", ]; // heredoc @@ -291,7 +292,7 @@ EOT , ]; $expected = [ - 'foo', + "foo", << <<<'EOT' + "key" => <<<'EOT' foo # bar baz @@ -322,8 +323,8 @@ EOT , ]; $expected = [ - 'foo', - 'key' => <<<'EOT' + "foo", + "key" => <<<'EOT' foo # bar baz @@ -332,19 +333,19 @@ EOT , ]; $expected = [ - 'key' => <<<'EOT' + "key" => <<<'EOT' foo # bar baz EOT , - 'bar', + "bar", ]; // Associative array with heredoc $expected = [ - 'key' => << << << << << << <<<'EOT' + "test" => <<<'EOT' foo # bar baz EOT , - 'collection' => [ + "collection" => [ [ - 'one' => <<<'EOT' + "one" => <<<'EOT' foo # bar baz @@ -393,7 +394,7 @@ EOT , ], [ - 'two' => <<<'EOT' + "two" => <<<'EOT' foo # bar baz @@ -405,16 +406,16 @@ EOT // Nested with heredoc $expected = [ - 'test' => << << [ + "collection" => [ [ - 'one' => << << << << 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ); $foo = array( - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ); -$foo = array('foo', 'bar'); -$foo = array('foo', 'bar'); +$foo = array("foo", "bar"); +$foo = array("foo", "bar"); $foo = array( - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ); $foo = array( - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ); $foo = array( - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ); $foo = array( - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ); $packages = array_merge( - idx($composer, 'require', array()), - idx($composer, 'require-dev', array()) + idx($composer, "require", array()), + idx($composer, "require-dev", array()) ); // nowdoc @@ -698,7 +699,7 @@ EOT , ); $expected = array( - 'foo', + "foo", <<<'EOT' foo # bar @@ -715,7 +716,7 @@ baz EOT , - 'bar', + "bar", ); // heredoc @@ -729,7 +730,7 @@ EOT , ); $expected = array( - 'foo', + "foo", << <<<'EOT' + "key" => <<<'EOT' foo # bar baz @@ -760,8 +761,8 @@ EOT , ); $expected = array( - 'foo', - 'key' => <<<'EOT' + "foo", + "key" => <<<'EOT' foo # bar baz @@ -770,19 +771,19 @@ EOT , ); $expected = array( - 'key' => <<<'EOT' + "key" => <<<'EOT' foo # bar baz EOT , - 'bar', + "bar", ); // Associative array with heredoc $expected = array( - 'key' => << << << << << << <<<'EOT' + "test" => <<<'EOT' foo # bar baz EOT , - 'collection' => array( + "collection" => array( array( - 'one' => <<<'EOT' + "one" => <<<'EOT' foo # bar baz @@ -831,7 +832,7 @@ EOT , ), array( - 'two' => <<<'EOT' + "two" => <<<'EOT' foo # bar baz @@ -843,16 +844,16 @@ EOT // Nested with heredoc $expected = array( - 'test' => << << array( + "collection" => array( array( - 'one' => << << << << 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; -$foo = ['foo', 'bar']; -$foo = ['foo', 'bar']; +$foo = ["foo", "bar"]; +$foo = ["foo", "bar"]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) + idx($composer, "require", []), + idx($composer, "require-dev", []) ); // nowdoc @@ -1136,7 +1137,7 @@ EOT , ]; $expected = [ - 'foo', + "foo", <<<'EOT' foo # bar @@ -1153,7 +1154,7 @@ baz EOT , - 'bar', + "bar", ]; // heredoc @@ -1167,7 +1168,7 @@ EOT , ]; $expected = [ - 'foo', + "foo", << <<<'EOT' + "key" => <<<'EOT' foo # bar baz @@ -1198,8 +1199,8 @@ EOT , ]; $expected = [ - 'foo', - 'key' => <<<'EOT' + "foo", + "key" => <<<'EOT' foo # bar baz @@ -1208,19 +1209,19 @@ EOT , ]; $expected = [ - 'key' => <<<'EOT' + "key" => <<<'EOT' foo # bar baz EOT , - 'bar', + "bar", ]; // Associative array with heredoc $expected = [ - 'key' => << << << << << << <<<'EOT' + "test" => <<<'EOT' foo # bar baz EOT , - 'collection' => [ + "collection" => [ [ - 'one' => <<<'EOT' + "one" => <<<'EOT' foo # bar baz @@ -1269,7 +1270,7 @@ EOT , ], [ - 'two' => <<<'EOT' + "two" => <<<'EOT' foo # bar baz @@ -1281,16 +1282,16 @@ EOT // Nested with heredoc $expected = [ - 'test' => << << [ + "collection" => [ [ - 'one' => << << << << 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; -$foo = ['foo', 'bar']; -$foo = ['foo', 'bar']; +$foo = ["foo", "bar"]; +$foo = ["foo", "bar"]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2', + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar', + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar", ]; $packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []), + idx($composer, "require", []), + idx($composer, "require-dev", []), ); // nowdoc @@ -1574,7 +1575,7 @@ $expected = [ , ]; $expected = [ - 'foo', + "foo", <<<'EOT' foo # bar @@ -1591,43 +1592,43 @@ $expected = [ EOT , - 'bar', + "bar", ]; // heredoc $expected = [ << <<<'EOT' + "key" => <<<'EOT' foo # bar baz @@ -1636,8 +1637,8 @@ $expected = [ , ]; $expected = [ - 'foo', - 'key' => <<<'EOT' + "foo", + "key" => <<<'EOT' foo # bar baz @@ -1646,59 +1647,59 @@ $expected = [ , ]; $expected = [ - 'key' => <<<'EOT' + "key" => <<<'EOT' foo # bar baz EOT , - 'bar', + "bar", ]; // Associative array with heredoc $expected = [ - 'key' => << << << << << << <<<'EOT' + "test" => <<<'EOT' foo # bar baz EOT , - 'collection' => [ + "collection" => [ [ - 'one' => <<<'EOT' + "one" => <<<'EOT' foo # bar baz @@ -1707,7 +1708,7 @@ $expected = [ , ], [ - 'two' => <<<'EOT' + "two" => <<<'EOT' foo # bar baz @@ -1719,29 +1720,29 @@ $expected = [ // Nested with heredoc $expected = [ - 'test' => << << [ + "collection" => [ [ - 'one' => << << << << 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar' + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar" ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar' + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar" ]; -$foo = ['foo', 'bar']; -$foo = ['foo', 'bar']; +$foo = ["foo", "bar"]; +$foo = ["foo", "bar"]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2' + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2" ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1', - 'very-very-very-very-very-very-very-very-very-long-item-2' + "very-very-very-very-very-very-very-very-very-long-item-1", + "very-very-very-very-very-very-very-very-very-long-item-2" ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar' + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar" ]; $foo = [ - 'very-very-very-very-very-very-very-very-very-long-item-1' => 'foo', - 'very-very-very-very-very-very-very-very-very-long-item-2' => 'bar' + "very-very-very-very-very-very-very-very-very-long-item-1" => "foo", + "very-very-very-very-very-very-very-very-very-long-item-2" => "bar" ]; $packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) + idx($composer, "require", []), + idx($composer, "require-dev", []) ); // nowdoc @@ -2011,7 +2013,7 @@ baz EOT ]; $expected = [ - 'foo', + "foo", <<<'EOT' foo # bar @@ -2027,7 +2029,7 @@ baz EOT , - 'bar' + "bar" ]; // heredoc @@ -2040,7 +2042,7 @@ baz EOT ]; $expected = [ - 'foo', + "foo", << <<<'EOT' + "key" => <<<'EOT' foo # bar baz @@ -2069,8 +2071,8 @@ baz EOT ]; $expected = [ - 'foo', - 'key' => <<<'EOT' + "foo", + "key" => <<<'EOT' foo # bar baz @@ -2078,19 +2080,19 @@ baz EOT ]; $expected = [ - 'key' => <<<'EOT' + "key" => <<<'EOT' foo # bar baz EOT , - 'bar' + "bar" ]; // Associative array with heredoc $expected = [ - 'key' => << << << << << << <<<'EOT' + "test" => <<<'EOT' foo # bar baz EOT , - 'collection' => [ + "collection" => [ [ - 'one' => <<<'EOT' + "one" => <<<'EOT' foo # bar baz @@ -2136,7 +2138,7 @@ baz EOT ], [ - 'two' => <<<'EOT' + "two" => <<<'EOT' foo # bar baz @@ -2147,16 +2149,16 @@ EOT // Nested with heredoc $expected = [ - 'test' => << << [ + "collection" => [ [ - 'one' => << << << <<connections =====================================output===================================== bar('method', 'bar'); +$foo->bar("method", "bar"); $foo->bar( - 'method', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -$foo('invoke', 'bar'); +$foo("invoke", "bar"); $foo( - 'invoke', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "invoke", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); $var = strlen($var); $var = strlen( $var, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); @@ -2385,22 +2388,22 @@ var_dump( $whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -echo $twig->render('index.html', compact('title', 'body', 'comments')); +echo $twig->render("index.html", compact("title", "body", "comments")); echo $twig->render( - 'index.html', + "index.html", compact( - 'title', - 'body', - 'comments', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "title", + "body", + "comments", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ) ); -$newArray = array_merge($arrayOne, $arrayTwo, ['foo', 'bar']); +$newArray = array_merge($arrayOne, $arrayTwo, ["foo", "bar"]); $newArray = array_merge( $arrayOne, @@ -2409,25 +2412,25 @@ $newArray = array_merge( $arrayTwo, $arrayTwo, $arrayTwo, - ['foo', 'bar'] + ["foo", "bar"] ); -$en = 'A trailing %s makes %s a happy developer.'; -$text = sprintf($en, 'comma', 'Jane'); +$en = "A trailing %s makes %s a happy developer."; +$text = sprintf($en, "comma", "Jane"); $text = sprintf( $en, - 'comma', - 'Jane', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "comma", + "Jane", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); call( [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ], [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ] ); @@ -2627,51 +2630,51 @@ $sel = $this->connections =====================================output===================================== bar('method', 'bar'); +$foo->bar("method", "bar"); $foo->bar( - 'method', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -$foo('invoke', 'bar'); +$foo("invoke", "bar"); $foo( - 'invoke', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "invoke", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); $var = strlen($var); $var = strlen( $var, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); @@ -2680,22 +2683,22 @@ var_dump( $whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -echo $twig->render('index.html', compact('title', 'body', 'comments')); +echo $twig->render("index.html", compact("title", "body", "comments")); echo $twig->render( - 'index.html', + "index.html", compact( - 'title', - 'body', - 'comments', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "title", + "body", + "comments", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ) ); -$newArray = array_merge($arrayOne, $arrayTwo, array('foo', 'bar')); +$newArray = array_merge($arrayOne, $arrayTwo, array("foo", "bar")); $newArray = array_merge( $arrayOne, @@ -2704,25 +2707,25 @@ $newArray = array_merge( $arrayTwo, $arrayTwo, $arrayTwo, - array('foo', 'bar') + array("foo", "bar") ); -$en = 'A trailing %s makes %s a happy developer.'; -$text = sprintf($en, 'comma', 'Jane'); +$en = "A trailing %s makes %s a happy developer."; +$text = sprintf($en, "comma", "Jane"); $text = sprintf( $en, - 'comma', - 'Jane', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "comma", + "Jane", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); call( array( - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ), array( - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ) ); @@ -2922,51 +2925,51 @@ $sel = $this->connections =====================================output===================================== bar('method', 'bar'); +$foo->bar("method", "bar"); $foo->bar( - 'method', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -$foo('invoke', 'bar'); +$foo("invoke", "bar"); $foo( - 'invoke', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "invoke", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); $var = strlen($var); $var = strlen( $var, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); @@ -2975,22 +2978,22 @@ var_dump( $whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -echo $twig->render('index.html', compact('title', 'body', 'comments')); +echo $twig->render("index.html", compact("title", "body", "comments")); echo $twig->render( - 'index.html', + "index.html", compact( - 'title', - 'body', - 'comments', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "title", + "body", + "comments", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ) ); -$newArray = array_merge($arrayOne, $arrayTwo, ['foo', 'bar']); +$newArray = array_merge($arrayOne, $arrayTwo, ["foo", "bar"]); $newArray = array_merge( $arrayOne, @@ -2999,25 +3002,25 @@ $newArray = array_merge( $arrayTwo, $arrayTwo, $arrayTwo, - ['foo', 'bar'] + ["foo", "bar"] ); -$en = 'A trailing %s makes %s a happy developer.'; -$text = sprintf($en, 'comma', 'Jane'); +$en = "A trailing %s makes %s a happy developer."; +$text = sprintf($en, "comma", "Jane"); $text = sprintf( $en, - 'comma', - 'Jane', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "comma", + "Jane", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); call( [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ], [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ] ); @@ -3217,51 +3220,51 @@ $sel = $this->connections =====================================output===================================== bar('method', 'bar'); +$foo->bar("method", "bar"); $foo->bar( - 'method', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ); -$foo('invoke', 'bar'); +$foo("invoke", "bar"); $foo( - 'invoke', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "invoke", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ); $var = strlen($var); $var = strlen( $var, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ); var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); @@ -3270,22 +3273,22 @@ var_dump( $whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ); -echo $twig->render('index.html', compact('title', 'body', 'comments')); +echo $twig->render("index.html", compact("title", "body", "comments")); echo $twig->render( - 'index.html', + "index.html", compact( - 'title', - 'body', - 'comments', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "title", + "body", + "comments", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ), ); -$newArray = array_merge($arrayOne, $arrayTwo, ['foo', 'bar']); +$newArray = array_merge($arrayOne, $arrayTwo, ["foo", "bar"]); $newArray = array_merge( $arrayOne, @@ -3294,25 +3297,25 @@ $newArray = array_merge( $arrayTwo, $arrayTwo, $arrayTwo, - ['foo', 'bar'], + ["foo", "bar"], ); -$en = 'A trailing %s makes %s a happy developer.'; -$text = sprintf($en, 'comma', 'Jane'); +$en = "A trailing %s makes %s a happy developer."; +$text = sprintf($en, "comma", "Jane"); $text = sprintf( $en, - 'comma', - 'Jane', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "comma", + "Jane", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ); call( [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ], [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", ], ); @@ -3327,10 +3330,10 @@ call( call( <<foo. -Now, I am printing some {$foo->bar[1]}. -This should not print a capital 'A': \\x41 -EOT + My name is "$name". I am printing some $foo->foo. + Now, I am printing some {$foo->bar[1]}. + This should not print a capital 'A': \\x41 + EOT , ); @@ -3359,6 +3362,7 @@ $sel = $this->connections exports[`call.php 5`] = ` ====================================options===================================== parsers: ["php"] +phpVersion: "7.0" printWidth: 80 trailingComma: "all" trailingCommaPHP: false @@ -3514,51 +3518,51 @@ $sel = $this->connections =====================================output===================================== bar('method', 'bar'); +$foo->bar("method", "bar"); $foo->bar( - 'method', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -$foo('invoke', 'bar'); +$foo("invoke", "bar"); $foo( - 'invoke', - 'bar', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "invoke", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); $var = strlen($var); $var = strlen( $var, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); @@ -3567,22 +3571,22 @@ var_dump( $whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck, - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); -echo $twig->render('index.html', compact('title', 'body', 'comments')); +echo $twig->render("index.html", compact("title", "body", "comments")); echo $twig->render( - 'index.html', + "index.html", compact( - 'title', - 'body', - 'comments', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "title", + "body", + "comments", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ) ); -$newArray = array_merge($arrayOne, $arrayTwo, ['foo', 'bar']); +$newArray = array_merge($arrayOne, $arrayTwo, ["foo", "bar"]); $newArray = array_merge( $arrayOne, @@ -3591,25 +3595,25 @@ $newArray = array_merge( $arrayTwo, $arrayTwo, $arrayTwo, - ['foo', 'bar'] + ["foo", "bar"] ); -$en = 'A trailing %s makes %s a happy developer.'; -$text = sprintf($en, 'comma', 'Jane'); +$en = "A trailing %s makes %s a happy developer."; +$text = sprintf($en, "comma", "Jane"); $text = sprintf( $en, - 'comma', - 'Jane', - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "comma", + "Jane", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ); call( [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ], [ - 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string' + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" ] ); @@ -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====================================== @@ -4004,27 +4011,27 @@ list(,,,0 => $firstVeryVeryVeryVeryLong,,, 1 => $secondVeryVeryVeryVeryLong,,, 2 =====================================output===================================== $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( +] = $arr; +[ , 0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( +] = $arr; +[ , , 0 => $firstVeryVeryVeryVeryLong, @@ -4032,8 +4039,8 @@ list( 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, , -) = $arr; -list( +] = $arr; +[ , , 0 => $firstVeryVeryVeryVeryLong, @@ -4044,8 +4051,8 @@ list( , 3 => $fourthVeryVeryVeryVeryLong, , -) = $arr; -list( +] = $arr; +[ , , , @@ -4055,8 +4062,8 @@ list( 3 => $fourthVeryVeryVeryVeryLong, , , -) = $arr; -list( +] = $arr; +[ , , , @@ -4072,7 +4079,7 @@ list( 3 => $fourthVeryVeryVeryVeryLong, , , -) = $arr; +] = $arr; ================================================================================ `; @@ -4104,27 +4111,27 @@ list(,,,0 => $firstVeryVeryVeryVeryLong,,, 1 => $secondVeryVeryVeryVeryLong,,, 2 =====================================output===================================== $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( +] = $arr; +[ , 0 => $firstVeryVeryVeryVeryLong, 1 => $secondVeryVeryVeryVeryLong, 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, -) = $arr; -list( +] = $arr; +[ , , 0 => $firstVeryVeryVeryVeryLong, @@ -4132,8 +4139,8 @@ list( 2 => $threeVeryVeryVeryVeryLong, 3 => $fourthVeryVeryVeryVeryLong, , -) = $arr; -list( +] = $arr; +[ , , 0 => $firstVeryVeryVeryVeryLong, @@ -4144,8 +4151,8 @@ list( , 3 => $fourthVeryVeryVeryVeryLong, , -) = $arr; -list( +] = $arr; +[ , , , @@ -4155,8 +4162,8 @@ list( 3 => $fourthVeryVeryVeryVeryLong, , , -) = $arr; -list( +] = $arr; +[ , , , @@ -4172,7 +4179,7 @@ list( 3 => $fourthVeryVeryVeryVeryLong, , , -) = $arr; +] = $arr; ================================================================================ `; @@ -4180,6 +4187,7 @@ list( 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 96% rename from tests/trailing_whitespace/__snapshots__/jsfmt.spec.js.snap rename to tests/trailing_whitespace/__snapshots__/jsfmt.spec.mjs.snap index 0ed49291c..988df3913 100644 --- a/tests/trailing_whitespace/__snapshots__/jsfmt.spec.js.snap +++ b/tests/trailing_whitespace/__snapshots__/jsfmt.spec.mjs.snap @@ -13,9 +13,9 @@ $test1 = 'string'; =====================================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.mjs.snap b/tests/uniontypes/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..acb78e458 --- /dev/null +++ b/tests/uniontypes/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,42 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`union.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "8.0" +printWidth: 80 + | printWidth +=====================================input====================================== +a); unset($a->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 85% rename from tests/variable/__snapshots__/jsfmt.spec.js.snap rename to tests/variable/__snapshots__/jsfmt.spec.mjs.snap index 552c7974c..aca404272 100644 --- a/tests/variable/__snapshots__/jsfmt.spec.js.snap +++ b/tests/variable/__snapshots__/jsfmt.spec.mjs.snap @@ -84,10 +84,10 @@ $var = \${ 'price_for_' . $today}; =====================================output===================================== $id_field; @@ -109,34 +109,34 @@ $var = $var->{'😀'}; // http://php.net/manual/ru/migration70.incompatible.php#migration70.incompatible.variable-handling.indirect -$var = $$foo['bar']['baz']; -$var = $foo->$bar['baz']; -$var = $foo->$bar['baz'](); -$var = Foo::$bar['baz'](); +$var = $$foo["bar"]["baz"]; +$var = $foo->$bar["baz"]; +$var = $foo->$bar["baz"](); +$var = Foo::$bar["baz"](); -$var = \${$foo['bar']['baz']}; -$var = $foo->{$bar['baz']}; -$var = $foo->{$bar['baz']}(); -$var = Foo::{$bar['baz']}(); +$var = \${$foo["bar"]["baz"]}; +$var = $foo->{$bar["baz"]}; +$var = $foo->{$bar["baz"]}(); +$var = Foo::{$bar["baz"]}(); -$var = $$foo['bar']['baz']; -$var = $foo->$bar['baz']; -$var = $foo->$bar['baz'](); -$var = Foo::$bar()['baz'](); +$var = $$foo["bar"]["baz"]; +$var = $foo->$bar["baz"]; +$var = $foo->$bar["baz"](); +$var = Foo::$bar()["baz"](); -$var = Foo::$bar()['baz'](); -$var = Foo::bar()['baz'](); -$var = Foo::bar()['baz'](); +$var = Foo::$bar()["baz"](); +$var = Foo::bar()["baz"](); +$var = Foo::bar()["baz"](); -$var = Foo::$bar['baz']; -$var = Foo::$bar['baz']; +$var = Foo::$bar["baz"]; +$var = Foo::$bar["baz"]; $$$$$$$$$$var = "I like playing in the park"; $var = \${$a[1]}; $var = \${$a}[1]; $var = \${"name_$type"}; -$var = \${'price_for_' . $today}; +$var = \${"price_for_" . $today}; \${date("M")} = "Worked"; \${$a}[] = "four"; \${$base . $suffix} = "whatever"; 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 78% rename from tests_config/run_spec.js rename to tests_config/run_spec.mjs index db513491b..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,10 +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); + }); - test(basename, () => { + // eslint-disable-next-line jest/valid-title + test(basename, async () => { expect(visualizedOutput).toEqual( visualizeEndOfLine(consistentEndOfLine(output)) ); @@ -100,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) ); @@ -200,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 9a6daefdb..b36e788a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,459 +2,545 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" - integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" - -"@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" - -"@babel/generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" - integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== - dependencies: - "@babel/types" "^7.10.4" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@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== - dependencies: - "@babel/types" "^7.9.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" - integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" - integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== - dependencies: - "@babel/compat-data" "^7.10.4" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" - integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - -"@babel/helper-create-regexp-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" - integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" - integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" - integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== - dependencies: - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" - -"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" - integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" - integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== - dependencies: - "@babel/types" "^7.10.4" - -"@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.10.4", "@babel/helper-module-imports@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-transforms@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" - integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - lodash "^4.17.13" - -"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== - dependencies: - "@babel/types" "^7.10.4" - -"@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" +"@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/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" - integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== +"@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: - lodash "^4.17.13" + "@jridgewell/trace-mapping" "^0.3.0" -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== +"@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/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== +"@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/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@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/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== +"@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/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/highlight" "^7.16.7" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== +"@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/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/highlight" "^7.18.6" -"@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== +"@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/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/highlight" "^7.22.5" -"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" - integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== +"@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/types" "^7.11.0" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/helper-split-export-declaration@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" - integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== +"@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/types" "^7.10.4" - -"@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.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-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/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-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== +"@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-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.19.0" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" -"@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== +"@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/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.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" + +"@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.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== +"@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.10.4" + "@babel/helper-validator-identifier" "^7.22.5" chalk "^2.0.0" 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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" - integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== - -"@babel/plugin-proposal-async-generator-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" - integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== +"@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-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" -"@babel/plugin-proposal-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" - integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.0" +"@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.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" - integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== +"@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.10.4" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/types" "^7.27.3" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" - integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@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.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" - integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== +"@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/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-proposal-optional-catch-binding@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== +"@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.10.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-proposal-optional-chaining@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" - integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== +"@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.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-proposal-private-methods@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" - integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@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-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== +"@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-create-regexp-features-plugin" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@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.0", "@babel/plugin-syntax-async-generators@^7.8.4": +"@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== @@ -468,489 +554,682 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== +"@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== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-dynamic-import@^7.8.0": - 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-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: - "@babel/helper-plugin-utils" "^7.8.0" + "@babel/helper-plugin-utils" "^7.14.5" -"@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-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.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@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.27.1" + +"@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== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 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== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 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== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== +"@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-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoped-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== +"@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-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" - integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== +"@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.10.4" - lodash "^4.17.13" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-classes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== +"@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-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@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-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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-keys@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-exponentiation-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-for-of@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-modules-amd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" - integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - 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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" - integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== +"@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.10.4" - "@babel/helper-module-transforms" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-umd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== +"@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.10.4" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-object-super@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== +"@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.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-parameters@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" - integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== +"@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-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== +"@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.10.4" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== +"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-shorthand-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" - integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== +"@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.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== +"@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.10.4" - "@babel/helper-regex" "^7.10.4" + "@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" - integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== +"@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-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== +"@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.10.4" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-unicode-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== +"@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.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/preset-env@^7.7.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272" - integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA== +"@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.11.0" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-export-namespace-from" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.11.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.11.0" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.11.5" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@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-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@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: + "@babel/helper-plugin-utils" "^7.27.1" + +"@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/helper-plugin-utils" "^7.27.1" + +"@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/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/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== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@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" +"@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.13" -"@babel/traverse@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" - integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - 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" - lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.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.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== +"@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.10.4" - lodash "^4.17.19" + "@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": @@ -958,300 +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.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" - integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== +"@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 "^12.1.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" - lodash "^4.17.19" - 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.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.3.0.tgz#ed04063efb280c88ba87388b6f16427c0a85c856" - integrity sha512-/5Pn6sJev0nPUcAdpJHMVIsA8sKizL2ZkcKPE5+dJrCccks7tcM7c9wbgHudBJbxXLoTbqsHkG1Dofoem4F09w== +"@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.3.0" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.3.0" - jest-util "^26.3.0" + chalk "^4.1.2" + jest-message-util "30.0.2" + jest-util "30.0.2" slash "^3.0.0" -"@jest/core@^26.4.2": - version "26.4.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.4.2.tgz#85d0894f31ac29b5bab07aa86806d03dd3d33edc" - integrity sha512-sDva7YkeNprxJfepOctzS8cAk9TOekldh+5FhVuXS40+94SHbiicRO1VV2tSoRtgIo+POs/Cdyf8p76vPTd6dg== - dependencies: - "@jest/console" "^26.3.0" - "@jest/reporters" "^26.4.1" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" +"@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.3.0" - jest-config "^26.4.2" - jest-haste-map "^26.3.0" - jest-message-util "^26.3.0" - jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-resolve-dependencies "^26.4.2" - jest-runner "^26.4.2" - jest-runtime "^26.4.2" - jest-snapshot "^26.4.2" - jest-util "^26.3.0" - jest-validate "^26.4.2" - jest-watcher "^26.3.0" - 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.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.3.0.tgz#e6953ab711ae3e44754a025f838bde1a7fd236a0" - integrity sha512-EW+MFEo0DGHahf83RAaiqQx688qpXgl99wdb8Fy67ybyzHwR1a58LHcO376xQJHfmoXTu89M09dH3J509cx2AA== +"@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.3.0" - "@jest/types" "^26.3.0" + "@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.3.0" + jest-mock "30.0.2" + jest-util "30.0.2" -"@jest/fake-timers@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.3.0.tgz#f515d4667a6770f60ae06ae050f4e001126c666a" - integrity sha512-ZL9ytUiRwVP8ujfRepffokBvD2KbxbqMhrXSBhSdAhISCw3gOkuntisiSFv+A6HN0n0fF4cxzICEKZENLmW+1A== +"@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.3.0" - "@sinonjs/fake-timers" "^6.0.1" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - jest-message-util "^26.3.0" - jest-mock "^26.3.0" - jest-util "^26.3.0" + 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.4.2": - version "26.4.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.4.2.tgz#73c2a862ac691d998889a241beb3dc9cada40d4a" - integrity sha512-Ot5ouAlehhHLRhc+sDz2/9bmNv9p5ZWZ9LE1pXGGTCXBasmi5jnYjlgYcYt03FBwLmZXCZ7GrL29c33/XRQiow== +"@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.3.0" - "@jest/types" "^26.3.0" - expect "^26.4.2" + expect "30.0.3" + jest-snapshot "30.0.3" -"@jest/reporters@^26.4.1": - version "26.4.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.4.1.tgz#3b4d6faf28650f3965f8b97bc3d114077fb71795" - integrity sha512-aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ== +"@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.3.0" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" - 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.3.0" - jest-resolve "^26.4.0" - jest-util "^26.3.0" - jest-worker "^26.3.0" + 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 "^5.0.1" - optionalDependencies: - node-notifier "^8.0.0" + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" -"@jest/source-map@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.3.0.tgz#0e646e519883c14c551f7b5ae4ff5f1bfe4fc3d9" - integrity sha512-hWX5IHmMDWe1kyrKl7IhFwqOuAreIwHhbe44+XH2ZRHjrKIh0LO5eLQ/vxHFeAfRwJapmxuqlGAEYLadDq6ZGQ== +"@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.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.3.0.tgz#46cde01fa10c0aaeb7431bf71e4a20d885bc7fdb" - integrity sha512-a8rbLqzW/q7HWheFVMtghXV79Xk+GWwOK1FrtimpI5n1la2SY0qHri3/b0/1F0Ve0/yJmV8pEhxDfVwiUBGtgg== - dependencies: - "@jest/console" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.4.2": - version "26.4.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.4.2.tgz#58a3760a61eec758a2ce6080201424580d97cbba" - integrity sha512-83DRD8N3M0tOhz9h0bn6Kl6dSp+US6DazuVF8J9m21WAp5x7CqSMaNycMP0aemC/SH/pDQQddbsfHRTBXVUgog== - dependencies: - "@jest/test-result" "^26.3.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.3.0" - jest-runner "^26.4.2" - jest-runtime "^26.4.2" - -"@jest/transform@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.3.0.tgz#c393e0e01459da8a8bfc6d2a7c2ece1a13e8ba55" - integrity sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.3.0" - 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.3.0" - jest-regex-util "^26.0.0" - jest-util "^26.3.0" - 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" - source-map "^0.6.1" - write-file-atomic "^3.0.0" -"@jest/types@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" - integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ== +"@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" + write-file-atomic "^5.0.1" + +"@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" -"@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== +"@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: - type-detect "4.0.8" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" -"@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== +"@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: - "@sinonjs/commons" "^1.7.0" + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" -"@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== +"@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== -"@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== +"@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: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" + "@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== -"@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== +"@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: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@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.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", "@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.5" + fastq "^1.6.0" + +"@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: + "@rollup/pluginutils" "^5.1.0" + +"@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: + "@rollup/pluginutils" "^5.0.1" + "@types/resolve" "1.20.2" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.22.1" + +"@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" + +"@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: + serialize-javascript "^6.0.1" + smob "^1.0.0" + terser "^5.17.4" + +"@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: + "@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/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" @@ -1260,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.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== +"@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" @@ -1278,150 +1932,233 @@ 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== - -"@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@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@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + 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/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== - -"@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== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/experimental-utils@^2.5.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.25.0.tgz#13691c4fe368bd377b1e5b1e4ad660b220bf7714" - integrity sha512-0IZ4ZR5QkFYbaJk+8eJ2kYeA+1tzOE1sBjbwwtSV85oNWYUBep+EyhlZ7DLUCyhMUGuJpcCCFL0fDtYAP1zMZw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.25.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/typescript-estree@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.25.0.tgz#b790497556734b7476fa7dd3fa539955a5c79e2c" - integrity sha512-VUksmx5lDxSi6GfmwSK7SSoIKSw9anukWWNitQPqt58LuYrKalzsgeuignbqnB+rK/xxGlSsCy8lYnwFfB6YJg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^6.3.0" - tsutils "^3.17.1" +"@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== -abab@^2.0.3: +"@types/stack-utils@^2.0.3": version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -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== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -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== - -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== +"@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== -agent-base@5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" - integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== +"@types/yargs-parser@*": + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== -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== +"@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: - debug "4" + "@types/yargs-parser" "*" + +"@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" + +"@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: + "@typescript-eslint/types" "5.11.0" + eslint-visitor-keys "^3.0.0" + +"@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.10.2, 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" -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== +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: - type-fest "^0.11.0" + type-fest "^0.21.3" -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +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.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -1429,25 +2166,26 @@ ansi-styles@^3.2.0, 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" @@ -1459,181 +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.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== +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: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" -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-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.prototype.flat@^1.2.3: +array.prototype.findlastindex@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + 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" -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.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: - 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= - -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= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + 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= +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" -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.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463" - integrity sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g== - dependencies: - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.3.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" +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" + +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.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz#bdd0011df0d3d513e5e95f76bd53b51147aca2dd" - integrity sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA== +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-preset-current-node-syntax@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" - integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== +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.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.4" + semver "^6.3.1" + +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.6.3" + core-js-compat "^3.40.0" + +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.6.4" + +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-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" -babel-preset-jest@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz#ed6344506225c065fd8a0b53e191986f74890776" - integrity sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw== +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.2.0" - babel-preset-current-node-syntax "^0.1.3" + 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" @@ -1643,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" @@ -1666,20 +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.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.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" -browserslist@^4.12.0, browserslist@^4.8.3: - version "4.12.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== +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.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" + 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" @@ -1689,63 +2423,70 @@ 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== + 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" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -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== +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" -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" - -callsites@^3.0.0: +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.30001043: - version "1.0.30001048" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e" - integrity sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg== +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== @@ -1754,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" @@ -1775,58 +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== +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.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.7.2.tgz#998e68c8c1ef4b55cfcf11cd456866d35e13d693" - integrity sha512-fmCjAkTese29DUX3GMIi4EaKGflHa4K51EoMc29g8fBHawdk/+KEq5CWOeXLdd9+AT7o1wO4DIpp/Z1KCqCz1g== - dependencies: - argv "0.0.2" - ignore-walk "3.0.3" - js-yaml "3.13.1" - teeny-request "6.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" @@ -1845,118 +2554,55 @@ 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== -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.2: - version "1.2.8" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" - integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== - 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= -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - -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.6.2: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" - integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== - dependencies: - browserslist "^4.8.3" - 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.2" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9" - integrity sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw== + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" -cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -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.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" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1965,129 +2611,115 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: 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== +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: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -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== +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: - cssom "~0.3.6" + "@asamuzakjp/css-color" "^3.2.0" + rrweb-cssom "^0.8.0" -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= +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: - assert-plus "^1.0.0" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" -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== +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: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + ms "2.1.2" -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== +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -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.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.0.0" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + ms "^2.1.3" -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== - -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.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2" - integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" - isarray "^1.0.0" doctrine@^3.0.0: version "3.0.0" @@ -2096,78 +2728,113 @@ 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" - -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" +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== -electron-to-chromium@^1.3.413: - version "1.3.424" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.424.tgz#29bf66325521209180829e8c8b5164deaf0f86b8" - integrity sha512-h8apsMr1RK3OusH8iwxlJ7TZkpgWfg2HvTXZ3o1w9R/SeRKX0hEGMQmRyTWijZAloHfmfwTLaPurVqKWdFC5dw== +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== -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== +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== -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +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.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== +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: + 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" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.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.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" + 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" @@ -2178,345 +2845,303 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +escalade@^3.1.1: + version "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" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -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@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" - integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== - dependencies: - get-stdin "^6.0.0" - -eslint-import-resolver-node@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" - integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== - dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" - -eslint-plugin-import@2.22.0: - version "2.22.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" - integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== - dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.3" - eslint-module-utils "^2.6.0" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" - -eslint-plugin-jest@23.20.0: - version "23.20.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.20.0.tgz#e1d69c75f639e99d836642453c4e75ed22da4099" - integrity sha512-+6BGQt85OREevBDWCvhqj1yYA4+BFK4XnRZSGJionuEYmcglMZYLNNBBemwzbqUAckURaHdJSBcjHPyrtypZOw== - dependencies: - "@typescript-eslint/experimental-utils" "^2.5.0" +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +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.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 "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +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" + +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.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.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.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== +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.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" - integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== +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== dependencies: - esrecurse "^4.1.0" + 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@7.8.1: - version "7.8.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.8.1.tgz#e59de3573fb6a5be8ff526c791571646d124a8fa" - integrity sha512-/2rX2pfhyUG0y+A123d0ccXtMm7DV7sH1m3lk9nk2DZ2LReq39FXHueR9xZwshE5MdfSf0xunSaMWRqyIA6M1w== +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: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" - ajv "^6.10.0" + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.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" - eslint-scope "^5.1.0" - eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" - espree "^7.3.0" - esquery "^1.2.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + 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 "^4.17.19" - minimatch "^3.0.4" + lodash.merge "^4.6.2" + 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 "^5.2.3" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== +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.2.0" - 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.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== +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" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.1.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.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== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - 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" - 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.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.2.tgz#36db120928a5a2d7d9736643032de32f24e1b2a1" - integrity sha512-IlJ3X52Z0lDHm7gjEp+m76uX46ldH5VpqmU0006vqDju/285twh7zaWMRhs67VpQhBwjjMchk+p5aA0VkERCAA== - dependencies: - "@jest/types" "^26.3.0" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.4.2" - jest-message-util "^26.3.0" - 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" - -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= - 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= +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.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.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== +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== + +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: + "@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" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-json-stable-stringify@^2.0.0: +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.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +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= -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== +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: - bser "2.1.1" + reusify "^1.0.4" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +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: - flat-cache "^2.0.1" + bser "2.1.1" -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= +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" @@ -2525,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" @@ -2540,123 +3165,167 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +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: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + locate-path "^6.0.0" + path-exists "^4.0.0" -flatted@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" - integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" -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= +flatted@^3.1.0: + 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.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +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-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== +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.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== + +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== -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-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.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== +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, glob@^7.1.6: - 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" @@ -2665,178 +3334,183 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: 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@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== +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.8.1" + type-fest "^0.20.2" -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== +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" -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== +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.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" -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: - 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== - -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: +has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" + get-intrinsic "^1.1.1" -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-proto@^1.0.1: + version "1.0.1" + 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-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.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" - integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== +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 "5" + 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" + safer-buffer ">= 2.1.2 < 3.0.0" -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== +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" @@ -2849,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" @@ -2859,271 +3533,240 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== +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: - loose-envify "^1.0.0" - -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= + 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" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -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.4, is-callable@^1.1.5: - 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-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== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: - ci-info "^2.0.0" + has-bigints "^1.0.1" -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-boolean-object@^1.1.0: + 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: - kind-of "^3.0.2" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -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== - dependencies: - kind-of "^6.0.0" +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-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-callable@^1.1.4: + 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-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== +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: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" + hasown "^2.0.2" -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== +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: - 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== + hasown "^2.0.0" -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== +is-date-object@^1.0.1: + 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" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "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-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= +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.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.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +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: - has "^1.0.3" + call-bind "^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== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -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== +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-tostringtag "^1.0.0" -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-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.1" + 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, 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" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -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= - -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: - 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-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-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" @@ -3134,573 +3777,539 @@ 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.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.3.0.tgz#68fb2a7eb125f50839dab1f5a17db3607fe195b1" - integrity sha512-1C4R4nijgPltX6fugKxM4oQ18zimS7LqQ+zTTY8lMCMFPrxqBFb7KJH0Z2fRQJvw2Slbaipsqq7s1mgX5Iot+g== - dependencies: - "@jest/types" "^26.3.0" - execa "^4.0.0" - throat "^5.0.0" - -jest-cli@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.4.2.tgz#24afc6e4dfc25cde4c7ec4226fb7db5f157c21da" - integrity sha512-zb+lGd/SfrPvoRSC/0LWdaWCnscXc1mGYW//NP4/tmBvRPT3VntZ2jtKUONsRi59zc5JqmsSajA9ewJKFYp8Cw== - dependencies: - "@jest/core" "^26.4.2" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" - 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.4.2" - jest-util "^26.3.0" - jest-validate "^26.4.2" - prompts "^2.0.1" - yargs "^15.3.1" - -jest-config@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.4.2.tgz#da0cbb7dc2c131ffe831f0f7f2a36256e6086558" - integrity sha512-QBf7YGLuToiM8PmTnJEdRxyYy3mHWLh24LJZKVdXZ2PNdizSe1B/E8bVm+HYcjbEzGuVXDv/di+EzdO/6Gq80A== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.4.2" - "@jest/types" "^26.3.0" - babel-jest "^26.3.0" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.3.0" - jest-environment-node "^26.3.0" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.4.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-util "^26.3.0" - jest-validate "^26.4.2" - micromatch "^4.0.2" - pretty-format "^26.4.2" - -jest-diff@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.4.2.tgz#a1b7b303bcc534aabdb3bd4a7caf594ac059f5aa" - integrity sha512-6T1XQY8U28WH0Z5rGpQ+VqZSZz8EN8rZcBtfvXaOkbwxIEeRre6qnuZQlbY1AJ4MKDxQF8EkrCvK+hL/VkyYLQ== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.3.0" - jest-get-type "^26.3.0" - pretty-format "^26.4.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.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.4.2.tgz#bb14f7f4304f2bb2e2b81f783f989449b8b6ffae" - integrity sha512-p15rt8r8cUcRY0Mvo1fpkOGYm7iI8S6ySxgIdfh3oOIv+gHwrHTy5VWCGOecWUhDsit4Nz8avJWdT07WLpbwDA== +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/types" "^26.3.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.3.0" - pretty-format "^26.4.2" - -jest-environment-jsdom@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.3.0.tgz#3b749ba0f3a78e92ba2c9ce519e16e5dd515220c" - integrity sha512-zra8He2btIMJkAzvLaiZ9QwEPGEetbxqmjEBQwhH3CA+Hhhu0jSiEJxnJMbX28TGUvPLxBt/zyaTLrOPF4yMJA== - dependencies: - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - jest-mock "^26.3.0" - jest-util "^26.3.0" - jsdom "^16.2.2" - -jest-environment-node@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.3.0.tgz#56c6cfb506d1597f94ee8d717072bda7228df849" - integrity sha512-c9BvYoo+FGcMj5FunbBgtBnbR5qk3uky8PKyRVpSfe2/8+LrNQMiXX53z6q2kY+j15SkjQCOSL/6LHnCPLVHNw== - dependencies: - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - jest-mock "^26.3.0" - jest-util "^26.3.0" - -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.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.3.0.tgz#c51a3b40100d53ab777bfdad382d2e7a00e5c726" - integrity sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA== +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.3.0" - "@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.3.0" - jest-util "^26.3.0" - jest-worker "^26.3.0" - 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.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz#18a9d5bec30904267ac5e9797570932aec1e2257" - integrity sha512-z7H4EpCldHN1J8fNgsja58QftxBSL+JcwZmaXIvV9WKIM+x49F4GLHu/+BQh2kzRKHAgaN/E82od+8rTOBPyPA== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.3.0" - "@jest/source-map" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" + "@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.4.2" - is-generator-fn "^2.0.0" - jest-each "^26.4.2" - jest-matcher-utils "^26.4.2" - jest-message-util "^26.3.0" - jest-runtime "^26.4.2" - jest-snapshot "^26.4.2" - jest-util "^26.3.0" - pretty-format "^26.4.2" - throat "^5.0.0" - -jest-leak-detector@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz#c73e2fa8757bf905f6f66fb9e0070b70fa0f573f" - integrity sha512-akzGcxwxtE+9ZJZRW+M2o+nTNnmQZxrHJxX/HjgDaU5+PLmY1qnQPnMjgADPGCRPhB+Yawe1iij0REe+k/aHoA== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.4.2" - -jest-matcher-utils@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.4.2.tgz#fa81f3693f7cb67e5fc1537317525ef3b85f4b06" - integrity sha512-KcbNqWfWUG24R7tu9WcAOKKdiXiXCbMvQYT6iodZ9k1f7065k0keUOW6XpJMMvah+hTfqkhJhRXmA3r3zMAg0Q== - dependencies: - chalk "^4.0.0" - jest-diff "^26.4.2" - jest-get-type "^26.3.0" - pretty-format "^26.4.2" - -jest-message-util@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.3.0.tgz#3bdb538af27bb417f2d4d16557606fd082d5841a" - integrity sha512-xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.3.0" - "@types/stack-utils" "^1.0.1" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.3.0.tgz#ee62207c3c5ebe5f35b760e1267fee19a1cfdeba" - integrity sha512-PeaRrg8Dc6mnS35gOo/CbZovoDPKAeB1FICZiuagAgGvbWdNNyjQjkOaGUa/3N3JtpQ/Mh9P4A2D4Fv51NnP8Q== - dependencies: - "@jest/types" "^26.3.0" - "@types/node" "*" - -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.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.2.tgz#739bdb027c14befb2fe5aabbd03f7bab355f1dc5" - integrity sha512-ADHaOwqEcVc71uTfySzSowA/RdxUpCxhxa2FNLiin9vWLB1uLPad3we+JSSROq5+SrL9iYPdZZF8bdKM7XABTQ== - dependencies: - "@jest/types" "^26.3.0" - jest-regex-util "^26.0.0" - jest-snapshot "^26.4.2" - -jest-resolve@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.4.0.tgz#6dc0af7fb93e65b73fec0368ca2b76f3eb59a6d7" - integrity sha512-bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg== - dependencies: - "@jest/types" "^26.3.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.3.0" - read-pkg-up "^7.0.1" - resolve "^1.17.0" + 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" - -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== - dependencies: - chalk "^3.0.0" - cosmiconfig "^6.0.0" - create-jest-runner "^0.6.0" - -jest-runner@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.4.2.tgz#c3ec5482c8edd31973bd3935df5a449a45b5b853" - integrity sha512-FgjDHeVknDjw1gRAYaoUoShe1K3XUuFMkIaXbdhEys+1O4bEJS8Avmn4lBwoMfL8O5oFTdWYKcf3tEJyyYyk8g== - dependencies: - "@jest/console" "^26.3.0" - "@jest/environment" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.4.2" - jest-docblock "^26.0.0" - jest-haste-map "^26.3.0" - jest-leak-detector "^26.4.2" - jest-message-util "^26.3.0" - jest-resolve "^26.4.0" - jest-runtime "^26.4.2" - jest-util "^26.3.0" - jest-worker "^26.3.0" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.4.2.tgz#94ce17890353c92e4206580c73a8f0c024c33c42" - integrity sha512-4Pe7Uk5a80FnbHwSOk7ojNCJvz3Ks2CNQWT5Z7MJo4tX0jb3V/LThKvD9tKPNVNyeMH98J/nzGlcwc00R2dSHQ== - dependencies: - "@jest/console" "^26.3.0" - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/globals" "^26.4.2" - "@jest/source-map" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.4.2" - jest-haste-map "^26.3.0" - jest-message-util "^26.3.0" - jest-mock "^26.3.0" - jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-snapshot "^26.4.2" - jest-util "^26.3.0" - jest-validate "^26.4.2" + 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" - strip-bom "^4.0.0" - yargs "^15.3.1" + strip-json-comments "^3.1.1" -jest-serializer@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.3.0.tgz#1c9d5e1b74d6e5f7e7f9627080fa205d976c33ef" - integrity sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow== - dependencies: +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" "*" - graceful-fs "^4.2.4" - -jest-snapshot-serializer-raw@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-snapshot-serializer-raw/-/jest-snapshot-serializer-raw-1.1.0.tgz#1d7f09c02f3dbbc3ae70b5b7598fb2f45e37d6c8" - integrity sha512-OL3bXRCnSn7Kur3YTGYj+A3Hwh2eyb5QL5VLQ9OSsPBOva7r3sCB0Jf1rOT/KN3ypzH42hrkDz96lpbiMo+AlQ== + jsdom "^26.1.0" -jest-snapshot@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.4.2.tgz#87d3ac2f2bd87ea8003602fbebd8fcb9e94104f6" - integrity sha512-N6Uub8FccKlf5SBFnL2Ri/xofbaA68Cc3MGjP/NuwgnsvWh+9hLIR/DhrxbSiKXMY9vUW5dI6EW1eHaDHqe9sg== +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: - "@babel/types" "^7.0.0" - "@jest/types" "^26.3.0" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.4.2" - graceful-fs "^4.2.4" - jest-diff "^26.4.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.3.0" - jest-matcher-utils "^26.4.2" - jest-message-util "^26.3.0" - jest-resolve "^26.4.0" - natural-compare "^1.4.0" - pretty-format "^26.4.2" - semver "^7.3.2" + "@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-util@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e" - integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw== +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/types" "^26.3.0" + "@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" + 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" + stack-utils "^2.0.6" -jest-validate@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.4.2.tgz#e871b0dfe97747133014dcf6445ee8018398f39c" - integrity sha512-blft+xDX7XXghfhY0mrsBCYhX365n8K5wNDC4XAcNKqqjEzsRUSXP44m6PL0QJEW2crxQFLLztVnJ4j7oPlQrQ== +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" "^26.3.0" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.4.2" + "@jest/types" "30.0.1" + "@types/node" "*" + jest-util "30.0.2" -jest-watcher@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.3.0.tgz#f8ef3068ddb8af160ef868400318dc4a898eed08" - integrity sha512-XnLdKmyCGJ3VoF6G/p5ohbJ04q/vv5aH9ENI+i6BL0uu9WWB6Z7Z2lhQQk0d2AVZcRGp1yW+/TsoToMhBFPRdQ== - dependencies: - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" +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" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.3.0" - string-length "^4.0.1" + 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" "*" + 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@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.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@^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== +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: - merge-stream "^2.0.0" - supports-color "^7.0.0" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" + "@types/node" "*" + 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.3.0: - 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-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.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.4.2.tgz#7e8bfb348ec33f5459adeaffc1a25d5752d9d312" - integrity sha512-LLCjPrUh98Ik8CzW8LLVnSCfLaiY+wbK53U7VxnFSX7Q+kWC4noVeDvGWIFw0Amfq1lq2VfGm7YHWSLBV62MJw== +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.4.2" - import-local "^3.0.2" - jest-cli "^26.4.2" + "@jest/core" "30.0.3" + "@jest/types" "30.0.1" + import-local "^3.2.0" + jest-cli "30.0.3" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.13.1, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== +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== dependencies: 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.2.2: - version "16.2.2" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b" - integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg== - 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.0.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@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== + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -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== - -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" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -3709,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.10.0" - resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-7.10.0.tgz#c2098dfe6c5a4ab665fb78f13b190344e4cff1af" - integrity sha512-Uqt94P4iAznscZtccnNE1IBi105U+fmQKEUlDJv54JDdFZDInomkepEIRpZLOQcPyGdcNu3JO9Tvo5wpQVbfKw== - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.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" @@ -3752,401 +4335,283 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -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= +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@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" +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== -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" +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== -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== +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: - sourcemap-codec "^1.4.4" + yallist "^3.0.2" -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== +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - semver "^6.0.0" + yallist "^4.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= +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: - tmpl "1.0.x" + "@jridgewell/sourcemap-codec" "^1.5.0" -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== +make-dir@^3.0.0: + 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: - 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= + semver "^6.0.0" -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@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-6.1.0.tgz#846eca0bd4708a8f04b9c3f3cd769e194ae63c5c" - integrity sha512-RlbnLQgRHk5lwqTtpEkBTQ2ll/CG/iB+J4Hy2Wh97PjgZgXgWJWrFF+XXujh3UUVLvR4OOTgZzcWMMwnehlEUg== +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.0.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== -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== +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@^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.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.0.0.tgz#76044cfa8818bbf6999c5c9acadf2d3649b14b4b" - integrity sha512-PiVO95TKvhiwgSwg1IdLYlCTdul38yZxZMIcnDSFIBUm4BNZha2qpQ4GpJ++15bHoKDtrW2D69lMfFwdFYtNZQ== - -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== - -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@^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: - for-in "^1.0.2" - is-extendable "^1.0.1" + brace-expansion "^2.0.1" -mkdirp@^0.5.1: - version "0.5.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" - integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== +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: - minimist "^1.2.5" + 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.2.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - 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.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" - integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== - 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.53: - version "1.1.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" - integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== - -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.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-inspect@^1.9.0: + 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= +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: - isobject "^3.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" -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.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: - 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.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.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== +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: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" + call-bind "^1.0.2" + 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" @@ -4155,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" @@ -4172,37 +4644,29 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -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" @@ -4214,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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= +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 "^2.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@glayzzle/php-parser#5a0e2e1bf12517bd1c544c0f4e68482d0362a7b5: - version "3.0.1" - resolved "https://codeload.github.com/glayzzle/php-parser/tar.gz/5a0e2e1bf12517bd1c544c0f4e68482d0362a7b5" +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: - 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@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +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" @@ -4281,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" @@ -4310,237 +4750,128 @@ 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.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.2.tgz#d081d032b398e801e2012af2df1214ef75a81237" - integrity sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA== - dependencies: - "@jest/types" "^26.3.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -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" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -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== - -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" +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== -read-pkg-up@^7.0.1: +pure-rand@^7.0.0: 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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-7.0.1.tgz#6f53a5a9e3e4a47445822af96821ca509ed37566" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== -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== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" +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== -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== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + safe-buffer "^5.1.0" -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== +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== -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== +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: - "@babel/runtime" "^7.8.4" - private "^0.1.8" + regenerate "^1.4.2" -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== +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.2" + +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== + +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: + 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.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - 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-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" @@ -4554,222 +4885,142 @@ resolve-from@^4.0.0: integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: - version "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.17.0, resolve@^1.3.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -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== - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0: - 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" + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -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== +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: - slash "^3.0.0" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.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== +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: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -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" +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== -rollup-plugin-inject@^3.0.1: +rimraf@^3.0.2: 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== + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - estree-walker "^0.6.1" - magic-string "^0.25.3" - rollup-pluginutils "^2.8.1" + glob "^7.1.3" -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@^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" -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" +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== -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== +run-parallel@^1.1.9: + 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: - magic-string "^0.25.2" - rollup-pluginutils "^2.6.0" - -rollup-plugin-terser@^5.1.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" - integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^2.1.2" - terser "^4.6.2" - -rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.6.0, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^2.7.5: - version "2.26.11" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.11.tgz#4fc31de9c7b83d50916fc8395f8c3d24730cdaae" - integrity sha512-xyfxxhsE6hW57xhfL1I+ixH8l2bdoIMaAecdQiWF3N7IgJEMu99JG+daBiSZQjnBpzFxa0/xZm+3pbCdAQehHw== - optionalDependencies: - fsevents "~2.1.2" + queue-microtask "^1.2.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== +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.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-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.1: version "5.1.2" 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.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.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +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@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +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== -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= +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-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" @@ -4778,254 +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@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.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@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +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 "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.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.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: - 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.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== +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: - define-properties "^1.1.3" - function-bind "^1.1.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== +"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: - define-properties "^1.1.3" - function-bind "^1.1.1" + ansi-regex "^5.0.1" -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +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 "^4.1.0" + ansi-regex "^5.0.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@^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" @@ -5037,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" @@ -5064,70 +5206,59 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - 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@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -teeny-request@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-6.0.1.tgz#9b1f512cef152945827ba7e34f62523a4ce2c5b0" - integrity sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g== +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 "^4.0.0" - node-fetch "^2.2.0" - stream-events "^1.0.5" - uuid "^3.3.2" + "@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@^4.6.2: - version "4.6.7" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" - integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== +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" @@ -5138,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" @@ -5180,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.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + 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" @@ -5255,310 +5370,323 @@ 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.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== -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== +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: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" -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-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: - is-typedarray "^1.0.0" + 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" + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" -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== +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: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -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== +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== -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== +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: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -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= +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== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + 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== + +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: + 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: + escalade "^3.1.1" + picocolors "^1.0.0" + +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: - has-value "^0.3.1" - isobject "^3.0.0" + escalade "^3.2.0" + picocolors "^1.1.1" 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== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 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= - -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.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" - integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== - -v8-compile-cache@^2.0.3: - 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== - -v8-to-istanbul@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz#0608f5b49a481458625edb058488607f25498ba5" - integrity sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q== +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: + "@jridgewell/trace-mapping" "^0.3.12" "@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== +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: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.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= +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + xml-name-validator "^5.0.0" -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== +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: - browser-process-hrtime "^1.0.0" + makeerror "1.0.12" -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== - dependencies: - xml-name-validator "^3.0.0" +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== -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= +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: - makeerror "1.0.x" + iconv-lite "0.6.3" -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== +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-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== +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: - iconv-lite "0.4.24" - -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== + tr46 "^5.1.0" + webidl-conversions "^7.0.0" -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== +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^5.0.0" - -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= + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" -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" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" + signal-exit "^4.0.1" -ws@^7.2.3: - version "7.3.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" - integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== +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.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -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== +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== -yargs-parser@^18.1.1: - version "18.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.1.tgz#bf7407b915427fc760fcbbccc6c82b4f0ffcbd37" - integrity sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" +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== + +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@^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 "^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.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" -yarpm@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/yarpm/-/yarpm-0.2.1.tgz#5ff9bab743cdd3e77adfe1f6d6cf3396fa481e64" - integrity sha1-X/m6t0PN0+d63+H21s8zlvpIHmQ= - dependencies: - command-exists "^1.2.2" - cross-spawn "^5.1.0" +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==