diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 57095c057..000000000 --- a/.appveyor.yml +++ /dev/null @@ -1,27 +0,0 @@ -# https://www.appveyor.com/docs/appveyor-yml - -environment: - matrix: - - nodejs_version: 10 - -clone_depth: 10 - -version: "{build}" -build: off -deploy: off - -cache: - - node_modules -> appveyor.yml, package.json, yarn.lock - - "%LOCALAPPDATA%/Yarn -> appveyor.yml, package.json, yarn.lock" - -install: - - ps: Install-Product node $env:nodejs_version - - cmd: npm -v - - cmd: node -v - - cmd: npm install -g yarn - - cmd: yarn --version - - cmd: yarn - -test_script: - - cmd: set AST_COMPARE=1 - - cmd: yarn test 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 new file mode 100644 index 000000000..7a644cbad --- /dev/null +++ b/.github/workflows/nodejs.yml @@ -0,0 +1,54 @@ +name: Node CI + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + 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, windows-latest] + node-version: [18.x, 20.x, 22.x, 24.x] + + env: + ENABLE_COVERAGE: true + AST_COMPARE: true + + steps: + - 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/.travis.yml b/.travis.yml deleted file mode 100644 index 1597104fd..000000000 --- a/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- -language: node_js -node_js: - - 6 - - 8 - - 10 - - 11 -cache: - yarn: true - directories: - - node_modules -install: - # TODO: Temporary solution after resolve https://github.com/salesforce/tough-cookie/issues/140 - - yarn install --ignore-engines -script: - - AST_COMPARE=1 yarn test - - yarn codecov diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dcb1db0da..9122ac01b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,17 +5,49 @@ To get up and running, install the dependencies and run the tests: ```bash yarn yarn test -``` -Run `yarn prettier path/to/file.php` to format a single file. +# format a single file +yarn prettier path/to/file.php` + +# run a single test +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. -* If you would like to debug prettier locally, you can either debug it in node or the browser. The easiest way to debug it in the browser is to run the interactive `docs` REPL locally. The easiest way to debug it in node, is to create a local test file and run it in an editor like VS Code. +- 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. If you can, take look at [commands.md](https://github.com/prettier/prettier/blob/master/commands.md) and check out [Wadler's paper](http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf) to understand how Prettier works. + +## Debugging + +### VScode + +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" +} +``` + +Afterwards, paste some PHP code into `test.php`, add a breakpoint, and start the debugger. + +### Browser + +``` +node --inspect-brk node_modules/.bin/jest --runInBand tests/{folder of your choice}/` +``` + +Details about debugging in the Browser can be found in the [Jest troubleshooting docs](https://jestjs.io/docs/en/troubleshooting). diff --git a/README.md b/README.md index 0261e25db..aacfb96c0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -

- :construction: Work in Progress! :construction: -

-
Prettier @@ -12,64 +8,71 @@

Prettier PHP Plugin

- - Travis - - - AppVeyor Build Status + + CI Status npm version - Codecov Coverage Status + Coverage Status - + code style: prettier - - Gitter - - - Follow+Prettier+on+Twitter + + Follow Prettier on X

-## WORK IN PROGRESS - -Please note that this plugin is currently in alpha stage and still under active development. We encourage everyone to try it and give feedback, but we don't recommend it for production use yet. - ## Intro Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary. 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. + +If you want to use the plugin in production, we recommend limiting its scope to pure PHP files. + ### Input ```php +"code","with"=>"inconsistent","formatting"=>"is", "hard" => "to", "maintain"=>true)); +}, array("complex"=>"code","with"=> + function() {return "inconsistent";} +,"formatting"=>"is", "hard" => "to", "maintain"=>true)); ``` ### Output ```php + "code", - "with" => "inconsistent", + "with" => function () { + return "inconsistent"; + }, "formatting" => "is", "hard" => "to", - "maintain" => true - ) + "maintain" => true, + ] ); ``` @@ -83,7 +86,7 @@ yarn: ```bash yarn add --dev prettier @prettier/plugin-php -# or globally +# or globally (pending https://github.com/prettier/prettier/issues/15141) yarn global add prettier @prettier/plugin-php ``` @@ -91,13 +94,24 @@ npm: ```bash npm install --save-dev prettier @prettier/plugin-php -# or globally +# or globally (pending https://github.com/prettier/prettier/issues/15141) npm install --global prettier @prettier/plugin-php ``` +### Activate the plugin + +Create or modify your [prettier configuration file](https://prettier.io/docs/en/configuration) to activate the plugin: + +```json +{ + "plugins": ["@prettier/plugin-php"] +} +``` + ## Use ### With Node.js + If you installed prettier as a local dependency, you can add prettier as a script in your `package.json`, ```json @@ -123,6 +137,7 @@ prettier path/to/file.php --write ``` ### In the Browser + This package exposes a `standalone.js` that can be used alongside Prettier's own `standalone.js` to make the PHP plugin work in browsers without a compile step. First, grab both standalone scripts from an npm CDN like [unpkg](https://unpkg.com/): @@ -135,58 +150,132 @@ First, grab both standalone scripts from an npm CDN like [unpkg](https://unpkg.c Then use Prettier with PHP, just like this: ```js -prettier.format(YOUR_CODE, { +await prettier.format(YOUR_CODE, { plugins: prettierPlugins, - parser: "php" + parser: "php", }); ``` See this code in action [in this basic demo](https://jsbin.com/butoruw/edit?html,output). ### With Bundlers + Bundlers like webpack, Rollup or browserify automatically recognize how to handle the PHP plugin. Remember that even when using a bundler, you still have to use the standalone builds: ```js import prettier from "prettier/standalone"; -import phpPlugin from "@prettier/plugin-php/standalone"; +import * as prettierPluginPhp from "@prettier/plugin-php/standalone"; -prettier.format(YOUR_CODE, { - plugins: [phpPlugin], - parser: "php" +await prettier.format(YOUR_CODE, { + plugins: [prettierPluginPhp], + parser: "php", }); ``` ## Configuration -Prettier for PHP supports the following options: +Prettier for PHP supports the following options. We recommend that all users set the `phpVersion` option. + +| 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`. -| Name | Default | Description | -| --------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `printWidth` | `80` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#print-width)) | -| `tabWidth` | `4` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tab-width)) | -| `useTabs` | `false` | Same as in Prettier ([see prettier docs](https://prettier.io/docs/en/options.html#tabs)) | -| `singleQuote` | `false` | If set to `"true"`, strings that use double quotes but do not rely on the features they add, will be reformatted. Example: `"foo" -> 'foo'`, `"foo $bar" -> "foo $bar"`. | -| `trailingCommaPHP` | `"none"` | If set to `"all"`, trailing commas will be added wherever possible.
If set to `"php7.2"`, trailing commas will be added to multiline arrays, lists and uses.
If set to `"php5"`, trailing commas will be added to multiline arrays and lists.
if set to `"none"`, no trailing commas. | -| `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)) | +**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 + +A comment `// prettier-ignore` will exclude the next node in the abstract syntax tree from formatting. + +For example: + +```php +matrix( + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 +); + +// prettier-ignore +matrix( + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 +); +``` + +will be transformed to + +```php +matrix(1, 0, 0, 0, 1, 0, 0, 0, 1); + +// prettier-ignore +matrix( + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 +) +``` ## 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 plugin `prettier-vscode` doesn't support plugins out of the box yet, see [this issue](https://github.com/prettier/prettier-vscode/issues/395). You can use the following workaround to enable PHP support anyway: +```json + "prettier.documentSelectors": [ + "**/*.{js,jsx,ts,tsx,vue,html,css,scss,less,json,md,mdx,graphql,yaml,yml,php}" + ] +``` -```bash -cd ~/.vscode/extensions/esbenp.prettier-vscode-1.9.0/ -npm install @prettier/plugin-php +You may also need to declare php as the parser in your prettier config file: + +```json +{ + "parser": "php", + "plugins": ["@prettier/plugin-php"] +} ``` -After restarting VScode the plugin should work as expected. +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 @@ -194,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 @@ -225,10 +318,10 @@ command PrettierPhp call PrettierPhpCursor() autocmd BufwritePre *.php PrettierPhp ``` - ## Integration for other tools ### PHP-CS-Fixer + See `docs/recipes/php-cs-fixer` for integration help, code can also be found in https://gist.github.com/Billz95/9d5fad3af728b88540fa831b73261733 ## Contributing diff --git a/build/rollup.config.js b/build/rollup.config.js deleted file mode 100644 index a0dde7bf7..000000000 --- a/build/rollup.config.js +++ /dev/null @@ -1,59 +0,0 @@ -import { resolve } from "path"; - -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"); - -export default { - input: resolve(SRC_DIR, "index.js"), - output: { - file: "standalone.js", - format: "umd", - name: "prettierPlugins.php", - exports: "named", - globals: { - prettier: "prettier" - }, - paths: { - prettier: "prettier/standalone" - } - }, - external: ["prettier"], - plugins: [ - nodeResolve(), - commonjs(), - alias({ - assert: resolve(BUILD_DIR, "shims/assert.js") - }), - inject({ - Buffer: resolve(BUILD_DIR, "shims/buffer.js") - }), - replace({ - "process.arch": JSON.stringify("x32") - }), - json(), - babel({ - babelrc: false, - plugins: [], - compact: false, - presets: [ - [ - require.resolve("@babel/preset-env"), - { - targets: { browsers: [">0.25%", "not ie 11", "not op_mini all"] }, - modules: false - } - ] - ] - }), - terser() - ] -}; diff --git a/build/rollup.config.mjs b/build/rollup.config.mjs new file mode 100644 index 000000000..8fa108523 --- /dev/null +++ b/build/rollup.config.mjs @@ -0,0 +1,63 @@ +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"; + +const getPath = (file) => url.fileURLToPath(new URL(file, import.meta.url)); + +export default { + input: getPath("../src/index.mjs"), + output: { + file: "standalone.js", + format: "umd", + name: "prettierPlugins.php", + exports: "named", + globals: { + prettier: "prettier", + }, + paths: { + prettier: "prettier/standalone", + }, + }, + external: ["prettier"], + plugins: [ + nodeResolve({ + preferBuiltins: true, + }), + commonjs(), + alias({ + entries: [{ find: "assert", replacement: getPath("./shims/assert.mjs") }], + }), + inject({ + 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: [ + [ + "@babel/preset-env", + { + targets: { browsers: [">0.25%", "not ie 11", "not op_mini all"] }, + modules: false, + }, + ], + ], + }), + terser(), + ], +}; diff --git a/build/shims/assert.js b/build/shims/assert.js deleted file mode 100644 index b398fb701..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 1c4d29792..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/PrettierPHPFixer.php b/docs/recipes/php-cs-fixer/PrettierPHPFixer.php index 593596807..dcb2fe69c 100644 --- a/docs/recipes/php-cs-fixer/PrettierPHPFixer.php +++ b/docs/recipes/php-cs-fixer/PrettierPHPFixer.php @@ -58,37 +58,13 @@ public function supports(SplFileInfo $file) { } /** - * {@inheritdoc} - */ - private function applyFix(SplFileInfo $file, Tokens $tokens) { - $tmpFile = $this->getTmpFile($file); - exec("yarn exec -- prettier --write $tmpFile"); - - $content = file_get_contents($tmpFile); - $tokens->setCode($content); - - (new Filesystem())->remove($tmpFile); - } - - /** - * Create a Temp file with the same content as given file. - * - * @param SplFileInfo $file file to be copied - * - * @return string tmp file name + * @param SplFileInfo $file + * @param Tokens $tokens */ - private function getTmpFile(SplFileInfo $file): string { - $fileSys = new Filesystem(); - $tmpFolderPath = __DIR__.DIRECTORY_SEPARATOR.'tmp'; - $fileSys->mkdir($tmpFolderPath); - - $tmpFileName = str_replace( - array(DIRECTORY_SEPARATOR, ':'), - '_', - $file->getRealPath() - ); - $tmpFilePath = $tmpFolderPath.DIRECTORY_SEPARATOR.'__'.$tmpFileName; - $fileSys->copy($file->getRealPath(), $tmpFilePath, true); - return $tmpFilePath; + private function applyFix(SplFileInfo $file, Tokens $tokens): void + { + exec("yarn exec -- prettier $file", $prettierOutput); + $code = implode(PHP_EOL, $prettierOutput); + $tokens->setCode($code); } } diff --git a/docs/recipes/php-cs-fixer/README.md b/docs/recipes/php-cs-fixer/README.md index b44777b78..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, - For example, - ```diff - - exec("yarn exec -- prettier --write $tmpFile"); - + exec("yarn exec -- prettier --write --brace-style=1tbs $tmpFile"); - ``` - will allow you to change the `braceStyle` for this fixer +```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 f5719a428..000000000 --- a/jest.config.js +++ /dev/null @@ -1,44 +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 - } - }, - ...(process.env.SKIP_STANDALONE_TESTS === "true" - ? [] - : [ - { - 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 c12c045ad..bb2c4c42e 100644 --- a/package.json +++ b/package.json @@ -1,56 +1,86 @@ { "name": "@prettier/plugin-php", - "version": "0.11.2", + "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": "^6.3.0", - "mem": "^4.0.0", - "php-parser": "glayzzle/php-parser#71485979b688d12fb130d3e853fdc00348671e00" + "linguist-languages": "^8.0.0", + "php-parser": "^3.2.5" }, "devDependencies": { - "@babel/preset-env": "^7.3.1", - "codecov": "3.5.0", - "eslint": "5.15.1", - "eslint-config-prettier": "6.0.0", - "eslint-plugin-import": "2.17.2", - "eslint-plugin-jest": "22.14.1", - "eslint-plugin-prettier": "3.0.1", - "jest": "24.8.0", - "jest-runner-eslint": "0.7.3", - "jest-snapshot-serializer-raw": "^1.1.0", - "prettier": "^1.15.3", - "rollup": "^1.1.2", - "rollup-plugin-alias": "^1.5.1", - "rollup-plugin-babel": "^4.3.2", - "rollup-plugin-commonjs": "^9.2.0", - "rollup-plugin-inject": "^2.2.0", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^4.0.0", - "rollup-plugin-replace": "^2.1.0", - "rollup-plugin-terser": "^4.0.4", - "strip-ansi": "^5.0.0" + "@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": "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" + "prettier": "^3.0.0" }, "scripts": { - "pretest": "npm run build-standalone", - "test": "jest", - "prepublishOnly": "npm run build-standalone", - "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 69% rename from src/clean.js rename to src/clean.mjs index 4556c6900..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,37 +24,23 @@ 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 (["array", "list"].includes(node.kind)) { + // TODO if options are available in this method, assign instead of delete + delete newObj.shortForm; + } + if (node.kind === "inline") { if (node.value.includes("___PSEUDO_INLINE_PLACEHOLDER___")) { return null; } - newObj.value = newObj.value.replace(/\r\n?|\n/g, ""); + newObj.value = newObj.value.replace(/\n/g, ""); } // continue ((2)); -> continue 2; @@ -63,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"]; @@ -72,7 +73,7 @@ function clean(node, newObj) { if (node.body && node.body.kind !== "block") { newObj.body = { kind: "block", - children: [newObj.body] + children: [newObj.body], }; } else { newObj.body = newObj.body ? newObj.body : null; @@ -81,7 +82,7 @@ function clean(node, newObj) { if (node.alternate && node.alternate.kind !== "block") { newObj.alternate = { kind: "block", - children: [newObj.alternate] + children: [newObj.alternate], }; } else { newObj.alternate = newObj.alternate ? newObj.alternate : null; @@ -97,13 +98,14 @@ 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); } - // @TODO: We need special node for `null` value to avoid ast compare problem - if (node.kind === "classreference" && node.name.toLowerCase() === "null") { - delete newObj.name; + if (node.kind === "noop") { + return null; } } -module.exports = clean; +clean.ignoredProperties = ignoredProperties; + +export default clean; diff --git a/src/comments.js b/src/comments.mjs similarity index 79% rename from src/comments.js rename to src/comments.mjs index 65f8054e1..828fc0162 100644 --- a/src/comments.js +++ b/src/comments.mjs @@ -1,26 +1,20 @@ -"use strict"; +import { util as prettierUtil, doc } from "prettier"; +import { isLookupNode } from "./util.mjs"; +import { locStart, locEnd } from "./loc.mjs"; const { addLeadingComment, addDanglingComment, addTrailingComment, + skipNewline, + hasNewline, + hasNewlineInRange, getNextNonSpaceNonCommentCharacterIndex, isNextLineEmpty, - skipNewline, isPreviousLineEmpty, - hasNewline, - hasNewlineInRange -} = require("prettier").util; -const { - concat, - join, - indent, - hardline, - cursor, - lineSuffix, - breakParent -} = require("prettier").doc.builders; -const { 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, @@ -69,7 +63,13 @@ function handleOwnLineComment(comment, text, options) { ) || handleTryComments(enclosingNode, followingNode, comment) || handleClassComments(enclosingNode, followingNode, comment) || - handleFunctionParameter(text, enclosingNode, comment, options) || + handleFunctionParameter( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || handleFunction(text, enclosingNode, followingNode, comment, options) || handleForComments(enclosingNode, precedingNode, followingNode, comment) || handleInlineComments( @@ -135,12 +135,17 @@ function handleEndOfLineComment(comment, text, options) { ) || handleTryComments(enclosingNode, followingNode, comment) || handleClassComments(enclosingNode, followingNode, comment) || - handleFunctionParameter(text, enclosingNode, comment, options) || + handleFunctionParameter( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || handleFunction(text, enclosingNode, followingNode, comment, options) || handleEntryComments(enclosingNode, comment) || handleCallComments(precedingNode, enclosingNode, comment) || - handlePropertyComments(enclosingNode, comment) || - handleVariableComments(enclosingNode, followingNode, comment) || + handleAssignComments(enclosingNode, followingNode, comment) || handleInlineComments( enclosingNode, precedingNode, @@ -185,7 +190,13 @@ function handleRemainingComment(comment, text, options) { handleCommentInEmptyParens(text, enclosingNode, comment, options) || handleClassComments(enclosingNode, followingNode, comment) || handleTraitUseComments(enclosingNode, followingNode, comment) || - handleFunctionParameter(text, enclosingNode, comment, options) || + handleFunctionParameter( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || handleFunction(text, enclosingNode, followingNode, comment, options) || handleGoto(enclosingNode, comment) || handleHalt(precedingNode, enclosingNode, followingNode, comment) || @@ -262,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); @@ -317,8 +327,8 @@ function handleIfStatementComments( precedingNode, enclosingNode, followingNode, - comment, - options + comment + /* options */ ) { if (!enclosingNode || enclosingNode.kind !== "if" || !followingNode) { return false; @@ -326,8 +336,7 @@ function handleIfStatementComments( const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); const nextCharacter = text.charAt(nextCharIndex); @@ -368,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) && @@ -433,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 @@ -444,7 +453,7 @@ function handleClassComments(enclosingNode, followingNode, comment) { } } else { if ( - enclosingNode.extends.some(extendsNode => { + enclosingNode.extends.some((extendsNode) => { if (followingNode && followingNode === extendsNode) { addDanglingComment(followingNode, comment); return true; @@ -460,7 +469,7 @@ function handleClassComments(enclosingNode, followingNode, comment) { // them as dangling comments and handle them in the printer if (followingNode && enclosingNode.implements) { if ( - enclosingNode.implements.some(implementsNode => { + enclosingNode.implements.some((implementsNode) => { if (followingNode && followingNode === implementsNode) { addDanglingComment(followingNode, comment); return true; @@ -478,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") @@ -492,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 ")" @@ -512,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. @@ -526,24 +550,24 @@ function handleFunction(text, enclosingNode, followingNode, comment, options) { return false; } -function handleFunctionParameter(text, enclosingNode, comment, options) { +function handleFunctionParameter( + text, + precedingNode, + enclosingNode, + followingNode, + comment +) { if ( !enclosingNode || !["function", "method", "parameter"].includes(enclosingNode.kind) ) { return false; } - // for function parameters that are assignments, we have no node to assign comments - // that fall in between the var being assigned and the "=" character. To get around this, - // we'll store any comments falling here as dangling comments on the parameter node, - // and let the printer handle them accordingly - const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( - text, - comment, - options - ); - if (text.charAt(nextCharIndex) + text.charAt(nextCharIndex + 1) === "= ") { - addDanglingComment(enclosingNode, comment); + if ( + precedingNode.kind === "typereference" && + followingNode.kind === "identifier" + ) { + addTrailingComment(precedingNode, comment); return true; } return false; @@ -583,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) !== ")") { @@ -647,18 +675,17 @@ function handleEntryComments(enclosingNode, comment) { return false; } -function handleVariableComments(enclosingNode, followingNode, comment) { - if ( - enclosingNode && - enclosingNode.kind === "assign" && - followingNode && - (followingNode.kind === "array" || - followingNode.kind === "string" || - followingNode.kind === "encapsed") - ) { - addLeadingComment(followingNode, comment); - return true; +function handleAssignComments(enclosingNode, followingNode, comment) { + if (enclosingNode && enclosingNode.kind === "assign" && followingNode) { + const equalSignOffset = + enclosingNode.loc.start.offset + enclosingNode.loc.source.indexOf("="); + + if (comment.loc.start.offset > equalSignOffset) { + addLeadingComment(followingNode, comment); + return true; + } } + return false; } @@ -685,18 +712,6 @@ function handleTryComments(enclosingNode, followingNode, comment) { return false; } -function handlePropertyComments(enclosingNode, comment) { - if ( - enclosingNode && - (enclosingNode.kind === "property" || - enclosingNode.kind === "classconstant") - ) { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - function handleCallComments(precedingNode, enclosingNode, comment) { if ( enclosingNode && @@ -749,6 +764,10 @@ function handleDeclareComments( return false; } + if (precedingNode && precedingNode.kind === "noop") { + return false; + } + if (!followingNode || enclosingNode.directives[0] === followingNode) { if (enclosingNode.mode === "none") { addTrailingComment(enclosingNode, comment); @@ -773,8 +792,8 @@ function handleWhileComments( precedingNode, enclosingNode, followingNode, - comment, - options + comment + /* options */ ) { if (!enclosingNode || enclosingNode.kind !== "while" || !followingNode) { return false; @@ -787,8 +806,7 @@ function handleWhileComments( const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( text, - comment, - options + locEnd(comment) ); const nextCharacter = text.charAt(nextCharIndex); @@ -805,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(); @@ -821,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"); @@ -840,22 +858,22 @@ 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) { - return node.comments && node.comments.some(comment => comment.leading); + return node.comments && node.comments.some((comment) => comment.leading); } function hasTrailingComment(node) { - return node.comments && node.comments.some(comment => comment.trailing); + 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)) ) ); } @@ -864,16 +882,19 @@ function printComments(comments, options) { const parts = []; comments.forEach((comment, index, comments) => { comment.printed = true; + const isLastComment = comments.length === index + 1; parts.push(comment.value); - parts.push(hardline); + if (!isLastComment) { + parts.push(hardline); + } if ( - isNextLineEmpty(options.originalText, comment, options) && - comments.length > index + 1 + isNextLineEmpty(options.originalText, locEnd(comment)) && + !isLastComment ) { parts.push(hardline); } }); - return concat(parts); + return parts; } function isBlockComment(comment) { @@ -881,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) { @@ -913,48 +918,50 @@ 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), { - backwards: true + hasNewline(options.originalText, locStart(comment), { + backwards: true, }) ) { // This allows comments at the end of nested structures: @@ -971,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); @@ -1001,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, @@ -1040,5 +1040,5 @@ module.exports = { hasTrailingComment, hasLeadingOwnLineComment, printComments, - printAllComments + printAllComments, }; diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 9ee5093b9..000000000 --- a/src/index.js +++ /dev/null @@ -1,133 +0,0 @@ -"use strict"; - -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"); - -// TODO: remove after resolve https://github.com/prettier/prettier/pull/5854 -function createLanguage(linguistData, { extend, override }) { - const language = {}; - - for (const key in linguistData) { - const newKey = key === "languageId" ? "linguistLanguageId" : key; - language[newKey] = linguistData[key]; - } - - if (extend) { - for (const key in extend) { - language[key] = (language[key] || []).concat(extend[key]); - } - } - - for (const key in override) { - language[key] = override[key]; - } - - return language; -} - -const languages = [ - createLanguage(require("linguist-languages/data/php"), { - override: { - parsers: ["php"], - vscodeLanguageIds: ["php"] - } - }), - createLanguage(require("linguist-languages/data/html+php"), { - override: { - parsers: ["php"], - vscodeLanguageIds: ["php"] - } - }) -]; - -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"), - hasPragma - } -}; - -const printers = { - php: { - print, - insertPragma, - massageAstNode: clean, - getCommentChildNodes: comments.getCommentChildNodes, - canAttachComment: comments.canAttachComment, - isBlockComment: comments.isBlockComment, - handleComments: { - ownLine: comments.handleOwnLineComment, - endOfLine: comments.handleEndOfLineComment, - remaining: comments.handleRemainingComment - }, - printComment(commentPath) { - const comment = commentPath.getValue(); - - switch (comment.kind) { - case "commentblock": { - // for now, don't touch single line block comments - if (!comment.value.includes("\n")) { - return comment.value; - } - - const lines = comment.value.split(/\r?\n/g); - // if this is a block comment, handle indentation - if ( - lines - .slice(1, lines.length - 1) - .every(line => line.trim()[0] === "*") - ) { - return join( - hardline, - lines.map( - (line, index) => - (index > 0 ? " " : "") + - (index < lines.length - 1 ? line.trim() : line.trimLeft()) - ) - ); - } - - // otherwise we can't be sure about indentation, so just print as is - return comment.value; - } - case "commentline": { - return comment.value.trimRight(); - } - /* istanbul ignore next */ - default: - throw new Error(`Not a comment: ${JSON.stringify(comment)}`); - } - }, - hasPrettierIgnore(path) { - const node = path.getNode(); - return ( - node && - node.comments && - node.comments.length > 0 && - node.comments.some(comment => comment.value.includes("prettier-ignore")) - ); - } - } -}; - -module.exports = { - languages, - printers, - parsers, - options, - defaultOptions: { - tabWidth: 4 - } -}; diff --git a/src/index.mjs b/src/index.mjs new file mode 100644 index 000000000..6a35c034d --- /dev/null +++ b/src/index.mjs @@ -0,0 +1,173 @@ +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 { join, hardline } = doc.builders; + +function createLanguage(linguistData, { extend, override }) { + const language = {}; + + for (const key in linguistData) { + const newKey = key === "languageId" ? "linguistLanguageId" : key; + language[newKey] = linguistData[key]; + } + + if (extend) { + for (const key in extend) { + language[key] = (language[key] || []).concat(extend[key]); + } + } + + for (const key in override) { + language[key] = override[key]; + } + + return language; +} + +const languages = [ + createLanguage(LINGUIST_LANGUAGES_PHP, { + override: { + parsers: ["php"], + vscodeLanguageIds: ["php"], + }, + }), + createLanguage(LINGUIST_LANGUAGES_HTML_PHP, { + override: { + parsers: ["php"], + vscodeLanguageIds: ["php"], + }, + }), +]; + +const parsers = { + php: { + parse, + astFormat: "php", + 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, + canAttachComment, + isBlockComment, + handleComments: { + ownLine: handleOwnLineComment, + endOfLine: handleEndOfLineComment, + remaining: handleRemainingComment, + }, + willPrintOwnComments(path) { + const { node } = path; + + return node && node.kind === "noop"; + }, + printComment(path) { + const comment = path.node; + + switch (comment.kind) { + case "commentblock": { + // for now, don't touch single line block comments + if (!comment.value.includes("\n")) { + return comment.value; + } + + const lines = comment.value.split("\n"); + // if this is a block comment, handle indentation + if ( + lines + .slice(1, lines.length - 1) + .every((line) => line.trim()[0] === "*") + ) { + return join( + hardline, + lines.map( + (line, index) => + (index > 0 ? " " : "") + + (index < lines.length - 1 ? line.trim() : line.trimLeft()) + ) + ); + } + + // otherwise we can't be sure about indentation, so just print as is + return comment.value; + } + case "commentline": { + return comment.value.trimRight(); + } + /* c8 ignore next 2 */ + default: + throw new Error(`Not a comment: ${JSON.stringify(comment)}`); + } + }, + hasPrettierIgnore(path) { + 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.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)) + ); + }, + }, +}; + +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 07090c9ec..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 ( [ @@ -27,7 +22,7 @@ function needsParens(path) { "include", "print", "return", - "echo" + "echo", ].includes(parent.kind) ) { return false; @@ -52,18 +47,20 @@ 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; } case "bin": { switch (parent.kind) { case "assign": + case "retif": return ["and", "xor", "or"].includes(node.type); case "silent": case "cast": @@ -75,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); @@ -92,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; } @@ -120,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; @@ -135,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; } @@ -148,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); @@ -189,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 @@ -214,6 +224,7 @@ function needsParens(path) { case "array": switch (parent.kind) { case "propertylookup": + case "nullsafepropertylookup": case "staticlookup": case "offsetlookup": case "call": @@ -224,7 +235,7 @@ function needsParens(path) { return false; } - return name === "what" && parent.what === node; + return key === "what"; default: return false; } @@ -236,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 acb93aede..000000000 --- a/src/options.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; - -const CATEGORY_PHP = "PHP"; - -module.exports = { - trailingCommaPHP: { - since: "0.0.0", - category: CATEGORY_PHP, - type: "choice", - default: "none", - description: "Print trailing commas wherever possible when multi-line.", - choices: [ - { value: "none", description: "No trailing commas." }, - { - value: "php5", - description: "Trailing commas where valid in PHP 5 (arrays and lists)." - }, - { - value: "php7.2", - description: - "Trailing commas where valid in PHP 7.2 (arrays, lists and uses)." - }, - { - value: "all", - description: "Trailing commas wherever possible." - } - ] - }, - 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 69% rename from src/parser.js rename to src/parser.mjs index 8b53c48ac..8df49870d 100644 --- a/src/parser.js +++ b/src/parser.mjs @@ -1,25 +1,28 @@ -"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; - } + ast.comments.forEach((comment) => { 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 55% rename from src/pragma.js rename to src/pragma.mjs index b4560ef0c..976baa7d9 100644 --- a/src/pragma.js +++ b/src/pragma.mjs @@ -1,25 +1,24 @@ -"use strict"; - -const parse = require("./parser"); -const memoize = require("mem"); +import { memoize } from "./util.mjs"; +import parse from "./parser.mjs"; const reHasPragma = /@prettier|@format/; -const extractDocBlocks = memoize(text => { +const getPageLevelDocBlock = memoize((text) => { const parsed = parse(text); - return parsed.comments.filter(el => el.kind === "commentblock"); -}); - -function guessLineEnding(text) { - const index = text.indexOf("\n"); - - if (index >= 0 && text.charAt(index - 1) === "\r") { - return "\r\n"; + const [firstChild] = parsed.children; + const [firstDocBlock] = parsed.comments.filter( + (el) => el.kind === "commentblock" + ); + + if ( + firstChild && + firstDocBlock && + firstDocBlock.loc.start.line < firstChild.loc.start.line + ) { + return firstDocBlock; } - - return "\n"; -} +}); function hasPragma(text) { // fast path optimization - check if the pragma shows up in the file at all @@ -27,10 +26,10 @@ function hasPragma(text) { return false; } - const [firstDocBlock] = extractDocBlocks(text); + const pageLevelDocBlock = getPageLevelDocBlock(text); - if (firstDocBlock) { - const { value } = firstDocBlock; + if (pageLevelDocBlock) { + const { value } = pageLevelDocBlock; return reHasPragma.test(value); } @@ -38,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 @@ -50,26 +49,26 @@ function injectPragma(docblock, text) { // find the first @pragma // if there happens to be one on the opening line, just put it on the next line. - const pragmaIndex = lines.findIndex(line => /@\S/.test(line)) || 1; + const pragmaIndex = lines.findIndex((line) => /@\S/.test(line)) || 1; // 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) { - const [firstDocBlock] = extractDocBlocks(text); + const pageLevelDocBlock = getPageLevelDocBlock(text); - if (firstDocBlock) { + if (pageLevelDocBlock) { const { start: { offset: startOffset }, - end: { offset: endOffset } - } = firstDocBlock.loc; + end: { offset: endOffset }, + } = pageLevelDocBlock.loc; const before = text.substring(0, startOffset); const after = text.substring(endOffset); - return `${before}${injectPragma(firstDocBlock.value, text)}${after}`; + return `${before}${injectPragma(pageLevelDocBlock.value, text)}${after}`; } const openTag = "= requiredVersion; } function shouldPrintHardlineForOpenBrace(options) { @@ -94,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; } @@ -131,62 +121,40 @@ function genericPrint(path, options, print) { parts.push(hardline); } - return concat(parts); + return parts; } -function printPropertyLookup(path, options, print) { - const node = path.getValue(); - - let needCurly = true; - - if ( - node.offset.kind === "variable" || - node.offset.kind === "identifier" || - (node.offset.kind === "encapsed" && node.offset.type === "offset") - ) { - needCurly = false; - } +function printPropertyLookup(path, options, print, nullsafe = false) { + return [nullsafe ? "?" : "", "->", print("offset")]; +} - return concat([ - "->", - needCurly ? "{" : "", - path.call(print, "offset"), - needCurly ? "}" : "" - ]); +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 @@ -235,8 +203,7 @@ function printMemberChain(path, options, print) { const { originalText } = options; const nextCharIndex = getNextNonSpaceNonCommentCharacterIndex( originalText, - node, - options + locEnd(node) ); const nextChar = originalText.charAt(nextCharIndex); @@ -250,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" && @@ -262,22 +229,24 @@ 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 : "" - ]) + shouldInsertEmptyLineAfter(node) ? hardline : "", + ], }); - path.call(what => traverse(what), "what"); + path.call((what) => traverse(what), "what"); } else if (isLookupNode(node)) { // Print *lookup nodes as we standard print them outside member chain let printedMemberish = null; 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 { @@ -287,28 +256,24 @@ 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"); + 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, - printed: printArgumentsList(path, options, print) + printed: printArgumentsList(path, options, print), }); - path.call(what => traverse(what), "what"); + path.call((what) => traverse(what), "what"); // Restore parens around `propertylookup` and `staticlookup` nodes with call. // $value = ($object->foo)(); @@ -317,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, ")"]; } } @@ -405,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 = []; @@ -430,6 +395,12 @@ function printMemberChain(path, options, print) { // $foo->Data['key']("foo") // ->method(); // + // 3. expression statements with variable names shorter than the tab width + // + // Example: + // $foo->bar() + // ->baz() + // ->buzz() function shouldNotWrap(groups) { const hasComputed = @@ -439,11 +410,17 @@ function printMemberChain(path, options, print) { const firstNode = groups[0][0].node; return ( - (firstNode.kind === "variable" && firstNode.name === "this") || + (firstNode.kind === "variable" && + (firstNode.name === "this" || + (isExpressionStatement && isShort(firstNode.name)))) || isReferenceLikeNode(firstNode) ); } + function isShort(name) { + return name.length < options.tabWidth; + } + const lastNode = getLast(groups[0]).node; return ( @@ -454,6 +431,7 @@ function printMemberChain(path, options, print) { ); } + const isExpressionStatement = path.parent.kind === "expressionstatement"; const shouldMerge = groups.length >= 2 && !groups[1][0].node.comments && shouldNotWrap(groups); @@ -476,7 +454,7 @@ function printMemberChain(path, options, print) { } } - return concat(result); + return result; } function printIndentedGroup(groups) { @@ -484,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 // @@ -504,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"); @@ -535,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)) - ]); + printIndentedGroup(groups.slice(shouldMerge ? 2 : 1)), + ]; - const callExpressionCount = printedNodes.filter( - tuple => tuple.node.kind === "call" - ).length; + const callExpressions = printedNodes.filter( + (tuple) => tuple.node.kind === "call" + ); // We don't want to print in one line if there's: // * A comment. @@ -553,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]) - ]); + conditionalGroup([oneLine, expanded]), + ]; } function couldGroupArg(arg) { @@ -609,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; } @@ -640,9 +611,34 @@ function printArgumentsList(path, options, print, argumentsKey = "arguments") { parts.push(",", line); } - return concat(parts); + return parts; }, argumentsKey); + const { node } = path; + const lastArg = getLast(args); + + const maybeTrailingComma = + (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( + ["(", indent([line, ...printedArguments]), maybeTrailingComma, line, ")"], + { shouldBreak: true } + ); + } + const shouldGroupFirst = shouldGroupFirstArg(args); const shouldGroupLast = shouldGroupLastArg(args); @@ -654,82 +650,77 @@ 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 = ["(", ...printedExpanded, ")"]; - return concat([ + return [ somePrintedArgumentsWillBreak ? breakParent : "", conditionalGroup( [ - concat([ - ifBreak( - indent(concat(["(", softline, concat(printedExpanded)])), - concat(["(", concat(printedExpanded)]) - ), - somePrintedArgumentsWillBreak ? softline : "", - ")" - ]), + !somePrintedArgumentsWillBreak + ? simpleConcat + : ifBreak(allArgsBrokenOut(), simpleConcat), shouldGroupFirst - ? concat([ + ? [ "(", group(printedExpanded[0], { shouldBreak: true }), - concat(printedExpanded.slice(1)), - ")" - ]) - : concat([ + ...printedExpanded.slice(1), + ")", + ] + : [ "(", - concat(printedArguments.slice(0, -1)), + ...printedArguments.slice(0, -1), group(getLast(printedExpanded), { - shouldBreak: true + 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 + shouldBreak: printedArguments.some(willBreak) || anyArgEmptyLine, } ); } @@ -758,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 @@ -774,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, @@ -786,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) !== @@ -815,27 +806,36 @@ function printBinaryExpression( shouldNotHaveWhitespace ? "" : " ", shouldGroup ? group(right) : right ); + + // The root comments are already printed, but we need to manually print + // 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 = 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.`); } } @@ -846,36 +846,33 @@ function getEncapsedQuotes(node, { opening = true } = {}) { const quotes = { string: '"', - shell: "`" + shell: "`", }; if (quotes[node.type]) { 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. @@ -899,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)), - after || "" - ]); + ...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), @@ -925,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 && @@ -981,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) : ""; @@ -1014,28 +1011,36 @@ function printLines(path, options, print, childrenAttribute = "children") { : "" - ]) - : isProgramLikeNode(node) && isFirstNode - ? "" - : concat([beforeCloseTagInlineNode, "?>"]); + "?>", + ] + : isProgramLikeNode(node) && isFirstNode && node.kind !== "namespace" + ? "" + : [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); @@ -1051,69 +1056,72 @@ function printLines(path, options, print, childrenAttribute = "children") { if (hasStartTag) { const between = options.originalText.trim().match(/^<\?(php|=)(\s+)?\S/); - const afterOpenTag = concat([ - between && between[2].includes("\n") - ? concat([ - hardline, - between[2].split("\n").length > 2 ? hardline : "" - ]) + const afterOpenTag = [ + between && between[2] && between[2].includes("\n") + ? [hardline, between[2].split("\n").length > 2 ? hardline : ""] : " ", - node.comments ? comments.printComments(node.comments, options) : "" - ]); + node.comments ? printComments(node.comments, options) : "", + ]; - parts.push(concat([""); + 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 + : ""; - 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( @@ -1124,52 +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 - ), - hardline - ]) + 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 "); @@ -1179,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` @@ -1193,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, "implements"), + ], + [ printClassPart(path, options, print, "extends"), - printClassPart(path, options, print, "implements", " ", hardline) - ]), - concat([ + printClassPart(path, options, print, "implements", " ", hardline), + ], + [ printClassPart(path, options, print, "extends", hardline, " "), printClassPart( path, @@ -1210,11 +1256,11 @@ function printClass(path, options, print) { "implements", hardline, node.implements.length > 1 ? hardline : " " - ) - ]) + ), + ], ], { - shouldBreak: hasDanglingComments(node.extends) + shouldBreak: hasDanglingComments(node.extends), } ) ); @@ -1231,7 +1277,7 @@ function printClass(path, options, print) { "extends", hardline, node.extends.length > 1 ? hardline : " " - ) + ), ]) ); } @@ -1248,43 +1294,43 @@ function printClass(path, options, print) { "implements", hardline, node.implements.length > 1 ? hardline : " " - ) + ), ]) ); } } - 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([ - "{", - indent( - concat([ - hasEmptyClassBody ? "" : hardline, - printStatements(path, options, print, "body") - ]) - ), - comments.printDanglingComments(path, options, true), - isAnonymousClass && hasEmptyClassBody ? softline : hardline, - "}" + + const printedDeclaration = group([ + group(declaration), + shouldPrintHardlineForOpenBrace(options) && !hasEmptyClassBody + ? isAnonymousClass + ? line + : hardline + : " ", ]); - return concat([printedDeclaration, printedBody]); + const printedBody = [ + "{", + indent([ + hasEmptyClassBody ? "" : hardline, + printStatements(path, options, print, "body"), + ]), + printDanglingComments(path, options, true), + hasEmptyClassBody ? "" : hardline, + "}", + ]; + + 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) { @@ -1310,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 : " ", - printedBody - ]); + 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( @@ -1391,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( @@ -1433,6 +1477,7 @@ function printAssignment( operator, rightNode, printedRight, + hasRef, options ) { if (!rightNode) { @@ -1443,10 +1488,11 @@ function printAssignment( leftNode, rightNode, printedRight, + hasRef, options ); - return group(concat([printedLeft, operator, printed])); + return group([printedLeft, operator, printed]); } function isLookupNodeChain(node) { @@ -1461,14 +1507,20 @@ function isLookupNodeChain(node) { return isLookupNodeChain(node.what); } -function printAssignmentRight(leftNode, rightNode, printedRight, options) { - if ( - comments.hasLeadingOwnLineComment(options.originalText, rightNode, options) - ) { - return indent(concat([hardline, printedRight])); +function printAssignmentRight( + leftNode, + rightNode, + printedRight, + hasRef, + options +) { + const ref = hasRef ? "&" : ""; + + if (hasLeadingOwnLineComment(options.originalText, rightNode)) { + return indent([hardline, ref, printedRight]); } - const pureRightNode = rightNode.kind === "cast" ? rightNode.what : rightNode; + const pureRightNode = rightNode.kind === "cast" ? rightNode.expr : rightNode; const canBreak = (pureRightNode.kind === "bin" && @@ -1485,10 +1537,10 @@ function printAssignmentRight(leftNode, rightNode, printedRight, options) { isLookupNodeChain(pureRightNode))); if (canBreak) { - return group(indent(concat([line, printedRight]))); + return group(indent([line, ref, printedRight])); } - return concat([" ", printedRight]); + return [" ", ref, printedRight]; } function needsHardlineAfterDanglingComment(node) { @@ -1497,279 +1549,298 @@ function needsHardlineAfterDanglingComment(node) { } const lastDanglingComment = getLast( - node.comments.filter(comment => !comment.leading && !comment.trailing) + 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") - ); + const printDeclareArguments = (path) => { + 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;" - ]); + 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([ - hardline, - isNextLineEmptyAfterNamespace( - options.originalText, - node, - options.locStart - ) - ? hardline - : "", - printLines(path, options, print) - ]) + ? indent([hardline, printLines(path, options, print)]) + : [ + node.children[0].kind === "inline" + ? "" + : [ + hardline, + 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, "php7.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 ", node.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"), "::", - node.method, + print("method"), " insteadof ", - join(", ", path.map(print, "instead")) - ]); + join(", ", path.map(print, "instead")), + ]; case "traitalias": - return concat([ - node.trait ? concat([path.call(print, "trait"), "::"]) : "", - node.method || "", + return [ + node.trait ? [print("trait"), "::"] : "", + node.method ? print("method") : "", " as ", join(" ", [ ...(node.visibility ? [node.visibility] : []), - ...(node.as ? [node.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") - ]) - ), - hardline - ]) - : hasDanglingComments(node) - ? concat([ - line, - comments.printDanglingComments(path, options, true), - line - ]) + return group([ + "use ", + indent(group(join([",", line], path.map(print, "traits")))), + node.adaptations + ? [ + " {", + node.adaptations.length > 0 + ? [ + indent([ + hardline, + 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 [ + node.parenthesizedExpression ? "(" : "", + ...printAttrs(path, options, print, { inline: true }), + node.isStatic ? "static " : "", + "fn", + printArgumentsList(path, options, print), + node.type ? [": ", node.nullable ? "?" : "", print("type")] : "", + " => ", + 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 ? "..." : "", "$", - node.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 - ) - ]) - ]) - ); + ), + ] + : "", + ]); + case "propertystatement": { + 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); + + let firstProperty; + + if (printed.length === 1 && !node.properties[0].comments) { + [firstProperty] = printed; + } else if (printed.length > 0) { + // Indent first property + firstProperty = indent(printed[0]); } - return name; + const hasVisibility = node.visibility || node.visibility === null; + + 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 "variadic": - return concat(["...", path.call(print, "what")]); - case "property": - return group( - concat([ - node.visibility || node.visibility === null - ? concat([node.visibility === null ? "var" : node.visibility, " "]) - : "", - node.isStatic ? "static " : "", - node.kind === "property" ? "$" : "const ", - node.name, - node.value - ? concat([ - " =", - printAssignmentRight( - node.name, - node.value, - path.call(print, "value"), - options - ) - ]) - : "" - ]) - ); 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, @@ -1782,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; @@ -1790,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 : " " ); } @@ -1802,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") ) ); @@ -1810,89 +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": - return group( - concat([ - "while (", - group( - concat([ - indent(concat([softline, path.call(print, "test")])), - softline - ]) - ), - ")", - printBodyControlStructure(path, options, print, "body") - ]) - ); + case "switch": + 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"); @@ -1900,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 = []; @@ -1950,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) { @@ -1960,62 +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") - ]); + printBodyControlStructure(path, options, print, "body"), + ]; } - case "switch": - return concat([ - group( - concat([ - "switch (", - indent(concat([softline, path.call(print, "test")])), - softline, - ")" - ]) - ), - 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; @@ -2026,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 (...)))) @@ -2039,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 = @@ -2052,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 = []; @@ -2069,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"), - printArgumentsList(path, options, print) - ]); + 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++; @@ -2115,97 +2142,74 @@ function printNode(path, options, print) { firstNonMemberParent.left.kind !== "variable"))) || node.kind === "offsetlookup" || ((isReferenceLikeNode(node.what) || node.what.kind === "variable") && - ["identifier", "variable", "literal", "encapsed"].includes( + ["identifier", "variable", "encapsedpart"].includes( node.offset.kind ) && - (parent && !isLookupNode(parent))); + 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.status - ? isStringOnItsOwnLine(node.status, options.originalText, options) - ? path.call(print, "status") - : concat([ - indent(concat([softline, path.call(print, "status")])), - 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([node.name, ":"]); + return [print("name"), ":"]; case "goto": - return concat(["goto ", node.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 - ), - hardline - ]) + ? [ + printDanglingComments(path, options, /* sameIndent */ true), + hardline, + ] : "", "__halt_compiler();", - node.after - ]); + 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; @@ -2218,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 = []; @@ -2242,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); } @@ -2250,76 +2250,82 @@ 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, - ")" - ]) - ); - case "variable": - return concat([ - node.byref ? "&" : "", - "$", - node.curly ? "{" : "", - path.call(print, "name"), - node.curly ? "}" : "" + return group([ + "empty(", + indent([softline, print("expression")]), + softline, + ")", ]); + case "variable": { + const { parent, grandparent: parentParent } = path; + const ampersand = parent.kind === "assign" ? "" : node.byref ? "&" : ""; + const dollar = + (parent.kind === "encapsedpart" && + parent.syntax === "simple" && + parent.curly) || + (parentParent && + parent.kind === "offsetlookup" && + parentParent.kind === "encapsedpart" && + parentParent.syntax === "simple" && + parentParent.curly) + ? "" + : "$"; + const openCurly = node.curly ? "{" : ""; + const closeCurly = node.curly ? "}" : ""; + + return [ampersand, dollar, openCurly, print("name"), closeCurly]; + } case "constantstatement": case "classconstant": { - const printed = path.map(childPath => { - return print(childPath); - }, "items"); + const attrs = printAttrs(path, options, print); + const printed = path.map(print, "constants"); let firstVariable; - if (printed.length === 1 && !node.items[0].comments) { + if (printed.length === 1 && !node.constants[0].comments) { [firstVariable] = printed; } else if (printed.length > 0) { // Indent first item 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); + const hasValue = node.variables.some((item) => item.defaultValue); let firstVariable; @@ -2330,53 +2336,44 @@ 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 ); } case "list": case "array": { - const open = node.shortForm ? "[" : concat([node.kind, "("]); - const close = node.shortForm ? "]" : ")"; + const useShortForm = + (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 - ]) - ); - } - - // Todo https://github.com/glayzzle/php-parser/issues/174 - if (getLast(node.items) === null) { - node.items.pop(); + return group([ + open, + printDanglingComments(path, options), + softline, + close, + ]); } const lastElem = getLast(node.items); @@ -2391,105 +2388,111 @@ function printNode(path, options, print) { // // Note that getLast returns null if the array is empty, but // we already check for an empty array just above so we are safe - const needsForcedTrailingComma = lastElem === null; + const needsForcedTrailingComma = lastElem && lastElem.kind === "noop"; const [firstProperty] = node.items - .filter(node => node !== null) - .sort((a, b) => options.locStart(a) - options.locStart(b)); + .filter((node) => node.kind !== "noop") + .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, "php5") - ? concat([ + !needsForcedTrailingComma && shouldPrintComma(options, 5.0) + ? [ lastElem && shouldPrintHardlineBeforeTrailingComma(lastElem) ? hardline : "", - "," - ]) + ",", + ] : "" ), - comments.printDanglingComments(path, options, true), + printDanglingComments(path, options, true), softline, - close - ]), + close, + ], { shouldBreak } ); } - case "entry": - return printAssignment( - node.key, - path.call(print, "key"), - " =>", - node.value, - path.call(print, "value"), - options - ); + case "entry": { + const ref = node.byRef ? "&" : ""; + const unpack = node.unpack ? "..." : ""; + return node.key + ? printAssignment( + node.key, + print("key"), + " =>", + node.value, + print("value"), + ref, + options + ) + : [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 - ]); + : 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.what.comments - ? indent(path.call(print, "what")) - : path.call(print, "what") - ]); + 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([" ", 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" || parent.kind === "while" || + parent.kind === "switch" || parent.kind === "do"); const parts = printBinaryExpression( @@ -2511,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. @@ -2525,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 @@ -2535,14 +2536,15 @@ function printNode(path, options, print) { const shouldNotIndent = (node !== parent.body && parent.kind === "for") || (parent.kind === "retif" && - (parentParent && parentParent.kind !== "return")); + parentParent && + parentParent.kind !== "return"); const shouldIndentIfInlining = [ "assign", "property", "constant", "staticvariable", - "entry" + "entry", ].includes(parent.kind); const samePrecedenceSubExpression = @@ -2553,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; @@ -2584,33 +2585,33 @@ 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"), - line - ]) + ? indent(print("trueExpr")) + : print("trueExpr"), + line, + ] : "", ":", node.trueExpr - ? concat([" ", printedFalseExpr]) - : concat([ + ? [" ", printedFalseExpr] + : [ shouldInlineRetifFalseExpression(node.falseExpr) ? " " : line, - printedFalseExpr - ]) - ]); + printedFalseExpr, + ], + ]; parts.push(part); // We want a whole chain of retif to all break if any of them break. - const maybeGroup = doc => + const maybeGroup = (doc) => parent === firstNonRetifParent ? group(doc) : doc; // Break the closing parens to keep the chain right after it: @@ -2618,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. // @@ -2649,32 +2654,51 @@ 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") { - return join(literalline, node.raw.split(/\r?\n/g)); + const parentParent = path.grandparent; + let closingTagIndentation = 0; + const flexible = options.phpVersion >= 7.3; + let linebreak = literalline; + if (parentParent.type === "heredoc") { + 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( + linebreak, + node.raw + .split("\n") + .map((s, i) => + i > 0 || node.loc.start.column === 0 + ? s.substring(closingTagIndentation) + : s + ) + ); } - const quote = useSingleQuote(node, options) ? "'" : '"'; + const quote = useDoubleQuote(node, options) ? '"' : "'"; let stringValue = node.raw; @@ -2691,88 +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)), - quote - ]); + 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" + ? [node.curly ? "$" : "", "{"] + : ""; + const close = + (node.syntax === "simple" && node.curly) || node.syntax === "complex" + ? "}" + : ""; + + return [open, print("expression"), close]; } - case "encapsedpart": - return concat([ - node.curly ? "{" : "", - path.call(print, "expression"), - node.curly ? "}" : "" - ]); 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 - : "" - ]); - case "offset": - return group( - concat( - path.map(valuePath => { - const node = valuePath.getValue(); - const printedValue = print(valuePath); - - if (node.kind !== "identifier") { - return concat([ - "{", - indent(concat([softline, printedValue])), - softline, - "}" - ]); - } - - return printedValue; - }, "value") - ) - ); - // 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": - // Respect `indent` for `nowdoc` nodes - return concat([ + case "nowdoc": { + const flexible = options.phpVersion >= 7.3; + const linebreak = flexible ? hardline : literalline; + return [ "<<<'", node.label, "'", - literalline, - join(literalline, node.value.split(/\r?\n/g)), - literalline, + linebreak, + join(linebreak, node.value.split("\n")), + linebreak, node.label, - docShouldHaveTrailingNewline(path) ? hardline : "" - ]); - case "classreference": { - const parent = path.getParentNode(); - - if (parent.kind !== "call" && node.name.toLowerCase() === "null") { - return node.name.toLowerCase(); - } - - return concat([node.resolution === "rn" ? "namespace\\" : "", node.name]); + docShouldHaveTrailingNewline(path) ? hardline : "", + ]; } + case "name": + return [node.resolution === "rn" ? "namespace\\" : "", node.name]; case "literal": - return path.call(print, "value"); + return print("value"); case "parentreference": return "parent"; case "selfreference": @@ -2781,20 +2795,105 @@ function printNode(path, options, print) { return "static"; case "typereference": return node.name; + 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 ? 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 72% rename from src/util.js rename to src/util.mjs index b984b26a3..b4bf9e473 100644 --- a/src/util.js +++ b/src/util.mjs @@ -1,10 +1,7 @@ -"use strict"; +import { util as prettierUtil } from "prettier"; +import { locStart } from "./loc.mjs"; -const { - hasNewline, - skipEverythingButNewLine, - skipNewline -} = require("prettier").util; +const { hasNewline, skipEverythingButNewLine, skipNewline } = prettierUtil; function printNumber(rawNumber) { return ( @@ -18,55 +15,53 @@ function printNumber(rawNumber) { .replace(/^([+-])?\./, "$10.") // Remove extraneous trailing decimal zeroes. .replace(/(\.\d+?)0+(?=e|$)/, "$1") - // Remove trailing dot. - .replace(/\.(?=e|$)/, "") + // Remove unnecessary .e notation + .replace(/\.(?=e)/, "") ); } // 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 = ["==", "!=", "===", "!==", "<>", "<=>"]; @@ -136,10 +131,11 @@ function nodeHasStatement(node) { "program", "namespace", "class", + "enum", "interface", "trait", "traituse", - "declare" + "declare", ].includes(node.kind); } @@ -158,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]; @@ -180,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); @@ -248,10 +227,10 @@ function isDocNode(node) { * Heredoc/Nowdoc nodes need a trailing linebreak if they * appear as function arguments or array elements */ -function docShouldHaveTrailingNewline(path) { - const node = path.getValue(); - const parent = path.getParentNode(); - const parentParent = path.getParentNode(1); +function docShouldHaveTrailingNewline(path, recurse = 0) { + const node = path.getNode(recurse); + const parent = path.getNode(recurse + 1); + const parentParent = path.getNode(recurse + 2); if (!parent) { return false; @@ -290,11 +269,9 @@ function docShouldHaveTrailingNewline(path) { } if (parent.kind === "bin") { - if (parentParent && parentParent.kind === "bin") { - return true; - } - - return parent.left === node; + return ( + parent.left === node || docShouldHaveTrailingNewline(path, recurse + 1) + ); } if (parent.kind === "case" && parent.test === node) { @@ -340,12 +317,15 @@ function docShouldHaveTrailingNewline(path) { return index !== lastIndex; } + if (parent.kind === "retif") { + return docShouldHaveTrailingNewline(path, recurse + 1); + } + return false; } function lineShouldEndWithSemicolon(path) { - const node = path.getValue(); - const parentNode = path.getParentNode(); + const { node, parent: parentNode } = path; if (!parentNode) { return false; } @@ -367,57 +347,6 @@ function lineShouldEndWithSemicolon(path) { if (node.kind === "echo" && node.shortForm) { return false; } - const semiColonWhitelist = [ - "expressionstatement", - "array", - "assign", - "return", - "break", - "continue", - "call", - "pre", - "post", - "bin", - "unary", - "yield", - "yieldfrom", - "echo", - "list", - "print", - "isset", - "retif", - "unset", - "empty", - "traitprecedence", - "traitalias", - "constantstatement", - "classconstant", - "exit", - "global", - "static", - "include", - "goto", - "throw", - "magic", - "new", - "eval", - "propertylookup", - "staticlookup", - "offsetlookup", - "silent", - "usegroup", - "property", - "string", - "boolean", - "number", - "nowdoc", - "encapsed", - "variable", - "cast", - "clone", - "do", - "constref" - ]; if (node.kind === "traituse") { return !node.adaptations; } @@ -425,16 +354,35 @@ function lineShouldEndWithSemicolon(path) { return true; } if (node.kind === "method") { - const parent = path.getParentNode(); + const { parent } = path; if (parent && parent.kind === "interface") { return true; } } - return semiColonWhitelist.includes(node.kind); + return [ + "expressionstatement", + "do", + "usegroup", + "classconstant", + "propertystatement", + "traitprecedence", + "traitalias", + "goto", + "constantstatement", + "enumcase", + "global", + "static", + "echo", + "unset", + "return", + "break", + "continue", + "throw", + ].includes(node.kind); } function fileShouldEndWithHardline(path) { - const node = path.getValue(); + const { node } = path; const isProgramNode = node.kind === "program"; const lastNode = node.children && getLast(node.children); @@ -472,28 +420,21 @@ function maybeStripLeadingSlashFromUse(name) { function hasDanglingComments(node) { return ( node.comments && - node.comments.some(comment => !comment.leading && !comment.trailing) + node.comments.some((comment) => !comment.leading && !comment.trailing) ); } -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; @@ -503,7 +444,7 @@ function shouldPrintHardLineAfterStartInControlStructure(path) { } function shouldPrintHardLineBeforeEndInControlStructure(path) { - const node = path.getValue(); + const { node } = path; if (["try", "catch"].includes(node.kind)) { return true; @@ -541,33 +482,16 @@ 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); } function isReferenceLikeNode(node) { return [ - "classreference", + "name", "parentreference", "selfreference", - "staticreference" + "staticreference", ].includes(node.kind); } @@ -582,28 +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 useSingleQuote(node, options) { - return ( - !node.isDoubleQuote || - (options.singleQuote && - !node.raw.match(/\\n|\\t|\\r|\\t|\\v|\\e|\\f/) && - !node.value.match( - /["'$\n]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{1,2}|\\u{[0-9A-Fa-f]+}/ - )) - ); +function useDoubleQuote(node, options) { + 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); + 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] && @@ -613,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); @@ -671,42 +596,132 @@ const magicMethods = [ "__invoke", "__set_state", "__clone", - "__debugInfo" + "__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, @@ -716,12 +731,13 @@ module.exports = { isProgramLikeNode, isReferenceLikeNode, getNodeKindIncludingLogical, - useSingleQuote, + useDoubleQuote, hasEmptyBody, isNextLineEmptyAfterNamespace, shouldPrintHardlineBeforeTrailingComma, isDocNode, getAncestorNode, - getNextNode, - normalizeMagicMethodName + normalizeMagicMethodName, + isSimpleCallArgument, + memoize, }; diff --git a/tests/array/__snapshots__/jsfmt.spec.js.snap b/tests/array/__snapshots__/jsfmt.spec.js.snap deleted file mode 100644 index b8c2b44ed..000000000 --- a/tests/array/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,883 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`arrays.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - 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 - -) - -; -$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 - -] - -; -$short_keyed_test = array('reallyreallyreallyreallylongkey' => 1248, 'otherkey' => 234, 'one more' => $hi); -$short_keyed_test = ['reallyreallyreallyreallylongkey' => 1248, 'otherkey' => 234, 'one more' => $hi]; -$foo = $bar[1][2][3][4][5][6]; -$foo = $bar [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] ; -$foo = $bar [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] ; -$foo = $bar -[ -1 -] -[ -2 -] -[ -3 -] -[ -4 -] -[ -5 -] -[ -6 -] -; -$foo = $bar - -[ - -1 - -] - -[ - -2 - -] - -[ - -3 - -] - -[ - -4 - -] - -[ - -5 - -] - -[ - -6 - -] - -; -$array = array( - 1 => "a", - "1" => "b", - 1.5 => "c", - true => "d", -); -$array = array( - "a", - "b", - 6 => "c", - "d", -); -$array = array( - "foo" => "bar", - 42 => 24, - "multi" => array( - "dimensional" => array( - "array" => "foo" - ) - ) -); -$secondElement = getArray()[1]; -$arr[] = 56; -$arr[ ] = 56; -$arr[ ] = 56; -$arr -[ -] -= -56 -; -$arr - -[ - -] - -= - -56 - -; -echo $arr[somefunc($bar)]; -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(['foo', 5, 10, 'bar'], 'banana') ; -$a = array_fill_keys( [ 'foo' , 5 , 10 , 'bar' ] , 'banana' ) ; -$secondElement = getArray()[1]; -unset($arr[5]); -$arr["x"] = 42; -echo $arr[somefunc($bar)]; -$test = $array[foo]; - -$this->long->expression->before->array->statesArray[ - $state->getCirculationStateId() -] = $state->getName(); -$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'] - ] - ], - 'MagicMenu.MagicMenu' -]; - -$data = [ - - - 'value', - 'value', - - - // a comment - 'value', - 'value' - - -]; - -$arr = [ - 'niveisFederativos' => - app(NiveisFederativosRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id'), - - 'tiposLeis' => - app(TiposLeisRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id') -]; -[[$id1, $name1]] = $data; -[[$id1], [$id2], [$id]] = $data; -[[$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongOtherValue]] = $data; -["id" => $id1, "name" => $name1] = $data; -[["id" => $id1, "name" => $name1]] = $data; -[["veryVeryVeryVeryLongKey" => $veryVeryVeryVeryLongValue, "veryVeryVeryVeryLongOtherKey" => $veryVeryVeryVeryLongValue]] = $data; -$arr = [ - 'niveisFederativos' => - function () { - return "value"; - }, - - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => - function () { - return "other-value"; - } -]; - -$singleLine = [ 'do' => [ 'collapse' => 'this' ]]; -$singleLine = array('do' => array('collapse' => 'this')); - -$multiline = [ - 'do' => [ - 'not' => 'collapse' - ] -]; -$multiline = ['do' => 'collapse' -]; -$multiline = array('do' => 'collapse' -); - -$mixed = [ - 'only' => [ 'partly' => 'collapsed' ] -]; -$mixed = [ 'only' => [ - 'partly' => ['coll', 'apsed'] -]]; - -$arr = array($var -); -$arr = array( -$var); -$arr = [$var -]; -$arr = [ -$var]; -$arr = [$foo => $bar]; -$arr = [$foo => -$bar]; - -$collapse = [ - "not", - "associative" -]; -$collapse = ["not", "associative" -]; - -$array = [ - 'key-one' => true ? 1 : 2, - 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' ? 1 : 2, - 'key-two' => true ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' : 2, - 'key-two' => true ? 1 : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', - 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', -]; - -$array = [ - 'key' => 1, - 'key' => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, - 'key' => 'string', - 'key' => __LINE__, - 'key' => "string \${var} {$var}", - 'key' => 'string -string - string', - 'key' => 'string' . 'other-string', - 'key' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', -]; - -$array = [ -'string -string -string' -]; - -$array = [ -'string -string -string', -'string -string -string' -]; - -$array = [ - 'key' => 'string -string -string', - 'other-key' => 'string -string -string' -]; - -$array = [ - 'string -string -string' => 'value', - 'string -string -string -other' => 'other-value' -]; - -$array = [ - 'string -string -string' => 'string -string -string', - 'string -string -string -other' => 'string -string -string' -]; - -$wp_admin_bar->add_menu(array( - 'id' => 'menu-toggle', - 'title' => - '' . - __('Menu') . - '', - 'href' => '#' -)); - -$k = [ - "blablah" => "aldkfkladfskladklsfkladklfkaldfadfkdaf" + - "adlfasdklfkldsklfakldsfkladsfkadsfladsfa" + - "dflkadfkladsfklkadlfkladlfkadklfjadlfdfdaf" -]; - -$o = [ - "somethingThatsAReallyLongPropName" => - $obj->props->cardType === $AwesomizerCardEnum->SEEFIRST, -]; - - -=====================================output===================================== - 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 -); -$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 -]; -$short_keyed_test = array( - 'reallyreallyreallyreallylongkey' => 1248, - 'otherkey' => 234, - 'one more' => $hi -); -$short_keyed_test = [ - 'reallyreallyreallyreallylongkey' => 1248, - 'otherkey' => 234, - 'one more' => $hi -]; -$foo = $bar[1][2][3][4][5][6]; -$foo = $bar[1][2][3][4][5][6]; -$foo = $bar[1][2][3][4][5][6]; -$foo = $bar[1][2][3][4][5][6]; -$foo = $bar[1][2][3][4][5][6]; -$array = array( - 1 => "a", - "1" => "b", - 1.5 => "c", - true => "d" -); -$array = array("a", "b", 6 => "c", "d"); -$array = array( - "foo" => "bar", - 42 => 24, - "multi" => array( - "dimensional" => array( - "array" => "foo" - ) - ) -); -$secondElement = getArray()[1]; -$arr[] = 56; -$arr[] = 56; -$arr[] = 56; -$arr[] = 56; -$arr[] = 56; -echo $arr[somefunc($bar)]; -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(['foo', 5, 10, 'bar'], 'banana'); -$a = array_fill_keys(['foo', 5, 10, 'bar'], 'banana'); -$secondElement = getArray()[1]; -unset($arr[5]); -$arr["x"] = 42; -echo $arr[somefunc($bar)]; -$test = $array[foo]; - -$this->long->expression->before->array->statesArray[ - $state->getCirculationStateId() -] = $state->getName(); -$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'] - ] - ], - 'MagicMenu.MagicMenu' -]; - -$data = [ - 'value', - 'value', - - // a comment - 'value', - 'value' -]; - -$arr = [ - 'niveisFederativos' => app(NiveisFederativosRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id'), - - 'tiposLeis' => app(TiposLeisRepository::class) - ->allOrderBy('nome') - ->pluck('nome', 'id') -]; -[[$id1, $name1]] = $data; -[[$id1], [$id2], [$id]] = $data; -[ - [ - $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, - $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongOtherValue - ] -] = $data; -["id" => $id1, "name" => $name1] = $data; -[["id" => $id1, "name" => $name1]] = $data; -[ - [ - "veryVeryVeryVeryLongKey" => $veryVeryVeryVeryLongValue, - "veryVeryVeryVeryLongOtherKey" => $veryVeryVeryVeryLongValue - ] -] = $data; -$arr = [ - 'niveisFederativos' => function () { - return "value"; - }, - - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => function () { - return "other-value"; - } -]; - -$singleLine = ['do' => ['collapse' => 'this']]; -$singleLine = array('do' => array('collapse' => 'this')); - -$multiline = [ - 'do' => [ - 'not' => 'collapse' - ] -]; -$multiline = ['do' => 'collapse']; -$multiline = array('do' => 'collapse'); - -$mixed = [ - 'only' => ['partly' => 'collapsed'] -]; -$mixed = [ - 'only' => [ - 'partly' => ['coll', 'apsed'] - ] -]; - -$arr = array($var); -$arr = array($var); -$arr = [$var]; -$arr = [$var]; -$arr = [$foo => $bar]; -$arr = [$foo => $bar]; - -$collapse = ["not", "associative"]; -$collapse = ["not", "associative"]; - -$array = [ - 'key-one' => true ? 1 : 2, - 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - ? 1 - : 2, - 'key-two' => true - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - : 2, - 'key-two' => true - ? 1 - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', - 'key-two' => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' - : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' -]; - -$array = [ - 'key' => 1, - 'key' => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, - 'key' => 'string', - 'key' => __LINE__, - 'key' => "string \${var} {$var}", - 'key' => 'string -string - string', - 'key' => 'string' . 'other-string', - 'key' => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' -]; - -$array = [ - 'string -string -string' -]; - -$array = [ - 'string -string -string', - 'string -string -string' -]; - -$array = [ - 'key' => 'string -string -string', - 'other-key' => 'string -string -string' -]; - -$array = [ - 'string -string -string' => 'value', - 'string -string -string -other' => 'other-value' -]; - -$array = [ - 'string -string -string' => 'string -string -string', - 'string -string -string -other' => 'string -string -string' -]; - -$wp_admin_bar->add_menu(array( - 'id' => 'menu-toggle', - 'title' => - '' . - __('Menu') . - '', - 'href' => '#' -)); - -$k = [ - "blablah" => - "aldkfkladfskladklsfkladklfkaldfadfkdaf" + - "adlfasdklfkldsklfakldsfkladsfkadsfladsfa" + - "dflkadfkladsfklkadlfkladlfkadklfjadlfdfdaf" -]; - -$o = [ - "somethingThatsAReallyLongPropName" => - $obj->props->cardType === $AwesomizerCardEnum->SEEFIRST -]; - -================================================================================ -`; - -exports[`single.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - 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 + +) + +; +$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 + +] + +; +$short_keyed_test = array('reallyreallyreallyreallylongkey' => 1248, 'otherkey' => 234, 'one more' => $hi); +$short_keyed_test = ['reallyreallyreallyreallylongkey' => 1248, 'otherkey' => 234, 'one more' => $hi]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] ; +$foo = $bar [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] ; +$foo = $bar +[ +1 +] +[ +2 +] +[ +3 +] +[ +4 +] +[ +5 +] +[ +6 +] +; +$foo = $bar + +[ + +1 + +] + +[ + +2 + +] + +[ + +3 + +] + +[ + +4 + +] + +[ + +5 + +] + +[ + +6 + +] + +; +$array = array( + 1 => "a", + "1" => "b", + 1.5 => "c", + true => "d", +); +$array = array( + "a", + "b", + 6 => "c", + "d", +); +$array = array( + "foo" => "bar", + 42 => 24, + "multi" => array( + "dimensional" => array( + "array" => "foo" + ) + ) +); +$secondElement = getArray()[1]; +$arr[] = 56; +$arr[ ] = 56; +$arr[ ] = 56; +$arr +[ +] += +56 +; +$arr + +[ + +] + += + +56 + +; +echo $arr[somefunc($bar)]; +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(['foo', 5, 10, 'bar'], 'banana') ; +$a = array_fill_keys( [ 'foo' , 5 , 10 , 'bar' ] , 'banana' ) ; +$secondElement = getArray()[1]; +unset($arr[5]); +$arr["x"] = 42; +echo $arr[somefunc($bar)]; +$test = $array[foo]; + +$this->long->expression->before->array->statesArray[ + $state->getCirculationStateId() +] = $state->getName(); +$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'] + ] + ], + 'MagicMenu.MagicMenu' +]; + +$data = [ + + + 'value', + 'value', + + + // a comment + 'value', + 'value' + + +]; + +$arr = [ + 'niveisFederativos' => + app(NiveisFederativosRepository::class) + ->allOrderBy('nome') + ->pluck('nome', 'id'), + + 'tiposLeis' => + app(TiposLeisRepository::class) + ->allOrderBy('nome') + ->pluck('nome', 'id') +]; +[[$id1, $name1]] = $data; +[[$id1], [$id2], [$id]] = $data; +[[$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongOtherValue]] = $data; +["id" => $id1, "name" => $name1] = $data; +[["id" => $id1, "name" => $name1]] = $data; +[["veryVeryVeryVeryLongKey" => $veryVeryVeryVeryLongValue, "veryVeryVeryVeryLongOtherKey" => $veryVeryVeryVeryLongValue]] = $data; +$arr = [ + 'niveisFederativos' => + function () { + return "value"; + }, + + 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => + function () { + return "other-value"; + } +]; + +$singleLine = [ 'do' => [ 'collapse' => 'this' ]]; +$singleLine = array('do' => array('collapse' => 'this')); + +$multiline = [ + 'do' => [ + 'not' => 'collapse' + ] +]; +$multiline = ['do' => 'collapse' +]; +$multiline = array('do' => 'collapse' +); + +$mixed = [ + 'only' => [ 'partly' => 'collapsed' ] +]; +$mixed = [ 'only' => [ + 'partly' => ['coll', 'apsed'] +]]; + +$arr = array($var +); +$arr = array( +$var); +$arr = [$var +]; +$arr = [ +$var]; +$arr = [$foo => $bar]; +$arr = [$foo => +$bar]; + +$collapse = [ + "not", + "associative" +]; +$collapse = ["not", "associative" +]; + +$array = [ + 'key-one' => true ? 1 : 2, + 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' ? 1 : 2, + 'key-two' => true ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' : 2, + 'key-two' => true ? 1 : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', +]; + +$array = [ + 'key' => 1, + 'key' => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, + 'key' => 'string', + 'key' => __LINE__, + 'key' => "string \${var} {$var}", + 'key' => 'string +string + string', + 'key' => 'string' . 'other-string', + 'key' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', +]; + +$array = [ +'string +string +string' +]; + +$array = [ +'string +string +string', +'string +string +string' +]; + +$array = [ + 'key' => 'string +string +string', + 'other-key' => 'string +string +string' +]; + +$array = [ + 'string +string +string' => 'value', + 'string +string +string +other' => 'other-value' +]; + +$array = [ + 'string +string +string' => 'string +string +string', + 'string +string +string +other' => 'string +string +string' +]; + +$wp_admin_bar->add_menu(array( + 'id' => 'menu-toggle', + 'title' => + '' . + __('Menu') . + '', + 'href' => '#' +)); + +$k = [ + "blablah" => "aldkfkladfskladklsfkladklfkaldfadfkdaf" + + "adlfasdklfkldsklfakldsfkladsfkadsfladsfa" + + "dflkadfkladsfklkadlfkladlfkadklfjadlfdfdaf" +]; + +$o = [ + "somethingThatsAReallyLongPropName" => + $obj->props->cardType === $AwesomizerCardEnum->SEEFIRST, +]; + +// spread +$var = ['banana', 'orange', ...$parts, 'watermelon']; +$var = [...$arr1]; +$var = [0, ...$arr1]; +$var = array(...$arr1, ...$arr2, 111); +$var = [...$arr1, ...$arr1]; +$var = [...getArr(), 'c']; +$var = [...new ArrayIterator(['a', 'b', 'c'])]; + +=====================================output===================================== + 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, +]; +$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, +]; +$short_keyed_test = [ + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, +]; +$short_keyed_test = [ + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, +]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$array = [ + 1 => "a", + "1" => "b", + 1.5 => "c", + true => "d", +]; +$array = ["a", "b", 6 => "c", "d"]; +$array = [ + "foo" => "bar", + 42 => 24, + "multi" => [ + "dimensional" => [ + "array" => "foo", + ], + ], +]; +$secondElement = getArray()[1]; +$arr[] = 56; +$arr[] = 56; +$arr[] = 56; +$arr[] = 56; +$arr[] = 56; +echo $arr[somefunc($bar)]; +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"); +$secondElement = getArray()[1]; +unset($arr[5]); +$arr["x"] = 42; +echo $arr[somefunc($bar)]; +$test = $array[foo]; + +$this->long->expression->before->array->statesArray[ + $state->getCirculationStateId() +] = $state->getName(); +$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"], + ], + ], + "MagicMenu.MagicMenu", +]; + +$data = [ + "value", + "value", + + // a comment + "value", + "value", +]; + +$arr = [ + "niveisFederativos" => app(NiveisFederativosRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), + + "tiposLeis" => app(TiposLeisRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), +]; +[[$id1, $name1]] = $data; +[[$id1], [$id2], [$id]] = $data; +[ + [ + $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongOtherValue, + ], +] = $data; +["id" => $id1, "name" => $name1] = $data; +[["id" => $id1, "name" => $name1]] = $data; +[ + [ + "veryVeryVeryVeryLongKey" => $veryVeryVeryVeryLongValue, + "veryVeryVeryVeryLongOtherKey" => $veryVeryVeryVeryLongValue, + ], +] = $data; +$arr = [ + "niveisFederativos" => function () { + return "value"; + }, + + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => function () { + return "other-value"; + }, +]; + +$singleLine = ["do" => ["collapse" => "this"]]; +$singleLine = ["do" => ["collapse" => "this"]]; + +$multiline = [ + "do" => [ + "not" => "collapse", + ], +]; +$multiline = ["do" => "collapse"]; +$multiline = ["do" => "collapse"]; + +$mixed = [ + "only" => ["partly" => "collapsed"], +]; +$mixed = [ + "only" => [ + "partly" => ["coll", "apsed"], + ], +]; + +$arr = [$var]; +$arr = [$var]; +$arr = [$var]; +$arr = [$var]; +$arr = [$foo => $bar]; +$arr = [$foo => $bar]; + +$collapse = ["not", "associative"]; +$collapse = ["not", "associative"]; + +$array = [ + "key-one" => true ? 1 : 2, + "key-two" => "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + ? 1 + : 2, + "key-two" => true + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + : 2, + "key-two" => true + ? 1 + : "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", + "key-two" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + : "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", +]; + +$array = [ + "key" => 1, + "key" => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, + "key" => "string", + "key" => __LINE__, + "key" => "string \${var} {$var}", + "key" => 'string +string + string', + "key" => "string" . "other-string", + "key" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", +]; + +$array = [ + 'string +string +string', +]; + +$array = [ + 'string +string +string', + 'string +string +string', +]; + +$array = [ + "key" => 'string +string +string', + "other-key" => 'string +string +string', +]; + +$array = [ + 'string +string +string' => "value", + 'string +string +string +other' => "other-value", +]; + +$array = [ + 'string +string +string' => 'string +string +string', + 'string +string +string +other' => 'string +string +string', +]; + +$wp_admin_bar->add_menu([ + "id" => "menu-toggle", + "title" => + '' . + __("Menu") . + "", + "href" => "#", +]); + +$k = [ + "blablah" => + "aldkfkladfskladklsfkladklfkaldfadfkdaf" + + "adlfasdklfkldsklfakldsfkladsfkadsfladsfa" + + "dflkadfkladsfklkadlfkladlfkadklfjadlfdfdaf", +]; + +$o = [ + "somethingThatsAReallyLongPropName" => + $obj->props->cardType === $AwesomizerCardEnum->SEEFIRST, +]; + +// spread +$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"])]; + +================================================================================ +`; + +exports[`arrays.php 2`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "5.3" +printWidth: 80 + | printWidth +=====================================input====================================== + 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 + +) + +; +$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 + +] + +; +$short_keyed_test = array('reallyreallyreallyreallylongkey' => 1248, 'otherkey' => 234, 'one more' => $hi); +$short_keyed_test = ['reallyreallyreallyreallylongkey' => 1248, 'otherkey' => 234, 'one more' => $hi]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] ; +$foo = $bar [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] ; +$foo = $bar +[ +1 +] +[ +2 +] +[ +3 +] +[ +4 +] +[ +5 +] +[ +6 +] +; +$foo = $bar + +[ + +1 + +] + +[ + +2 + +] + +[ + +3 + +] + +[ + +4 + +] + +[ + +5 + +] + +[ + +6 + +] + +; +$array = array( + 1 => "a", + "1" => "b", + 1.5 => "c", + true => "d", +); +$array = array( + "a", + "b", + 6 => "c", + "d", +); +$array = array( + "foo" => "bar", + 42 => 24, + "multi" => array( + "dimensional" => array( + "array" => "foo" + ) + ) +); +$secondElement = getArray()[1]; +$arr[] = 56; +$arr[ ] = 56; +$arr[ ] = 56; +$arr +[ +] += +56 +; +$arr + +[ + +] + += + +56 + +; +echo $arr[somefunc($bar)]; +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(['foo', 5, 10, 'bar'], 'banana') ; +$a = array_fill_keys( [ 'foo' , 5 , 10 , 'bar' ] , 'banana' ) ; +$secondElement = getArray()[1]; +unset($arr[5]); +$arr["x"] = 42; +echo $arr[somefunc($bar)]; +$test = $array[foo]; + +$this->long->expression->before->array->statesArray[ + $state->getCirculationStateId() +] = $state->getName(); +$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'] + ] + ], + 'MagicMenu.MagicMenu' +]; + +$data = [ + + + 'value', + 'value', + + + // a comment + 'value', + 'value' + + +]; + +$arr = [ + 'niveisFederativos' => + app(NiveisFederativosRepository::class) + ->allOrderBy('nome') + ->pluck('nome', 'id'), + + 'tiposLeis' => + app(TiposLeisRepository::class) + ->allOrderBy('nome') + ->pluck('nome', 'id') +]; +[[$id1, $name1]] = $data; +[[$id1], [$id2], [$id]] = $data; +[[$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongOtherValue]] = $data; +["id" => $id1, "name" => $name1] = $data; +[["id" => $id1, "name" => $name1]] = $data; +[["veryVeryVeryVeryLongKey" => $veryVeryVeryVeryLongValue, "veryVeryVeryVeryLongOtherKey" => $veryVeryVeryVeryLongValue]] = $data; +$arr = [ + 'niveisFederativos' => + function () { + return "value"; + }, + + 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey' => + function () { + return "other-value"; + } +]; + +$singleLine = [ 'do' => [ 'collapse' => 'this' ]]; +$singleLine = array('do' => array('collapse' => 'this')); + +$multiline = [ + 'do' => [ + 'not' => 'collapse' + ] +]; +$multiline = ['do' => 'collapse' +]; +$multiline = array('do' => 'collapse' +); + +$mixed = [ + 'only' => [ 'partly' => 'collapsed' ] +]; +$mixed = [ 'only' => [ + 'partly' => ['coll', 'apsed'] +]]; + +$arr = array($var +); +$arr = array( +$var); +$arr = [$var +]; +$arr = [ +$var]; +$arr = [$foo => $bar]; +$arr = [$foo => +$bar]; + +$collapse = [ + "not", + "associative" +]; +$collapse = ["not", "associative" +]; + +$array = [ + 'key-one' => true ? 1 : 2, + 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' ? 1 : 2, + 'key-two' => true ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' : 2, + 'key-two' => true ? 1 : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + 'key-two' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + ? 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + : 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', +]; + +$array = [ + 'key' => 1, + 'key' => 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111, + 'key' => 'string', + 'key' => __LINE__, + 'key' => "string \${var} {$var}", + 'key' => 'string +string + string', + 'key' => 'string' . 'other-string', + 'key' => 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' . + 'VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', +]; + +$array = [ +'string +string +string' +]; + +$array = [ +'string +string +string', +'string +string +string' +]; + +$array = [ + 'key' => 'string +string +string', + 'other-key' => 'string +string +string' +]; + +$array = [ + 'string +string +string' => 'value', + 'string +string +string +other' => 'other-value' +]; + +$array = [ + 'string +string +string' => 'string +string +string', + 'string +string +string +other' => 'string +string +string' +]; + +$wp_admin_bar->add_menu(array( + 'id' => 'menu-toggle', + 'title' => + '' . + __('Menu') . + '', + 'href' => '#' +)); + +$k = [ + "blablah" => "aldkfkladfskladklsfkladklfkaldfadfkdaf" + + "adlfasdklfkldsklfakldsfkladsfkadsfladsfa" + + "dflkadfkladsfklkadlfkladlfkadklfjadlfdfdaf" +]; + +$o = [ + "somethingThatsAReallyLongPropName" => + $obj->props->cardType === $AwesomizerCardEnum->SEEFIRST, +]; + +// spread +$var = ['banana', 'orange', ...$parts, 'watermelon']; +$var = [...$arr1]; +$var = [0, ...$arr1]; +$var = array(...$arr1, ...$arr2, 111); +$var = [...$arr1, ...$arr1]; +$var = [...getArr(), 'c']; +$var = [...new ArrayIterator(['a', 'b', 'c'])]; + +=====================================output===================================== + 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, +); +$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, +); +$short_keyed_test = array( + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, +); +$short_keyed_test = array( + "reallyreallyreallyreallylongkey" => 1248, + "otherkey" => 234, + "one more" => $hi, +); +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$foo = $bar[1][2][3][4][5][6]; +$array = array( + 1 => "a", + "1" => "b", + 1.5 => "c", + true => "d", +); +$array = array("a", "b", 6 => "c", "d"); +$array = array( + "foo" => "bar", + 42 => 24, + "multi" => array( + "dimensional" => array( + "array" => "foo", + ), + ), +); +$secondElement = getArray()[1]; +$arr[] = 56; +$arr[] = 56; +$arr[] = 56; +$arr[] = 56; +$arr[] = 56; +echo $arr[somefunc($bar)]; +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"); +$secondElement = getArray()[1]; +unset($arr[5]); +$arr["x"] = 42; +echo $arr[somefunc($bar)]; +$test = $array[foo]; + +$this->long->expression->before->array->statesArray[ + $state->getCirculationStateId() +] = $state->getName(); +$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"), + ), + ), + "MagicMenu.MagicMenu", +); + +$data = array( + "value", + "value", + + // a comment + "value", + "value", +); + +$arr = array( + "niveisFederativos" => app(NiveisFederativosRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), + + "tiposLeis" => app(TiposLeisRepository::class) + ->allOrderBy("nome") + ->pluck("nome", "id"), +); +[[$id1, $name1]] = $data; +[[$id1], [$id2], [$id]] = $data; +[ + [ + $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue, + $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongOtherValue, + ], +] = $data; +["id" => $id1, "name" => $name1] = $data; +[["id" => $id1, "name" => $name1]] = $data; +[ + [ + "veryVeryVeryVeryLongKey" => $veryVeryVeryVeryLongValue, + "veryVeryVeryVeryLongOtherKey" => $veryVeryVeryVeryLongValue, + ], +] = $data; +$arr = array( + "niveisFederativos" => function () { + return "value"; + }, + + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongKey" => function () { + return "other-value"; + }, +); + +$singleLine = array("do" => array("collapse" => "this")); +$singleLine = array("do" => array("collapse" => "this")); + +$multiline = array( + "do" => array( + "not" => "collapse", + ), +); +$multiline = array("do" => "collapse"); +$multiline = array("do" => "collapse"); + +$mixed = array( + "only" => array("partly" => "collapsed"), +); +$mixed = array( + "only" => array( + "partly" => array("coll", "apsed"), + ), +); + +$arr = array($var); +$arr = array($var); +$arr = array($var); +$arr = array($var); +$arr = array($foo => $bar); +$arr = array($foo => $bar); + +$collapse = array("not", "associative"); +$collapse = array("not", "associative"); + +$array = array( + "key-one" => true ? 1 : 2, + "key-two" => "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + ? 1 + : 2, + "key-two" => true + ? "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" + : 2, + "key-two" => true + ? 1 + : "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 +string + string', + "key" => "string" . "other-string", + "key" => + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" . + "VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", +); + +$array = array( + 'string +string +string', +); + +$array = array( + 'string +string +string', + 'string +string +string', +); + +$array = array( + "key" => 'string +string +string', + "other-key" => 'string +string +string', +); + +$array = array( + 'string +string +string' => "value", + 'string +string +string +other' => "other-value", +); + +$array = array( + 'string +string +string' => 'string +string +string', + 'string +string +string +other' => 'string +string +string', +); + +$wp_admin_bar->add_menu(array( + "id" => "menu-toggle", + "title" => + '' . + __("Menu") . + "", + "href" => "#", +)); + +$k = array( + "blablah" => + "aldkfkladfskladklsfkladklfkaldfadfkdaf" + + "adlfasdklfkldsklfakldsfkladsfkadsfladsfa" + + "dflkadfkladsfklkadlfkladlfkadklfjadlfdfdaf", +); + +$o = array( + "somethingThatsAReallyLongPropName" => + $obj->props->cardType === $AwesomizerCardEnum->SEEFIRST, +); + +// spread +$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"))); + +================================================================================ +`; + +exports[`single.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +props->cardType === $AwesomizerCardEnum->SEEFIRST, ]; +// spread +$var = ['banana', 'orange', ...$parts, 'watermelon']; +$var = [...$arr1]; +$var = [0, ...$arr1]; +$var = array(...$arr1, ...$arr2, 111); +$var = [...$arr1, ...$arr1]; +$var = [...getArr(), 'c']; +$var = [...new ArrayIterator(['a', 'b', 'c'])]; diff --git a/tests/array/jsfmt.spec.js b/tests/array/jsfmt.spec.js deleted file mode 100644 index e395434ee..000000000 --- a/tests/array/jsfmt.spec.js +++ /dev/null @@ -1 +0,0 @@ -run_spec(__dirname, ["php"]); 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.mjs.snap b/tests/arrowfunc/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..30788bd75 --- /dev/null +++ b/tests/arrowfunc/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,35 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`arrowfunc.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + "something"; +$var = fn($arg) => "something"; +$var = fn(&$arg) => "something"; +$var = fn($arg, $arg, $arg) => "something"; +$var = fn($arg, $arg, $arg): string => "something"; +$var = fn($arg, $arg, $arg): ?string => "something"; +$var = static fn($arg, $arg, $arg) => "something"; +// $var = fn(): ?string => "something"; + +call(fn($arg) => $arg); + +=====================================output===================================== + "something"; +$var = fn($arg) => "something"; +$var = fn(&$arg) => "something"; +$var = fn($arg, $arg, $arg) => "something"; +$var = fn($arg, $arg, $arg): string => "something"; +$var = fn($arg, $arg, $arg): ?string => "something"; +$var = static fn($arg, $arg, $arg) => "something"; +// $var = fn(): ?string => "something"; + +call(fn($arg) => $arg); + +================================================================================ +`; diff --git a/tests/arrowfunc/arrowfunc.php b/tests/arrowfunc/arrowfunc.php new file mode 100644 index 000000000..4a0250631 --- /dev/null +++ b/tests/arrowfunc/arrowfunc.php @@ -0,0 +1,11 @@ + "something"; +$var = fn($arg) => "something"; +$var = fn(&$arg) => "something"; +$var = fn($arg, $arg, $arg) => "something"; +$var = fn($arg, $arg, $arg): string => "something"; +$var = fn($arg, $arg, $arg): ?string => "something"; +$var = static fn($arg, $arg, $arg) => "something"; +// $var = fn(): ?string => "something"; + +call(fn($arg) => $arg); 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 88% rename from tests/assign/__snapshots__/jsfmt.spec.js.snap rename to tests/assign/__snapshots__/jsfmt.spec.mjs.snap index 7d05cc95d..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 = @@ -182,19 +182,19 @@ $computedDescriptionLines = $oneVeryVeryVeryVeryVeryVeryVeryLongVariable, $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, - $fourVeryVeryVeryVeryVeryVeryVeryLongVariable + $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, ] = $arr; [ $oneVeryVeryVeryVeryVeryVeryVeryLongVariable, $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, - $fourVeryVeryVeryVeryVeryVeryVeryLongVariable + $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, ] = $test ? $trueExpr : $falseExpr; [ $oneVeryVeryVeryVeryVeryVeryVeryLongVariable, $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, - $fourVeryVeryVeryVeryVeryVeryVeryLongVariable + $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, ] = $veryVeryVeryVeryVeryVeryVeryLongVariable ? $veryVeryVeryVeryVeryVeryVeryLongVariable : $veryVeryVeryVeryVeryVeryVeryLongVariable; @@ -202,22 +202,22 @@ $computedDescriptionLines = $oneVeryVeryVeryVeryVeryVeryVeryLongVariable, $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, - $fourVeryVeryVeryVeryVeryVeryVeryLongVariable -] = $test . 'string' ? $trueExpr : $falseExpr; + $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, +] = $test . "string" ? $trueExpr : $falseExpr; [ $oneVeryVeryVeryVeryVeryVeryVeryLongVariable, $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, - $fourVeryVeryVeryVeryVeryVeryVeryLongVariable + $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, ] = $arr || []; [ $oneVeryVeryVeryVeryVeryVeryVeryLongVariable, $twoVeryVeryVeryVeryVeryVeryVeryLongVariable, $threeVeryVeryVeryVeryVeryVeryVeryLongVariable, - $fourVeryVeryVeryVeryVeryVeryVeryLongVariable + $fourVeryVeryVeryVeryVeryVeryVeryLongVariable, ] = $arr || [ - 'key' => 'value', - 'otherKey' => 'otherValue' + "key" => "value", + "otherKey" => "otherValue", ]; for ($i = 0, $len = $arr->length; $i < $len; $i++) { @@ -233,25 +233,25 @@ $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 = $var->insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = - $var->insertReallyReallyReally{$ReallyReallyReallyReallyReallyLongName}; + $var->insertReallyReallyReally[$ReallyReallyReallyReallyReallyLongName]; $component = Foo::$insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = $a::$insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; -$component = (new Foo()) +$component = new Foo() ->insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = (clone $a) ->insertReallyReallyReallyReallyReallyReallyReallyReallyLongName; @@ -259,14 +259,14 @@ $component = (clone $a) $component = $var->insertReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName; $component = - $var->insertReallyReallyReallyReallyReallyReallyReallyReallyReally{ + $var->insertReallyReallyReallyReallyReallyReallyReallyReallyReally[ $ReallyReallyReallyReallyReallyReallyLongName - }; + ]; $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.mjs.snap b/tests/assignref/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..a25b1c2d5 --- /dev/null +++ b/tests/assignref/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,101 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`assignref.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== +registered[1]; +$variable['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'] = &$variable->registered[1]; + +$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; +$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = &$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; + +$test = + $superSupersuperSupersuperSupersuperSupersuperSuperLong + ->exampleOfOrderOfGetterAndSetterReordered; +$test = + &$superSupersuperSupersuperSupersuperSupersuperSuperLong + ->exampleOfOrderOfGetterAndSetterReordered; + +$this->long->expression->before->array->statesArray[$state->getCirculationStateId()] = $state->getName(); +$this->long->expression->before->array->statesArray[$state->getCirculationStateId()] = &$state->getName(); + +$cached_var = &drupal_static(__FUNCTION__); + +$test = ['key' => &$value]; +$test = ['key' => &$value['something']]; + +=====================================output===================================== +registered[1]; +$variable[ + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" +] = &$variable->registered[1]; + +$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; +$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = &$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; + +$test = + $superSupersuperSupersuperSupersuperSupersuperSuperLong->exampleOfOrderOfGetterAndSetterReordered; +$test = + &$superSupersuperSupersuperSupersuperSupersuperSuperLong->exampleOfOrderOfGetterAndSetterReordered; + +$this->long->expression->before->array->statesArray[ + $state->getCirculationStateId() +] = $state->getName(); +$this->long->expression->before->array->statesArray[ + $state->getCirculationStateId() +] = &$state->getName(); + +$cached_var = &drupal_static(__FUNCTION__); + +$test = ["key" => &$value]; +$test = ["key" => &$value["something"]]; + +================================================================================ +`; diff --git a/tests/assignref/assignref.php b/tests/assignref/assignref.php new file mode 100644 index 000000000..d215d415e --- /dev/null +++ b/tests/assignref/assignref.php @@ -0,0 +1,36 @@ +registered[1]; +$variable['veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString'] = &$variable->registered[1]; + +$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; +$obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = $obj->veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongProperty = &$veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongValue; + +$test = + $superSupersuperSupersuperSupersuperSupersuperSuperLong + ->exampleOfOrderOfGetterAndSetterReordered; +$test = + &$superSupersuperSupersuperSupersuperSupersuperSuperLong + ->exampleOfOrderOfGetterAndSetterReordered; + +$this->long->expression->before->array->statesArray[$state->getCirculationStateId()] = $state->getName(); +$this->long->expression->before->array->statesArray[$state->getCirculationStateId()] = &$state->getName(); + +$cached_var = &drupal_static(__FUNCTION__); + +$test = ['key' => &$value]; +$test = ['key' => &$value['something']]; 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 81% rename from tests/bin/__snapshots__/jsfmt.spec.js.snap rename to tests/bin/__snapshots__/jsfmt.spec.mjs.snap index d26d36e5c..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===================================== @@ -224,7 +224,7 @@ return $var > $someOtherReallyReallyLongVariable ? true : false; return $someOtherReallyReallyLongVariable > $someOtherReallyReallyLongVariable ? true : false; return $someOtherReallyReallyReallyReallyReallyReallyLongVariable > $someOtherReallyReallyReallyReallyReallyReallyLongVariable ? true : false; -fn( +func( $bifornCringerMoshedPerplexSawder, $askTrovenaBeenaDependsRowans, $glimseGlyphsHazardNoopsTieTie === averredBathersBoxroomBuggyNurl && @@ -324,6 +324,22 @@ $var = 2244 instanceof \\Exception; $var = true instanceof \\Exception; $var = 100 + 1 instanceof \\Exception; +// Fetches the value of $_GET['user'] and returns 'nobody' +// if it does not exist. +$username = $_GET['user'] ?? 'nobody'; +// This is equivalent to: +$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'; + +// The following lines are doing the same +$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'; + =====================================output===================================== reallyLong->testPropertyName = - 'a' . $someOtherTest . 'n' . $oneLastOneToMakeLineLong; + "a" . $someOtherTest . "n" . $oneLastOneToMakeLineLong; -'tesssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssst' . - 'test'; +"tesssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssst" . + "test"; $someReallyReallyReallyLongBooleanVariable + $someReallyReallyReallyLongBooleanVariable; @@ -406,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); @@ -425,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; @@ -439,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; @@ -448,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 = @@ -579,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 || []) { } @@ -602,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); ~( @@ -634,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); @@ -644,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; @@ -664,57 +680,56 @@ return $someOtherReallyReallyReallyReallyReallyReallyLongVariable > ? true : false; -fn( +func( $bifornCringerMoshedPerplexSawder, $askTrovenaBeenaDependsRowans, $glimseGlyphsHazardNoopsTieTie === averredBathersBoxroomBuggyNurl && $anodyneCondosMalateOverateRetinol ? $annularCooeedSplicesWalksWayWay - : $kochabCooieGameOnOboleUnweave + : $kochabCooieGameOnOboleUnweave, ); $var = $a ?? $b; -$var = $a ?? $b ?? $c; -$var = $a ?? $b ?? $c ?? $d; -$var = $a ?? $b ?? $c ?? $d ?? call($a, $b, $c); -$var = $a ?? $b ?? $c ?? $d ?? $var ? 1 : 2; +$var = $a ?? ($b ?? $c); +$var = $a ?? ($b ?? ($c ?? $d)); +$var = $a ?? ($b ?? ($c ?? ($d ?? call($a, $b, $c)))); +$var = $a ?? ($b ?? ($c ?? ($d ?? $var))) ? 1 : 2; $var = $someOtherReallyReallyLongVariable ?? $someOtherReallyReallyLongVariable; $var = $someOtherReallyReallyReallyLongVariable ?? $someOtherReallyReallyReallyLongVariable; $var = $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable; + ($someOtherReallyReallyLongVariable ?? $someOtherReallyReallyLongVariable); $var = $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable; + ($someOtherReallyReallyLongVariable ?? + ($someOtherReallyReallyLongVariable ?? + $someOtherReallyReallyLongVariable)); $var = $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - call( - $someOtherReallyReallyLongVariable, - $someOtherReallyReallyLongVariable, - $someOtherReallyReallyLongVariable - ); + ($someOtherReallyReallyLongVariable ?? + ($someOtherReallyReallyLongVariable ?? + ($someOtherReallyReallyLongVariable ?? + call( + $someOtherReallyReallyLongVariable, + $someOtherReallyReallyLongVariable, + $someOtherReallyReallyLongVariable, + )))); $var = $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable + ($someOtherReallyReallyLongVariable ?? + ($someOtherReallyReallyLongVariable ?? + ($someOtherReallyReallyLongVariable ?? + $someOtherReallyReallyLongVariable))) ? $someOtherReallyReallyLongVariable : $someOtherReallyReallyLongVariable; $var = $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?? - $someOtherReallyReallyLongVariable ?: + ($someOtherReallyReallyLongVariable ?? + ($someOtherReallyReallyLongVariable ?? + ($someOtherReallyReallyLongVariable ?? + $someOtherReallyReallyLongVariable))) ?: $someOtherReallyReallyLongVariable; $var = $var instanceof Arrayable ? $var : $var; @@ -748,12 +763,12 @@ $callback = }; $callback = $var ?? - function () { + (function () { return true; } ?? - function () { - return true; - }; + function () { + return true; + }); $regex = '/ (\\\\\\\\)? # escaped with a backslash? @@ -813,12 +828,29 @@ 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; $var = 100 + 1 instanceof \\Exception; +// Fetches the value of $_GET['user'] and returns 'nobody' +// if it does not exist. +$username = $_GET["user"] ?? "nobody"; +// This is equivalent to: +$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"); + +// The following lines are doing the same +$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"; + ================================================================================ `; diff --git a/tests/bin/bin.php b/tests/bin/bin.php index e2a1d126b..4326c4a30 100644 --- a/tests/bin/bin.php +++ b/tests/bin/bin.php @@ -216,7 +216,7 @@ function f() return $someOtherReallyReallyLongVariable > $someOtherReallyReallyLongVariable ? true : false; return $someOtherReallyReallyReallyReallyReallyReallyLongVariable > $someOtherReallyReallyReallyReallyReallyReallyLongVariable ? true : false; -fn( +func( $bifornCringerMoshedPerplexSawder, $askTrovenaBeenaDependsRowans, $glimseGlyphsHazardNoopsTieTie === averredBathersBoxroomBuggyNurl && @@ -315,3 +315,19 @@ function () { $var = 2244 instanceof \Exception; $var = true instanceof \Exception; $var = 100 + 1 instanceof \Exception; + +// Fetches the value of $_GET['user'] and returns 'nobody' +// if it does not exist. +$username = $_GET['user'] ?? 'nobody'; +// This is equivalent to: +$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'; + +// The following lines are doing the same +$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'; 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 76% rename from tests/call/__snapshots__/jsfmt.spec.js.snap rename to tests/call/__snapshots__/jsfmt.spec.mjs.snap index 898e990df..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); @@ -367,7 +374,7 @@ $db->Execute($sql, [ $foobar, $somewhatLongParameter, $somewhatLongParameterX, - $somewhatLongParameterXYZ + $somewhatLongParameterXYZ, ]); $db->Execute( @@ -377,74 +384,74 @@ $db->Execute( $foobar, $somewhatLongParameter, $somewhatLongParameterX, - $somewhatLongParameterXYZ + $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, - array("foo" => "bar", "baz" => "buzz"), - $this->even->more->things->complicatedMethod() + ["foo" => "bar", "baz" => "buzz"], + $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(array( - 'foo' => 'bar', - 'buzz' => $this->is->nested(array( - 'complex' => 'stuff', - 'foo' => 'bar', - 'buzz' => 'bazz' - )) -)); +$some->other->thing([ + "foo" => "bar", + "buzz" => $this->is->nested([ + "complex" => "stuff", + "foo" => "bar", + "buzz" => "bazz", + ]), +]); $some->other->thing( - array( - 'foo' => 'bar', - 'buzz' => $this->is->nested(array(12, 34, 45, 67, 89)) - ), - array(11323123, 1231, 13231233243, 324234234) + [ + "foo" => "bar", + "buzz" => $this->is->nested([12, 34, 45, 67, 89]), + ], + [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(' @@ -602,23 +609,21 @@ string string string'); -$a - ->call( - $a, - ' +$a->call( + $a, + ' string string string', - $c - ) - ->call( - $a, - ' + $c, +)->call( + $a, + ' string string string', - $c - ); + $c, +); call("string $var string"); call("string $var string"); @@ -631,7 +636,7 @@ call( "string string string -$var" +$var", ); call(\`string $var string\`); @@ -645,54 +650,58 @@ call( \`string string string -$var\` +$var\`, ); call( <<foo)(); @@ -700,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) { @@ -759,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 5e63e544f..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 }; @@ -393,10 +391,10 @@ final class MyClass extends Bar implements iTemplate $d = (true or foo()); $c = (false xor foo()); - $array = array(1, 1, 1); + $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 92% rename from tests/cast/__snapshots__/jsfmt.spec.js.snap rename to tests/cast/__snapshots__/jsfmt.spec.mjs.snap index 32c63cb2a..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) [ "very-very-very-very-very-very-very-long-value-1", - "very-very-very-very-very-very-very-long-value-2" + "very-very-very-very-very-very-very-long-value-2", ] + ["test"]; $var = (int) $veryVeryVeryVeryVeryVeryVeryVeryLongVariable + @@ -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 {} @@ -916,6 +893,56 @@ final class BaseClass extends MyOtherClass implements MyInterface, MyOtherInterf abstract class BaseClass extends MyOtherClass implements MyInterface, MyOtherInterface, MyOtherOtherInterface {} +class User { + public int $id; + public string $name; + public ?string $b = 'foo'; + private Foo $prop; + protected static string $static = 'default'; + + public function __construct(int $id, string $name) { + $this->id = $id; + $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; +} + =====================================output===================================== other = $test_string; $this->current_version = @@ -983,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; } @@ -1015,7 +1048,7 @@ abstract class ReallyReallyReallyLongClassName public function reallyReallyReallyReallyReallyReallyReallyLongMethodName( $input, - $otherInput = 1 + $otherInput = 1, ) { return true; } @@ -1028,7 +1061,7 @@ abstract class ReallyReallyReallyLongClassName public function returnTypeTest(): string { - return 'hi'; + return "hi"; } final public static function bar() @@ -1045,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 @@ -1082,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 @@ -1108,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(); @@ -1126,12 +1157,8 @@ class FooBar { public $property; public $property2; - public function method() - { - } - public function method2() - { - } + public function method() {} + public function method2() {} } class FooBarFoo @@ -1142,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"]); } } @@ -1233,177 +1236,191 @@ 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 {} + +final readonly class BaseClass {} + +final readonly class BaseClass {} + +final class BaseClass extends MyOtherClass {} + +abstract class BaseClass extends MyOtherClass {} + +final readonly class BaseClass extends MyOtherClass {} + +final readonly class BaseClass extends MyOtherClass {} -abstract class BaseClass +final class BaseClass extends + MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass {} + +abstract class BaseClass extends + MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass {} + +final class BaseClass extends + MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass1 {} + +abstract class BaseClass extends + MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass1 {} + +final class BaseClass extends MyOtherClass implements + MyInterface, + MyOtherInterface, + MyOtherOtherInterface {} + +abstract class BaseClass extends MyOtherClass implements + MyInterface, + MyOtherInterface, + MyOtherOtherInterface {} + +class User { + public int $id; + public string $name; + public ?string $b = "foo"; + private Foo $prop; + protected static string $static = "default"; + + public function __construct(int $id, string $name) + { + $this->id = $id; + $this->name = $name; + } } -final class BaseClass extends MyOtherClass +class Promoted { + public function __construct( + public int $a, + private float $b, + protected string $d, + ) {} } -abstract class BaseClass extends MyOtherClass +readonly class ReadOnlyCls { + public string $myValue; } -final class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass +class FinalCost { + final public const FOO = "foo"; } -abstract class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass +// PHP 8.3 typed class constants +enum E { + const string TEST = "Test1"; // E::TEST is a string } -final class BaseClass extends - MyOtherVeryVeryVeryVeVeryVeryVeryVeryVeryLongClass1 +trait T { + const string TEST = E::TEST; // T::TEST is a string too } -abstract class BaseClass extends - MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass1 +interface I { + const string TEST = E::TEST; // I::TEST is a string as well } -final class BaseClass extends MyOtherClass implements - MyInterface, - MyOtherInterface, - MyOtherOtherInterface +class Foo implements I { + use T; + + const string TEST = E::TEST; // Foo::TEST must also be a string } -abstract class BaseClass extends MyOtherClass implements - MyInterface, - MyOtherInterface, - MyOtherOtherInterface +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 8f7dbaf66..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 {} @@ -280,3 +289,53 @@ abstract class BaseClass extends MyOtherVeryVeryVeryVeVeryVeryVeryVVeryLongClass final class BaseClass extends MyOtherClass implements MyInterface, MyOtherInterface, MyOtherOtherInterface {} abstract class BaseClass extends MyOtherClass implements MyInterface, MyOtherInterface, MyOtherOtherInterface {} + +class User { + public int $id; + public string $name; + public ?string $b = 'foo'; + private Foo $prop; + protected static string $static = 'default'; + + public function __construct(int $id, string $name) { + $this->id = $id; + $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 6d114fb19..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 91% rename from tests/closure/__snapshots__/jsfmt.spec.js.snap rename to tests/closure/__snapshots__/jsfmt.spec.mjs.snap index 28ac76d30..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,13 +264,13 @@ $rTDWU = function (array $array) use ($var1, $var2): int { $rTDWLU = function (array $array) use ( $longLongLongLongLongLongLongVar1, $longerLongerLongerLongerVar2, - $muchLongerVar3 + $muchLongerVar3, ): int { return array_sum($array); }; $var = function &() { - static $collection = array(); + static $collection = []; return $collection; }; @@ -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 91% rename from tests/comments/__snapshots__/jsfmt.spec.js.snap rename to tests/comments/__snapshots__/jsfmt.spec.mjs.snap index a87e3dd21..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===================================== @@ -111,14 +111,14 @@ $array = [ // comment // comment 1, // comment - 2 // comment + 2, // comment // comment ]; $array = [ /* comment */ /* comment */ /* comment */ 1 /* comment */ /* comment */, - /* comment */ 2 /* comment */ + /* comment */ 2 /* comment */, /* comment */ /* comment */ ]; @@ -126,7 +126,7 @@ $array = [ /* comment */ /* comment */ /* comment */ "foo" /* comment */ => /* comment */ "bar" /* comment */, - /* comment */ "bar" /* comment */ => /* comment */ "foo" /* comment */ + /* comment */ "bar" /* comment */ => /* comment */ "foo" /* comment */, /* comment */ /* comment */ ]; @@ -137,7 +137,7 @@ $array = [ 3, 4, 5, - 6 + 6, ]; $array = [ 1, @@ -145,25 +145,25 @@ $array = [ 3, 4, 5, - 6 // test + 6, // test ]; const FOO = [ //testing - 1 + 1, ]; return [ // foo - "bar" + "bar", ]; $array = [ - 'type' => [], - 'config' => [ + "type" => [], + "config" => [ // comments in nested arrays break things - 'key' => 1 + "key" => 1, ], - 'accepted' => [] + "accepted" => [], ]; // Comment @@ -175,43 +175,43 @@ $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", ]; -array(); // Comment +[]; // Comment -$array = array(); // Comment +$array = []; // Comment -$array = array( +$array = [ // Comment - 'string', - 'other-string' -); + "string", + "other-string", +]; call( - array() // Comment + [], // Comment ); -call(array( +call([ // Comment - 'string', - 'other-string' -)); + "string", + "other-string", +]); ================================================================================ `; @@ -224,50 +224,50 @@ printWidth: 80 =====================================input====================================== pricingQueryOfferResult->offer || + !$this->pricingQueryOfferResult->offer->offerGroup || + //!$this->pricingQuerySite->postcode || + ( // offer has a state but we don't + $this->pricingQueryOfferResult->offer->offerGroup->state_id + && !$this->pricingQuerySite->postcode->state_id + ) || + ( // if we have a state and the offer has a state and they don't match, reject + $this->pricingQuerySite->postcode + && $this->pricingQuerySite->postcode->state_id + && $this->pricingQueryOfferResult->offer->offerGroup->state_id + && $this->pricingQuerySite->postcode->state_id != $this->pricingQueryOfferResult->offer->offerGroup->state_id + ) +) { + $this->hasResult = false; + $this->removedReason = 'State Mismatch'; +} + +if ($bool0 + || $bool1 // if condition 1 + || $bool2 // if condition 2 +) { + $ok = true; +} =====================================output===================================== modelData) || + // arrays, countables ((is_array($this->modelData) || $this->modelData instanceof \\Countable) && 0 === count($this->modelData)) || // traversables that are not countable ($this->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 */; +$a = + 1 * // A + 2 * // B + 3; + +//check if the offer applies to this site +//state mismatch +if ( + !$this->pricingQueryOfferResult->offer || + !$this->pricingQueryOfferResult->offer->offerGroup || // offer has a state but we don't + //!$this->pricingQuerySite->postcode || + ($this->pricingQueryOfferResult->offer->offerGroup->state_id && + !$this->pricingQuerySite->postcode->state_id) || // if we have a state and the offer has a state and they don't match, reject + ($this->pricingQuerySite->postcode && + $this->pricingQuerySite->postcode->state_id && + $this->pricingQueryOfferResult->offer->offerGroup->state_id && + $this->pricingQuerySite->postcode->state_id != + $this->pricingQueryOfferResult->offer->offerGroup->state_id) +) { + $this->hasResult = false; + $this->removedReason = "State Mismatch"; +} + +if ( + $bool0 || + $bool1 || // if condition 1 + $bool2 // if condition 2 +) { + $ok = true; +} + ================================================================================ `; @@ -433,7 +504,6 @@ printWidth: 80 // Other comment - ================================================================================ `; @@ -518,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 ); @@ -578,7 +648,7 @@ $var = (int) // Comment =====================================output===================================== /* Comment */ bar(); $var = $a /* Comment */::/* Comment */ bar(); -$a /* Comment*/./*Comment*/ bar/* Comment */; +$a /* Comment*/->/*Comment*/ bar/* Comment */; $a/* Comment */['test']; -$a /* Comment */./* Comment */ bar(); +$a /* Comment */->/* Comment */ bar(); $a /* Comment */::/* Comment */ bar(); =====================================output===================================== @@ -632,15 +702,16 @@ $var = $var ->dump(); $var = $a /* Comment*/->/*Comment*/ bar; -$var = /* Comment */ $a['test']; +$var = $a /* Comment */["test"]; $var = $a /* Comment */ ->/* Comment */ bar(); -$var = /* Comment */ $a::/* Comment */ bar(); +$var = $a /* Comment */ + ::/* Comment */ bar(); -$a /* Comment*/ . /*Comment*/ bar /* Comment */; -/* Comment */ $a['test']; -$a /* Comment */ . /* Comment */ bar(); -/* Comment */ $a::/* Comment */ bar(); +$a /* Comment*/->/*Comment*/ bar /* Comment */; +$a /* Comment */["test"]; +$a /* Comment */->/* Comment */ bar(); +$a /* Comment */::/* Comment */ bar(); ================================================================================ `; @@ -788,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() { @@ -822,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 }; @@ -870,9 +943,7 @@ class ResponseMethodFailure // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} // 424 : Method failure class ResponseMethodFailure @@ -882,9 +953,7 @@ class ResponseMethodFailure // Some comment FooBar, // Another comment - BarBaz -{ -} + BarBaz {} // 424 : Method failure class ResponseMethodFailure @@ -894,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 { @@ -930,6 +991,8 @@ $var = new class { // Comment }; +$foo = /*a*/ new /* b */ class {}; + ================================================================================ `; @@ -983,14 +1046,13 @@ $var = new class { const CONSTANT = // Comment 1 // Comment 2 - 'string'; + "string"; }; $var = new class { - const CONSTANT = - // Comment 1 + const CONSTANT = // Comment 1 // Comment 2 - 'string'; + "string"; }; $var = new class { @@ -998,7 +1060,7 @@ $var = new class { const CONSTANT = // Comment 2 // Comment 3 - 'string'; + "string"; }; $var = new class { @@ -1007,7 +1069,7 @@ $var = new class { public const CONSTANT = // Comment 3 // Comment 4 - 'string'; + "string"; }; ================================================================================ @@ -1080,6 +1142,12 @@ $this return $arg; }); + +$foo = /** +* @param array{a: int, b: string} $bar +*/ +static fn (array $bar) => $bar; + =====================================output===================================== $bar; + ================================================================================ `; @@ -1384,10 +1458,10 @@ $test = foo // test }); -$constraint = new UniqueEntity(array( - 'message' => 'myMessage' +$constraint = new UniqueEntity([ + "message" => "myMessage", // no "em" option set -)); +]); return // parens test // some comment @@ -2278,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 @@ -2294,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 @@ -2356,7 +2430,7 @@ class Net_Sample * * @var string */ - var $foo = 'unknown'; + var $foo = "unknown"; /** * The status of life @@ -2460,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; @@ -2585,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"); } /** @@ -2604,9 +2678,7 @@ foreach ($connections as $sqlite) { * * @return string */ -function test($parameter1, $e) -{ -} +function test($parameter1, $e) {} ================================================================================ `; @@ -2673,22 +2745,22 @@ echo // Comment call( $veryVeryVeryVeryVeryVeryVeryLongArg, $veryVeryVeryVeryVeryVeryVeryLongArg, - $veryVeryVeryVeryVeryVeryVeryLongArg + $veryVeryVeryVeryVeryVeryVeryLongArg, ); echo // Comment <<>
@@ -4555,6 +4610,29 @@ $a = 1; ?> ================================================================================ `; +exports[`inline9.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + exports[`interface.php 1`] = ` ====================================options===================================== parsers: ["php"] @@ -4612,9 +4690,7 @@ interface IFoo // Comment interface IFoo extends // Comment - MyClass -{ -} + MyClass {} // Comment interface IFoo extends @@ -4623,18 +4699,12 @@ interface IFoo extends // Comment MyOtherClass, // Comment - OtherClass -{ -} + OtherClass {} -interface MyInterface -{ -} +interface MyInterface {} // Comment -interface MyInterface -{ -} +interface MyInterface {} interface MyInterface { @@ -4677,7 +4747,7 @@ if (isset(/* Comment */ $a[1] /* Comment */)) { if ( isset( // Comment - $a + $a, ) ) { } @@ -4685,7 +4755,7 @@ if ( if ( isset( // Comment - $a + $a, ) ) { } @@ -4706,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 +}; ================================================================================ `; @@ -4796,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 @@ -4830,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 ); } } @@ -5017,9 +5131,7 @@ class Foo namespace Acme; -class Foo -{ -} +class Foo {} ================================================================================ `; @@ -5061,9 +5173,7 @@ class Foo namespace Acme; -class Foo -{ -} +class Foo {} ================================================================================ `; @@ -5261,9 +5371,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5295,9 +5403,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5335,9 +5441,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5371,9 +5475,7 @@ namespace Monolog\\Formatter; * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5407,9 +5509,7 @@ namespace Monolog\\Formatter; // Comment * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5439,9 +5539,7 @@ namespace Monolog\\Formatter; // Comment * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5473,9 +5571,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5511,9 +5607,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5550,9 +5644,7 @@ namespace Monolog\\Formatter; /* Comment */ * * @author Dominik Liebler */ -class FlowdockFormatter -{ -} +class FlowdockFormatter {} ================================================================================ `; @@ -5763,6 +5855,16 @@ $a = new class() { // }}} }; +$a = new // Comment +Foo(); +$a = new class // Comment +{ +}; +$a = new // Comment + Foo(); +$a = new class // Comment +{ +}; =====================================output===================================== 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; @@ -5934,6 +6035,17 @@ $a = new class { // }}} }; +$a = new // Comment + Foo(); +$a = new class { + // Comment +}; +$a = new // Comment + Foo(); +$a = new class { + // Comment +}; + ================================================================================ `; @@ -6051,10 +6163,34 @@ printWidth: 80 echo /*Comment*/$a/*Comment*/[/*Comment*/1/*Comment*/]/*Comment*/; +$var = $var + // Comment + ['foo'] // Comment + // Comment + ['bar'] // Comment + // Comment + ['baz'] // Comment + // Comment + ['qqq']; =====================================output===================================== 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 = @@ -6517,7 +6748,8 @@ static // Comment // Comment static // Comment - $a = // Comment // Comment + $a = // Comment + // Comment // Comment // Comment 2021; @@ -6535,10 +6767,29 @@ printWidth: 80 echo Foo/*Comment*/::/*Comment*/bar(); +$var = $var + // Comment + ::each() // Comment + // Comment + ::map() // Comment + // Comment + ::first() // Comment + // Comment + ::dump(); =====================================output===================================== 'val' ]; -$obj // Comment +$obj // Comment 2 = [ 'key' => 'val' ]; -$obj = [ // Comment +$obj = [ // Comment 3 'key' => 'val' ]; $obj = [ -// Comment +// Comment 4 'key' => 'val' ]; -$obj = // Comment +$obj = // Comment 5 [ 'val' ]; -$obj // Comment +$obj // Comment 6 = [ 'val' ]; -$obj = [ // Comment +$obj = [ // Comment 7 'val' ]; $obj = [ -// Comment +// Comment 8 'val' ]; -$obj = // Comment +$obj = // Comment 9 'val'; $obj = // Comment @@ -7122,48 +7368,44 @@ $obj = // Comment 'val' + "key" => "val", ]; -$obj = - // Comment - [ - 'key' => 'val' - ]; +$obj = [ // Comment 2 + "key" => "val", +]; $obj = [ - // Comment - 'key' => 'val' + // Comment 3 + "key" => "val", ]; $obj = [ - // Comment - 'key' => 'val' + // Comment 4 + "key" => "val", ]; $obj = - // Comment - ['val']; + // Comment 5 + ["val"]; -$obj = - // Comment - ['val']; +$obj = ["val"]; // Comment 6 $obj = [ - // Comment - 'val' + // Comment 7 + "val", ]; $obj = [ - // Comment - 'val' + // Comment 8 + "val", ]; $obj = - // Comment - 'val'; + // Comment 9 + "val"; $obj = // Comment @@ -7283,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/assign.php b/tests/comments/assign.php index 83e76ec5c..a2ac7643b 100644 --- a/tests/comments/assign.php +++ b/tests/comments/assign.php @@ -1,49 +1,49 @@ pricingQueryOfferResult->offer || + !$this->pricingQueryOfferResult->offer->offerGroup || + //!$this->pricingQuerySite->postcode || + ( // offer has a state but we don't + $this->pricingQueryOfferResult->offer->offerGroup->state_id + && !$this->pricingQuerySite->postcode->state_id + ) || + ( // if we have a state and the offer has a state and they don't match, reject + $this->pricingQuerySite->postcode + && $this->pricingQuerySite->postcode->state_id + && $this->pricingQueryOfferResult->offer->offerGroup->state_id + && $this->pricingQuerySite->postcode->state_id != $this->pricingQueryOfferResult->offer->offerGroup->state_id + ) +) { + $this->hasResult = false; + $this->removedReason = 'State Mismatch'; +} + +if ($bool0 + || $bool1 // if condition 1 + || $bool2 // if condition 2 +) { + $ok = true; +} \ No newline at end of file diff --git a/tests/comments/chains.php b/tests/comments/chains.php index 9b366f1c6..92e8c5bb8 100644 --- a/tests/comments/chains.php +++ b/tests/comments/chains.php @@ -15,7 +15,7 @@ $var = $a /* Comment */->/* Comment */ bar(); $var = $a /* Comment */::/* Comment */ bar(); -$a /* Comment*/./*Comment*/ bar/* Comment */; +$a /* Comment*/->/*Comment*/ bar/* Comment */; $a/* Comment */['test']; -$a /* Comment */./* Comment */ bar(); +$a /* Comment */->/* Comment */ bar(); $a /* Comment */::/* Comment */ bar(); 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/closure.php b/tests/comments/closure.php index 9b289ef3d..312f7b2eb 100644 --- a/tests/comments/closure.php +++ b/tests/comments/closure.php @@ -34,3 +34,9 @@ return $arg; }); + + +$foo = /** +* @param array{a: int, b: string} $bar +*/ +static fn (array $bar) => $bar; diff --git a/tests/comments/functions.php b/tests/comments/functions.php index 4b3fa3c34..4360fc1f1 100644 --- a/tests/comments/functions.php +++ b/tests/comments/functions.php @@ -4,9 +4,9 @@ function foo(/* 1 */ $a /* 2 */ = /* 3 */ 1 /* 4 */) {} function foo($a): /* 5 */ ?string /* 6 */ {} function foo(/* 1 */ $a /* 2 */ = /* 3 */ 1 /* 4 */): /* 5 */ ?string /* 6 */ {} function emptyFn(/*Comment */) {} -function fn( // Comment +function func( // Comment ) {} -function fn( +function func( // Comment ) {} function foo( 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/comments/new.php b/tests/comments/new.php index 602408458..37af26e0c 100644 --- a/tests/comments/new.php +++ b/tests/comments/new.php @@ -161,3 +161,14 @@ function setFoo($arg1, $arg2 = 0) // }}} }; + +$a = new // Comment +Foo(); +$a = new class // Comment +{ +}; +$a = new // Comment + Foo(); +$a = new class // Comment +{ +}; \ No newline at end of file diff --git a/tests/comments/offsetlookup.php b/tests/comments/offsetlookup.php index 5d4d70915..4af6939cd 100644 --- a/tests/comments/offsetlookup.php +++ b/tests/comments/offsetlookup.php @@ -1,3 +1,13 @@ 'val' ]; -$obj // Comment +$obj // Comment 2 = [ 'key' => 'val' ]; -$obj = [ // Comment +$obj = [ // Comment 3 'key' => 'val' ]; $obj = [ -// Comment +// Comment 4 'key' => 'val' ]; -$obj = // Comment +$obj = // Comment 5 [ 'val' ]; -$obj // Comment +$obj // Comment 6 = [ 'val' ]; -$obj = [ // Comment +$obj = [ // Comment 7 'val' ]; $obj = [ -// Comment +// Comment 8 'val' ]; -$obj = // Comment +$obj = // Comment 9 'val'; $obj = // 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 320f648f1..000000000 --- a/tests/encapsed/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,845 +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 = <<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 = - <<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 <<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 = << '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 @@ -131,7 +131,7 @@ foreach ( $points as [ "veryVeryVeryVeryVeryVeryVeryLongKey" => $x, - "veryVeryVeryVeryVeryVeryVeryLongKey" => $y + "veryVeryVeryVeryVeryVeryVeryLongKey" => $y, ] ) { var_dump($x, $y); @@ -141,7 +141,7 @@ foreach ( $points as [ "x" => $veryVeryVeryVeryVeryVeryVeryVeryLongValue, - "y" => $veryVeryVeryVeryVeryVeryVeryVeryLongValue + "y" => $veryVeryVeryVeryVeryVeryVeryVeryLongValue, ] ) { var_dump($x, $y); @@ -151,7 +151,7 @@ foreach ( $points as [ "veryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryLongX, - "veryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryLongY + "veryVeryVeryVeryVeryVeryVeryLongKey" => $veryVeryVeryVeryVeryVeryVeryVeryLongY, ] ) { var_dump($x, $y); @@ -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.js.snap deleted file mode 100644 index 5c864386c..000000000 --- a/tests/ignore/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,67 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ignore.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - - "array", - "in" => function($all) { return "history"; }, - "of" => [ - "php" - ] -];} - -=====================================output===================================== - - "array", - "in" => function($all) { return "history"; }, - "of" => [ - "php" - ] -];} - -================================================================================ -`; diff --git a/tests/ignore/__snapshots__/jsfmt.spec.mjs.snap b/tests/ignore/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..f7a165bbf --- /dev/null +++ b/tests/ignore/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,140 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ignore.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + "array", + "in" => function($all) { return "history"; }, + "of" => [ + "php" + ] +];} + + +// prettier-ignore-start +$info = "prettier-ignore-start and -end is currently not supported" ; +// prettier-ignore-end + +class ExampleClass { + // prettier-ignore + const SOME_CONST = 1; + const ANOTHER_CONST = 2; + + // prettier-ignore + const CONST_ARRAY = [ + 'test' => 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===================================== + + "array", + "in" => function($all) { return "history"; }, + "of" => [ + "php" + ] +];} + +// prettier-ignore-start +$info = "prettier-ignore-start and -end is currently not supported"; +// prettier-ignore-end + +class ExampleClass +{ + // prettier-ignore + const SOME_CONST = 1; + const ANOTHER_CONST = 2; + + // prettier-ignore + const CONST_ARRAY = [ + 'test' => 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 408e4db17..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 84% rename from tests/inline/__snapshots__/jsfmt.spec.js.snap rename to tests/inline/__snapshots__/jsfmt.spec.mjs.snap index 9174f72cd..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=====================================
@@ -2305,6 +2305,174 @@ $var = 2; ================================================================================ `; +exports[`mixed-53.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + Foo bar + + Foo bar + + Foo bar + + Foo bar + + Foo bar + + Foo bar + + + + +=====================================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"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + +=====================================output===================================== + + + +================================================================================ +`; + +exports[`namespace-2.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + +exports[`namespace-3.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + +=====================================output===================================== + + + + +================================================================================ +`; + exports[`only-html.php 1`] = ` ====================================options===================================== parsers: ["php"] @@ -2350,3 +2518,17 @@ printWidth: 80 ================================================================================ `; + +exports[`shorthand-1.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +=====================================output===================================== + + +================================================================================ +`; 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-53.php b/tests/inline/mixed-53.php new file mode 100644 index 000000000..c088549a0 --- /dev/null +++ b/tests/inline/mixed-53.php @@ -0,0 +1,15 @@ + + Foo bar + + Foo bar + + Foo bar + + + 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/inline/namespace-1.php b/tests/inline/namespace-1.php new file mode 100644 index 000000000..e31ab0b7a --- /dev/null +++ b/tests/inline/namespace-1.php @@ -0,0 +1,2 @@ + + diff --git a/tests/inline/namespace-2.php b/tests/inline/namespace-2.php new file mode 100644 index 000000000..a24ce33ed --- /dev/null +++ b/tests/inline/namespace-2.php @@ -0,0 +1,3 @@ + + + diff --git a/tests/inline/namespace-3.php b/tests/inline/namespace-3.php new file mode 100644 index 000000000..a9c956454 --- /dev/null +++ b/tests/inline/namespace-3.php @@ -0,0 +1,6 @@ + + + diff --git a/tests/inline/shorthand-1.php b/tests/inline/shorthand-1.php new file mode 100644 index 000000000..bc70cb62c --- /dev/null +++ b/tests/inline/shorthand-1.php @@ -0,0 +1 @@ + diff --git a/tests/insert-pragma/__snapshots__/jsfmt.spec.js.snap b/tests/insert-pragma/__snapshots__/jsfmt.spec.mjs.snap similarity index 91% rename from tests/insert-pragma/__snapshots__/jsfmt.spec.js.snap rename to tests/insert-pragma/__snapshots__/jsfmt.spec.mjs.snap index 4d2c79935..1c95a3803 100644 --- a/tests/insert-pragma/__snapshots__/jsfmt.spec.js.snap +++ b/tests/insert-pragma/__snapshots__/jsfmt.spec.mjs.snap @@ -204,6 +204,129 @@ echo "Hello World"; ================================================================================ `; +exports[`pragma-firstdocblockmidfile.php 1`] = ` +====================================options===================================== +endOfLine: "cr" +insertPragma: true +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +class Something +{ + function whatever () + { + /** + * Some mid-file docblock + */ + $variable = 3; + } +} + +=====================================output===================================== + +/** + * @format + */ + +class Something +{ + function whatever() + { + /** + * Some mid-file docblock + */ + $variable = 3; + } +} + +================================================================================ +`; + +exports[`pragma-firstdocblockmidfile.php 2`] = ` +====================================options===================================== +endOfLine: "crlf" +insertPragma: true +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +class Something +{ + function whatever () + { + /** + * Some mid-file docblock + */ + $variable = 3; + } +} + +=====================================output===================================== + +/** + * @format + */ + +class Something +{ + function whatever() + { + /** + * Some mid-file docblock + */ + $variable = 3; + } +} + +================================================================================ +`; + +exports[`pragma-firstdocblockmidfile.php 3`] = ` +====================================options===================================== +endOfLine: "lf" +insertPragma: true +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +class Something +{ + function whatever () + { + /** + * Some mid-file docblock + */ + $variable = 3; + } +} + +=====================================output===================================== + +/** + * @format + */ + +class Something +{ + function whatever() + { + /** + * Some mid-file docblock + */ + $variable = 3; + } +} + +================================================================================ +`; + exports[`pragma-nodocblock-CRLF.php 1`] = ` ====================================options===================================== endOfLine: "cr" 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/insert-pragma/pragma-firstdocblockmidfile.php b/tests/insert-pragma/pragma-firstdocblockmidfile.php new file mode 100644 index 000000000..ef8f02246 --- /dev/null +++ b/tests/insert-pragma/pragma-firstdocblockmidfile.php @@ -0,0 +1,12 @@ +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 d15dca155..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)) = 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; - -================================================================================ -`; 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 1b5ca6c39..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 76% rename from tests/member_chain/__snapshots__/jsfmt.spec.js.snap rename to tests/member_chain/__snapshots__/jsfmt.spec.mjs.snap index d68d2b446..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; }); @@ -372,6 +394,14 @@ $a->b->a(); $a->b()->c()->d(); $a->b->c->d; +// should inline +$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())->once(); +$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())->once(); +$a = $t->shouldReceive( 'signUp' )->with( anInstanceOf( 'Foo\\\\Bar\\\\Baz' ), $this->app['foo.bar.baz']->getEmail())->once(); + $this->loooooooooooong->lookup = (int) $this->getRequest()->getParam( 'some-param' ); @@ -428,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()) @@ -468,27 +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()) + ->once(); +$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()) + ->once(); +// should break +$test + ->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()) + ->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; @@ -498,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) { @@ -588,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) { @@ -629,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(); }); @@ -724,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; }) @@ -774,8 +779,8 @@ $window->Data['key']("foo") return $b; }); -$window->Data['key'] - ['foo']("foo") +$window->Data["key"] + ["foo"]("foo") ->then(function () { return $a; }) @@ -783,8 +788,8 @@ $window->Data['key'] return $b; }); -$window->foo_{'bar' . 'baz'} - ['key']("foo") +$window->foo_["bar" . "baz"] + ["key"]("foo") ->then(function () { return $a; }) @@ -793,7 +798,7 @@ $window->foo_{'bar' . 'baz'} }); $window->{call()} - ['key']("foo") + ["key"]("foo") ->then(function () { return $a; }) @@ -801,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(); + ================================================================================ `; @@ -936,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]; @@ -1007,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 @@ -1030,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(); @@ -1063,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/member_chain.php b/tests/member_chain/member_chain.php index cc0544fa5..e770a0a84 100644 --- a/tests/member_chain/member_chain.php +++ b/tests/member_chain/member_chain.php @@ -33,6 +33,14 @@ $a->b()->c()->d(); $a->b->c->d; +// should inline +$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())->once(); +$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())->once(); +$a = $t->shouldReceive( 'signUp' )->with( anInstanceOf( 'Foo\\Bar\\Baz' ), $this->app['foo.bar.baz']->getEmail())->once(); + $this->loooooooooooong->lookup = (int) $this->getRequest()->getParam( 'some-param' ); 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.js.snap deleted file mode 100644 index 1aa9dbf87..000000000 --- a/tests/nowdoc/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,1994 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`nowdoc.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -foo. -Now, I am printing some {$foo->bar[1]}. -This should not print a capital 'A': \\x41 -EOT; - -$str = <<<'EOL' -"test" foo 'test' -EOL; - -$str = array(<<<'EOF' -foo -EOF -, "bar" -); - -$str = array( - "bar", - <<<'EOF' -foo -EOF -); - -$str = sprintf(<<<'EOF' -foo -EOF -); - -$str = sprintf(<<<'EOF' -foo -EOF -, true); - -$str = sprintf(<< <<<'EOD' -string -string -string -EOD -]; - -$a = [ - 'key' => <<<'EOD' -string -string -string -EOD - , -]; - -$a = [ - 'other-key' => $a, - 'key' => <<<'EOD' -string -string -string -EOD -]; - -$a = [ - 'key' => <<<'EOD' -string -string -string -EOD - , - 'other-key' => $a -]; - -switch ($i) { - case <<<'TXT' -string -TXT - : - print <<<'TXT' -string -TXT; - break; - - case <<<'TXT' -other -TXT - : - break; - default: - print <<<'TXT' -string -TXT; -} - -$var->call( - <<<'TXT' -string -TXT -); - -$var->call( - $var, - <<<'TXT' -string -TXT -); - -$var->call( - <<<'TXT' -string -TXT - , - $var -); - -$var->call( - $var, - <<<'TXT' -string -TXT - , - $var -); - -$var = <<<'TXT' -string -TXT - ? <<<'TXT' -string -TXT - : <<<'TXT' -string -TXT; - -if ( -<<<'EOD' -string -string -string -EOD -) { - echo 'test'; -} - -do { -} while ( - <<<'EOD' -string -string -string -EOD -); - -while ( -<<<'EOD' -string -string -string -EOD -) {}; - -switch ( -<<<'EOD' -string -string -string -EOD -) {} - -function generator() -{ - yield <<<'EOD' -string -string -string -EOD; - yield $id => <<<'EOD' -string -string -string -EOD; -} - -$var = $var ?: <<<'EOD' -string -string -string -EOD; - -$var = $var ?: $var ?: $var ?: $var ?: $var ?: <<<'EOD' -string -string -string -EOD; - -call( - call( - <<<'EOD' -string -string -string -EOD - ) -); - -call( - $var->call( - <<<'EOD' -string -string -string -EOD - ) -); - -call( - Foo::call( - <<<'EOD' -string -string -string -EOD - ) -); - -for ( - $i = <<<'EOD' -string -string -string -EOD; - $i < 10; - $i++ -) {} - -for ( -print <<<'EOD' -string -string -string -EOD; - $i < 10; - $i++ -) {} - -for ( - $i = 0, -print <<<'EOD' -string -string -string -EOD; - $i < 10; - $i++ -) {} - -for ( -print <<<'EOD' -string -string -string -EOD -, - $i = 0; - $i < 10; - $i++ -) {} - -for ( - $i = 0; -print <<<'EOD' -string -string -string -EOD; - $i++ -) {} - -for ( - $i = 0; - $i < 10, -print <<<'EOD' -string -string -string -EOD; - $i++ -) {} - -for ( - $i = 0; -print <<<'EOD' -string -string -string -EOD -, - $i < 10; - $i++ -) {} - -for ( - $i = 0; - $i < 10; -print <<<'EOD' -string -string -string -EOD -) {} - -for ( - $i = 0; - $i < 10; -print <<<'EOD' -string -string -string -EOD -, - $i++ -) {} - -for ( - $i = 0; - $i < 10; - $i++, -print <<<'EOD' -string -string -string -EOD -) {} - -for ( -print <<<'EOD' -string -string -string -EOD; -print <<<'EOD' -string -string -string -EOD; -print <<<'EOD' -string -string -string -EOD -) {} - -call( - <<<'TXT' -string -TXT -); - -call( - $var, - <<<'TXT' -string -TXT -); - -call( - <<<'TXT' -string -TXT - , - $var -); - -call( - $var, - <<<'TXT' -string -TXT - , - $var -); - -call( - $var . - <<<'TXT' -string -TXT - , - $var -); - -call( - <<<'TXT' -string -TXT - . - $var - , - $var -); - -call( - <<<'TXT' -string -TXT - . - $var . - $var . - $var . - $var, - $var -); - -call( - $var . - $var . - <<<'TXT' -string -TXT - . - $var . - $var, - $var -); - -call( - $var . - $var . - $var . - $var . - <<<'TXT' -string -TXT - , - $var -); - -call( - $var ? <<<'EOD' -string -string -string -EOD - : <<<'EOD' -string -string -string -EOD -); - -call( - $var, - $var ? <<<'EOD' -string -string -string -EOD - : <<<'EOD' -string -string -string -EOD -); - -call( - $var ? <<<'EOD' -string -string -string -EOD - : <<<'EOD' -string -string -string -EOD - , - $var -); - -call( - $var, - $var ? <<<'EOD' -string -string -string -EOD - : <<<'EOD' -string -string -string -EOD - , - $var -); - -$array = [ - <<<'EOD' -string -string -string -EOD - => <<<'EOD' -string -string -string -EOD -]; - -=====================================output===================================== -foo. -Now, I am printing some {$foo->bar[1]}. -This should not print a capital 'A': \\x41 -EOT; - -$str = <<<'EOL' -"test" foo 'test' -EOL; - -$str = array( - <<<'EOF' -foo -EOF - , - "bar" -); - -$str = array( - "bar", - <<<'EOF' -foo -EOF -); - -$str = sprintf( - <<<'EOF' -foo -EOF -); - -$str = sprintf( - <<<'EOF' -foo -EOF - , - true -); - -$str = sprintf( - << <<<'EOD' -string -string -string -EOD -]; - -$a = [ - 'key' => <<<'EOD' -string -string -string -EOD -]; - -$a = [ - 'other-key' => $a, - 'key' => <<<'EOD' -string -string -string -EOD -]; - -$a = [ - 'key' => <<<'EOD' -string -string -string -EOD - , - 'other-key' => $a -]; - -switch ($i) { - case <<<'TXT' -string -TXT - : - print <<<'TXT' -string -TXT; - break; - - case <<<'TXT' -other -TXT - : - break; - default: - print <<<'TXT' -string -TXT; -} - -$var->call( - <<<'TXT' -string -TXT -); - -$var->call( - $var, - <<<'TXT' -string -TXT -); - -$var->call( - <<<'TXT' -string -TXT - , - $var -); - -$var->call( - $var, - <<<'TXT' -string -TXT - , - $var -); - -$var = <<<'TXT' -string -TXT - ? <<<'TXT' -string -TXT - : <<<'TXT' -string -TXT; - -if ( - <<<'EOD' -string -string -string -EOD -) { - echo 'test'; -} - -do { -} while ( - <<<'EOD' -string -string -string -EOD -); - -while ( - <<<'EOD' -string -string -string -EOD -) { -} - -switch ( - <<<'EOD' -string -string -string -EOD -) { -} - -function generator() -{ - yield <<<'EOD' -string -string -string -EOD; - yield $id => <<<'EOD' -string -string -string -EOD; -} - -$var = - $var ?: - <<<'EOD' -string -string -string -EOD; - -$var = - $var ?: - $var ?: - $var ?: - $var ?: - $var ?: - <<<'EOD' -string -string -string -EOD; - -call( - call( - <<<'EOD' -string -string -string -EOD - ) -); - -call( - $var->call( - <<<'EOD' -string -string -string -EOD - ) -); - -call( - Foo::call( - <<<'EOD' -string -string -string -EOD - ) -); - -for ( - $i = <<<'EOD' -string -string -string -EOD; - $i < 10; - $i++ -) { -} - -for ( - print <<<'EOD' -string -string -string -EOD; - $i < 10; - $i++ -) { -} - -for ( - $i = 0, - print <<<'EOD' -string -string -string -EOD; - $i < 10; - $i++ -) { -} - -for ( - print <<<'EOD' -string -string -string -EOD - , - $i = 0; - $i < 10; - $i++ -) { -} - -for ( - $i = 0; - print <<<'EOD' -string -string -string -EOD; - $i++ -) { -} - -for ( - $i = 0; - $i < 10, - print <<<'EOD' -string -string -string -EOD; - $i++ -) { -} - -for ( - $i = 0; - print <<<'EOD' -string -string -string -EOD - , - $i < 10; - $i++ -) { -} - -for ( - $i = 0; - $i < 10; - print <<<'EOD' -string -string -string -EOD -) { -} - -for ( - $i = 0; - $i < 10; - print <<<'EOD' -string -string -string -EOD - , - $i++ -) { -} - -for ( - $i = 0; - $i < 10; - $i++, - print <<<'EOD' -string -string -string -EOD -) { -} - -for ( - print <<<'EOD' -string -string -string -EOD; - print <<<'EOD' -string -string -string -EOD; - print <<<'EOD' -string -string -string -EOD -) { -} - -call( - <<<'TXT' -string -TXT -); - -call( - $var, - <<<'TXT' -string -TXT -); - -call( - <<<'TXT' -string -TXT - , - $var -); - -call( - $var, - <<<'TXT' -string -TXT - , - $var -); - -call( - $var . - <<<'TXT' -string -TXT - , - $var -); - -call( - <<<'TXT' -string -TXT - . $var, - $var -); - -call( - <<<'TXT' -string -TXT - . - $var . - $var . - $var . - $var, - $var -); - -call( - $var . - $var . - <<<'TXT' -string -TXT - . - $var . - $var, - $var -); - -call( - $var . - $var . - $var . - $var . - <<<'TXT' -string -TXT - , - $var -); - -call( - $var - ? <<<'EOD' -string -string -string -EOD - : <<<'EOD' -string -string -string -EOD -); - -call( - $var, - $var - ? <<<'EOD' -string -string -string -EOD - : <<<'EOD' -string -string -string -EOD -); - -call( - $var - ? <<<'EOD' -string -string -string -EOD - - : <<<'EOD' -string -string -string -EOD - , - $var -); - -call( - $var, - $var - ? <<<'EOD' -string -string -string -EOD - - : <<<'EOD' -string -string -string -EOD - , - $var -); - -$array = [ - <<<'EOD' -string -string -string -EOD - => <<<'EOD' -string -string -string -EOD -]; - -================================================================================ -`; - -exports[`single.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== -foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT; + +$str = <<<'EOL' +"test" foo 'test' +EOL; + +$str = array(<<<'EOF' +foo +EOF +, "bar" +); + +$str = array( + "bar", + <<<'EOF' +foo +EOF +); + +$str = sprintf(<<<'EOF' +foo +EOF +); + +$str = sprintf(<<<'EOF' +foo +EOF +, true); + +$str = sprintf(<< <<<'EOD' +string +string +string +EOD +]; + +$a = [ + 'key' => <<<'EOD' +string +string +string +EOD + , +]; + +$a = [ + 'other-key' => $a, + 'key' => <<<'EOD' +string +string +string +EOD +]; + +$a = [ + 'key' => <<<'EOD' +string +string +string +EOD + , + 'other-key' => $a +]; + +switch ($i) { + case <<<'TXT' +string +TXT + : + print <<<'TXT' +string +TXT; + break; + + case <<<'TXT' +other +TXT + : + break; + default: + print <<<'TXT' +string +TXT; +} + +$var->call( + <<<'TXT' +string +TXT +); + +$var->call( + $var, + <<<'TXT' +string +TXT +); + +$var->call( + <<<'TXT' +string +TXT + , + $var +); + +$var->call( + $var, + <<<'TXT' +string +TXT + , + $var +); + +$var = <<<'TXT' +string +TXT + ? <<<'TXT' +string +TXT + : <<<'TXT' +string +TXT; + +if ( +<<<'EOD' +string +string +string +EOD +) { + echo 'test'; +} + +do { +} while ( + <<<'EOD' +string +string +string +EOD +); + +while ( +<<<'EOD' +string +string +string +EOD +) {}; + +switch ( +<<<'EOD' +string +string +string +EOD +) {} + +function generator() +{ + yield <<<'EOD' +string +string +string +EOD; + yield $id => <<<'EOD' +string +string +string +EOD; +} + +$var = $var ?: <<<'EOD' +string +string +string +EOD; + +$var = $var ?: $var ?: $var ?: $var ?: $var ?: <<<'EOD' +string +string +string +EOD; + +call( + call( + <<<'EOD' +string +string +string +EOD + ) +); + +call( + $var->call( + <<<'EOD' +string +string +string +EOD + ) +); + +call( + Foo::call( + <<<'EOD' +string +string +string +EOD + ) +); + +for ( + $i = <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) {} + +for ( +print <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) {} + +for ( + $i = 0, +print <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) {} + +for ( +print <<<'EOD' +string +string +string +EOD +, + $i = 0; + $i < 10; + $i++ +) {} + +for ( + $i = 0; +print <<<'EOD' +string +string +string +EOD; + $i++ +) {} + +for ( + $i = 0; + $i < 10, +print <<<'EOD' +string +string +string +EOD; + $i++ +) {} + +for ( + $i = 0; +print <<<'EOD' +string +string +string +EOD +, + $i < 10; + $i++ +) {} + +for ( + $i = 0; + $i < 10; +print <<<'EOD' +string +string +string +EOD +) {} + +for ( + $i = 0; + $i < 10; +print <<<'EOD' +string +string +string +EOD +, + $i++ +) {} + +for ( + $i = 0; + $i < 10; + $i++, +print <<<'EOD' +string +string +string +EOD +) {} + +for ( +print <<<'EOD' +string +string +string +EOD; +print <<<'EOD' +string +string +string +EOD; +print <<<'EOD' +string +string +string +EOD +) {} + +call( + <<<'TXT' +string +TXT +); + +call( + $var, + <<<'TXT' +string +TXT +); + +call( + <<<'TXT' +string +TXT + , + $var +); + +call( + $var, + <<<'TXT' +string +TXT + , + $var +); + +call( + $var . + <<<'TXT' +string +TXT + , + $var +); + +call( + <<<'TXT' +string +TXT + . + $var + , + $var +); + +call( + <<<'TXT' +string +TXT + . + $var . + $var . + $var . + $var, + $var +); + +call( + $var . + $var . + <<<'TXT' +string +TXT + . + $var . + $var, + $var +); + +call( + $var . + $var . + $var . + $var . + <<<'TXT' +string +TXT + , + $var +); + +call( + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD +); + +call( + $var, + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD +); + +call( + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD + , + $var +); + +call( + $var, + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD + , $var +); + +$array = [ + <<<'EOD' +string +string +string +EOD + => <<<'EOD' +string +string +string +EOD +]; + +$php73FlexibleNowdoc = <<<'EOD' + $a + b + c + EOD; + +$php73FlexibleNowdoc2 = <<<'EOD' + $a + b + c + EOD; + +[ + $var ? "foo" : <<<'EOD' +string +EOD + , "bar" +]; + +[ + $var ? "foo" : $var2 ? "bar" : <<<'EOD' +string +EOD + , "bar" +]; + +[ + $var ?? <<<'EOD' +string +EOD + , "bar" +]; + +[ + $a ?? $b ?? <<<'EOD' +string +EOD + , "bar" +]; +=====================================output===================================== +foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT; + +$str = <<<'EOL' +"test" foo 'test' +EOL; + +$str = [ + <<<'EOF' +foo +EOF + , + "bar", +]; + +$str = [ + "bar", + <<<'EOF' +foo +EOF +, +]; + +$str = sprintf( + <<<'EOF' +foo +EOF +); + +$str = sprintf( + <<<'EOF' +foo +EOF + , + true +); + +$str = sprintf( + << <<<'EOD' +string +string +string +EOD +, +]; + +$a = [ + "key" => <<<'EOD' +string +string +string +EOD +, +]; + +$a = [ + "other-key" => $a, + "key" => <<<'EOD' +string +string +string +EOD +, +]; + +$a = [ + "key" => <<<'EOD' +string +string +string +EOD + , + "other-key" => $a, +]; + +switch ($i) { + case <<<'TXT' +string +TXT + : + print <<<'TXT' +string +TXT; + break; + + case <<<'TXT' +other +TXT + : + break; + default: + print <<<'TXT' +string +TXT; +} + +$var->call( + <<<'TXT' +string +TXT +); + +$var->call( + $var, + <<<'TXT' +string +TXT +); + +$var->call( + <<<'TXT' +string +TXT + , + $var +); + +$var->call( + $var, + <<<'TXT' +string +TXT + , + $var +); + +$var = <<<'TXT' +string +TXT + ? <<<'TXT' +string +TXT + : <<<'TXT' +string +TXT; + +if ( + <<<'EOD' +string +string +string +EOD +) { + echo "test"; +} + +do { +} while ( + <<<'EOD' +string +string +string +EOD +); + +while ( + <<<'EOD' +string +string +string +EOD +) { +} + +switch ( + <<<'EOD' +string +string +string +EOD +) { +} + +function generator() +{ + yield <<<'EOD' +string +string +string +EOD; + yield $id => <<<'EOD' +string +string +string +EOD; +} + +$var = + $var ?: + <<<'EOD' +string +string +string +EOD; + +$var = + $var ?: + $var ?: + $var ?: + $var ?: + $var ?: + <<<'EOD' +string +string +string +EOD; + +call( + call( + <<<'EOD' +string +string +string +EOD + ) +); + +call( + $var->call( + <<<'EOD' +string +string +string +EOD + ) +); + +call( + Foo::call( + <<<'EOD' +string +string +string +EOD + ) +); + +for ( + $i = <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) { +} + +for ( + print <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) { +} + +for ( + $i = 0, + print <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) { +} + +for ( + print <<<'EOD' +string +string +string +EOD + , + $i = 0; + $i < 10; + $i++ +) { +} + +for ( + $i = 0; + print <<<'EOD' +string +string +string +EOD; + $i++ +) { +} + +for ( + $i = 0; + $i < 10, + print <<<'EOD' +string +string +string +EOD; + $i++ +) { +} + +for ( + $i = 0; + print <<<'EOD' +string +string +string +EOD + , + $i < 10; + $i++ +) { +} + +for ( + $i = 0; + $i < 10; + print <<<'EOD' +string +string +string +EOD +) { +} + +for ( + $i = 0; + $i < 10; + print <<<'EOD' +string +string +string +EOD + , + $i++ +) { +} + +for ( + $i = 0; + $i < 10; + $i++, + print <<<'EOD' +string +string +string +EOD +) { +} + +for ( + print <<<'EOD' +string +string +string +EOD; + print <<<'EOD' +string +string +string +EOD; + print <<<'EOD' +string +string +string +EOD +) { +} + +call( + <<<'TXT' +string +TXT +); + +call( + $var, + <<<'TXT' +string +TXT +); + +call( + <<<'TXT' +string +TXT + , + $var +); + +call( + $var, + <<<'TXT' +string +TXT + , + $var +); + +call( + $var . + <<<'TXT' +string +TXT + , + $var +); + +call( + <<<'TXT' +string +TXT + . $var, + $var +); + +call( + <<<'TXT' +string +TXT + . + $var . + $var . + $var . + $var, + $var +); + +call( + $var . + $var . + <<<'TXT' +string +TXT + . + $var . + $var, + $var +); + +call( + $var . + $var . + $var . + $var . + <<<'TXT' +string +TXT + , + $var +); + +call( + $var + ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD +); + +call( + $var, + $var + ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD +); + +call( + $var + ? <<<'EOD' +string +string +string +EOD + + : <<<'EOD' +string +string +string +EOD + , + $var +); + +call( + $var, + $var + ? <<<'EOD' +string +string +string +EOD + + : <<<'EOD' +string +string +string +EOD + , + $var +); + +$array = [ + <<<'EOD' +string +string +string +EOD + => <<<'EOD' +string +string +string +EOD +, +]; + +$php73FlexibleNowdoc = <<<'EOD' + $a + b +c +EOD; + +$php73FlexibleNowdoc2 = <<<'EOD' + $a + b + c +EOD; + +[ + $var + ? "foo" + : <<<'EOD' +string +EOD + , + "bar", +]; + +[ + ($var + ? "foo" + : $var2) + ? "bar" + : <<<'EOD' +string +EOD + , + "bar", +]; + +[ + $var ?? + <<<'EOD' +string +EOD + , + "bar", +]; + +[ + $a ?? + ($b ?? + <<<'EOD' +string +EOD + ), + "bar", +]; + +================================================================================ +`; + +exports[`nowdoc.php 2`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.3" +printWidth: 80 + | printWidth +=====================================input====================================== +foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT; + +$str = <<<'EOL' +"test" foo 'test' +EOL; + +$str = array(<<<'EOF' +foo +EOF +, "bar" +); + +$str = array( + "bar", + <<<'EOF' +foo +EOF +); + +$str = sprintf(<<<'EOF' +foo +EOF +); + +$str = sprintf(<<<'EOF' +foo +EOF +, true); + +$str = sprintf(<< <<<'EOD' +string +string +string +EOD +]; + +$a = [ + 'key' => <<<'EOD' +string +string +string +EOD + , +]; + +$a = [ + 'other-key' => $a, + 'key' => <<<'EOD' +string +string +string +EOD +]; + +$a = [ + 'key' => <<<'EOD' +string +string +string +EOD + , + 'other-key' => $a +]; + +switch ($i) { + case <<<'TXT' +string +TXT + : + print <<<'TXT' +string +TXT; + break; + + case <<<'TXT' +other +TXT + : + break; + default: + print <<<'TXT' +string +TXT; +} + +$var->call( + <<<'TXT' +string +TXT +); + +$var->call( + $var, + <<<'TXT' +string +TXT +); + +$var->call( + <<<'TXT' +string +TXT + , + $var +); + +$var->call( + $var, + <<<'TXT' +string +TXT + , + $var +); + +$var = <<<'TXT' +string +TXT + ? <<<'TXT' +string +TXT + : <<<'TXT' +string +TXT; + +if ( +<<<'EOD' +string +string +string +EOD +) { + echo 'test'; +} + +do { +} while ( + <<<'EOD' +string +string +string +EOD +); + +while ( +<<<'EOD' +string +string +string +EOD +) {}; + +switch ( +<<<'EOD' +string +string +string +EOD +) {} + +function generator() +{ + yield <<<'EOD' +string +string +string +EOD; + yield $id => <<<'EOD' +string +string +string +EOD; +} + +$var = $var ?: <<<'EOD' +string +string +string +EOD; + +$var = $var ?: $var ?: $var ?: $var ?: $var ?: <<<'EOD' +string +string +string +EOD; + +call( + call( + <<<'EOD' +string +string +string +EOD + ) +); + +call( + $var->call( + <<<'EOD' +string +string +string +EOD + ) +); + +call( + Foo::call( + <<<'EOD' +string +string +string +EOD + ) +); + +for ( + $i = <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) {} + +for ( +print <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) {} + +for ( + $i = 0, +print <<<'EOD' +string +string +string +EOD; + $i < 10; + $i++ +) {} + +for ( +print <<<'EOD' +string +string +string +EOD +, + $i = 0; + $i < 10; + $i++ +) {} + +for ( + $i = 0; +print <<<'EOD' +string +string +string +EOD; + $i++ +) {} + +for ( + $i = 0; + $i < 10, +print <<<'EOD' +string +string +string +EOD; + $i++ +) {} + +for ( + $i = 0; +print <<<'EOD' +string +string +string +EOD +, + $i < 10; + $i++ +) {} + +for ( + $i = 0; + $i < 10; +print <<<'EOD' +string +string +string +EOD +) {} + +for ( + $i = 0; + $i < 10; +print <<<'EOD' +string +string +string +EOD +, + $i++ +) {} + +for ( + $i = 0; + $i < 10; + $i++, +print <<<'EOD' +string +string +string +EOD +) {} + +for ( +print <<<'EOD' +string +string +string +EOD; +print <<<'EOD' +string +string +string +EOD; +print <<<'EOD' +string +string +string +EOD +) {} + +call( + <<<'TXT' +string +TXT +); + +call( + $var, + <<<'TXT' +string +TXT +); + +call( + <<<'TXT' +string +TXT + , + $var +); + +call( + $var, + <<<'TXT' +string +TXT + , + $var +); + +call( + $var . + <<<'TXT' +string +TXT + , + $var +); + +call( + <<<'TXT' +string +TXT + . + $var + , + $var +); + +call( + <<<'TXT' +string +TXT + . + $var . + $var . + $var . + $var, + $var +); + +call( + $var . + $var . + <<<'TXT' +string +TXT + . + $var . + $var, + $var +); + +call( + $var . + $var . + $var . + $var . + <<<'TXT' +string +TXT + , + $var +); + +call( + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD +); + +call( + $var, + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD +); + +call( + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD + , + $var +); + +call( + $var, + $var ? <<<'EOD' +string +string +string +EOD + : <<<'EOD' +string +string +string +EOD + , $var +); + +$array = [ + <<<'EOD' +string +string +string +EOD + => <<<'EOD' +string +string +string +EOD +]; + +$php73FlexibleNowdoc = <<<'EOD' + $a + b + c + EOD; + +$php73FlexibleNowdoc2 = <<<'EOD' + $a + b + c + EOD; + +[ + $var ? "foo" : <<<'EOD' +string +EOD + , "bar" +]; + +[ + $var ? "foo" : $var2 ? "bar" : <<<'EOD' +string +EOD + , "bar" +]; + +[ + $var ?? <<<'EOD' +string +EOD + , "bar" +]; + +[ + $a ?? $b ?? <<<'EOD' +string +EOD + , "bar" +]; +=====================================output===================================== +foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT; + +$str = <<<'EOL' +"test" foo 'test' +EOL; + +$str = [ + <<<'EOF' + foo + EOF + , + "bar", +]; + +$str = [ + "bar", + <<<'EOF' + foo + EOF +, +]; + +$str = sprintf( + <<<'EOF' + foo + EOF + , +); + +$str = sprintf( + <<<'EOF' + foo + EOF + , + true, +); + +$str = sprintf( + << <<<'EOD' + string + string + string + EOD +, +]; + +$a = [ + "key" => <<<'EOD' + string + string + string + EOD +, +]; + +$a = [ + "other-key" => $a, + "key" => <<<'EOD' + string + string + string + EOD +, +]; + +$a = [ + "key" => <<<'EOD' + string + string + string + EOD + , + "other-key" => $a, +]; + +switch ($i) { + case <<<'TXT' + string + TXT + : + print <<<'TXT' + string + TXT; + break; + + case <<<'TXT' + other + TXT + : + break; + default: + print <<<'TXT' + string + TXT; +} + +$var->call( + <<<'TXT' + string + TXT + , +); + +$var->call( + $var, + <<<'TXT' + string + TXT + , +); + +$var->call( + <<<'TXT' + string + TXT + , + $var, +); + +$var->call( + $var, + <<<'TXT' + string + TXT + , + $var, +); + +$var = <<<'TXT' +string +TXT + ? <<<'TXT' + string + TXT + : <<<'TXT' + string + TXT; + +if ( + <<<'EOD' + string + string + string + EOD +) { + echo "test"; +} + +do { +} while ( + <<<'EOD' + string + string + string + EOD +); + +while ( + <<<'EOD' + string + string + string + EOD +) { +} + +switch ( + <<<'EOD' + string + string + string + EOD +) { +} + +function generator() +{ + yield <<<'EOD' + string + string + string + EOD; + yield $id => <<<'EOD' + string + string + string + EOD; +} + +$var = + $var ?: + <<<'EOD' + string + string + string + EOD; + +$var = + $var ?: + $var ?: + $var ?: + $var ?: + $var ?: + <<<'EOD' + string + string + string + EOD; + +call( + call( + <<<'EOD' + string + string + string + EOD + , + ), +); + +call( + $var->call( + <<<'EOD' + string + string + string + EOD + , + ), +); + +call( + Foo::call( + <<<'EOD' + string + string + string + EOD + , + ), +); + +for ( + $i = <<<'EOD' + string + string + string + EOD; + $i < 10; + $i++ +) { +} + +for ( + print <<<'EOD' + string + string + string + EOD; + $i < 10; + $i++ +) { +} + +for ( + $i = 0, + print <<<'EOD' + string + string + string + EOD; + $i < 10; + $i++ +) { +} + +for ( + print <<<'EOD' + string + string + string + EOD + , + $i = 0; + $i < 10; + $i++ +) { +} + +for ( + $i = 0; + print <<<'EOD' + string + string + string + EOD; + $i++ +) { +} + +for ( + $i = 0; + $i < 10, + print <<<'EOD' + string + string + string + EOD; + $i++ +) { +} + +for ( + $i = 0; + print <<<'EOD' + string + string + string + EOD + , + $i < 10; + $i++ +) { +} + +for ( + $i = 0; + $i < 10; + print <<<'EOD' + string + string + string + EOD +) { +} + +for ( + $i = 0; + $i < 10; + print <<<'EOD' + string + string + string + EOD + , + $i++ +) { +} + +for ( + $i = 0; + $i < 10; + $i++, + print <<<'EOD' + string + string + string + EOD +) { +} + +for ( + print <<<'EOD' + string + string + string + EOD; + print <<<'EOD' + string + string + string + EOD; + print <<<'EOD' + string + string + string + EOD +) { +} + +call( + <<<'TXT' + string + TXT + , +); + +call( + $var, + <<<'TXT' + string + TXT + , +); + +call( + <<<'TXT' + string + TXT + , + $var, +); + +call( + $var, + <<<'TXT' + string + TXT + , + $var, +); + +call( + $var . + <<<'TXT' + string + TXT + , + $var, +); + +call( + <<<'TXT' + string + TXT + . $var, + $var, +); + +call( + <<<'TXT' + string + TXT + . + $var . + $var . + $var . + $var, + $var, +); + +call( + $var . + $var . + <<<'TXT' + string + TXT + . + $var . + $var, + $var, +); + +call( + $var . + $var . + $var . + $var . + <<<'TXT' + string + TXT + , + $var, +); + +call( + $var + ? <<<'EOD' + string + string + string + EOD + : <<<'EOD' + string + string + string + EOD, +); + +call( + $var, + $var + ? <<<'EOD' + string + string + string + EOD + : <<<'EOD' + string + string + string + EOD, +); + +call( + $var + ? <<<'EOD' + string + string + string + EOD + + : <<<'EOD' + string + string + string + EOD + , + $var, +); + +call( + $var, + $var + ? <<<'EOD' + string + string + string + EOD + + : <<<'EOD' + string + string + string + EOD + , + $var, +); + +$array = [ + <<<'EOD' + string + string + string + EOD + => <<<'EOD' + string + string + string + EOD +, +]; + +$php73FlexibleNowdoc = <<<'EOD' + $a + b +c +EOD; + +$php73FlexibleNowdoc2 = <<<'EOD' + $a + b + c +EOD; + +[ + $var + ? "foo" + : <<<'EOD' + string + EOD + , + "bar", +]; + +[ + ($var + ? "foo" + : $var2) + ? "bar" + : <<<'EOD' + string + EOD + , + "bar", +]; + +[ + $var ?? + <<<'EOD' + string + EOD + , + "bar", +]; + +[ + $a ?? + ($b ?? + <<<'EOD' + string + EOD + ), + "bar", +]; + +================================================================================ +`; + +exports[`single.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.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 79% rename from tests/number/__snapshots__/jsfmt.spec.js.snap rename to tests/number/__snapshots__/jsfmt.spec.mjs.snap index b4a2a544a..f044abc68 100644 --- a/tests/number/__snapshots__/jsfmt.spec.js.snap +++ b/tests/number/__snapshots__/jsfmt.spec.mjs.snap @@ -98,6 +98,25 @@ $a = NAN; $a = PHP_INT_MIN; $a = PHP_INT_MAX; +$a = 1.000; +$a = 1.001; +$a = 1.0; +// 1. === 1.0, but 1. !== 1 +$a = 1.; +$a = 1; + +// numeric literal separator, added in 7.4 +$threshold = 1_000_000_000; +$testValue = 107_925_284.88; +$discount = 135_00; +6.674_083e-11; // float +299_792_458; // decimal +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]; @@ -55,16 +60,21 @@ $variable = "abcdef"[-2]; $variable[1]; $variable[11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111]; -$variable['string']; +$variable["string"]; $variable[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; $variable[ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ][ - 'veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString' + "veryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongString" ]; +$var = $a[$b]; +$var = $a[$b][$c]; +$var = $a[$b][$c]; +$var = $a[$b][$c]; + ================================================================================ `; @@ -83,3 +93,20 @@ $arr[1]; ================================================================================ `; + +exports[`single-multiple.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", "key2" => "veryVeryVeryVeryVeryVeryVeryVeryVeryLongString", - "key3" => "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,17 +254,109 @@ string string', $arg = 'string string -string' -) { -} +string', +) {} function foo( $a, $b = 'string string string', - $c -) { + $c, +) {} + +================================================================================ +`; + +exports[`spec.php 1`] = ` +====================================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 = 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]; - -================================================================================ -`; - -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[`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); - -=====================================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); - -================================================================================ -`; - -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 = (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()); - -================================================================================ -`; - -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) 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); - -================================================================================ -`; - -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'))); - -=====================================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')); - -================================================================================ -`; - -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); -@(list($width, $height) = getimagesize($file)); - -@$var += 10; -@($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); -@list($width, $height) = getimagesize($file); - -@$var += 10; -@$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/assignref.php b/tests/parens/assignref.php new file mode 100644 index 000000000..cc44e3337 --- /dev/null +++ b/tests/parens/assignref.php @@ -0,0 +1,17 @@ + 0) {} +if (($foo = &test1()) && test2($foo) > 0) {} + +call(($a =& $b)); diff --git a/tests/parens/bin.php b/tests/parens/bin.php index e40067d5c..39cdd95cd 100644 --- a/tests/parens/bin.php +++ b/tests/parens/bin.php @@ -329,3 +329,39 @@ $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); 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/retif.php b/tests/parens/retif.php index ec36587a2..1ad1a5bf1 100644 --- a/tests/parens/retif.php +++ b/tests/parens/retif.php @@ -50,3 +50,13 @@ $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; diff --git a/tests/parens/silent.php b/tests/parens/silent.php index f7711921f..aa3856167 100644 --- a/tests/parens/silent.php +++ b/tests/parens/silent.php @@ -36,10 +36,12 @@ } @list($width, $height) = getimagesize($file); -@(list($width, $height) = getimagesize($file)); +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @(list($width, $height) = getimagesize($file)); @$var += 10; -@($var += 10); +// Todo https://github.com/glayzzle/php-parser/issues/356 +// @($var += 10); echo @(1 / 0); 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 5466f32d2..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 array('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 f078470a6..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 85% rename from tests/propertylookup/__snapshots__/jsfmt.spec.js.snap rename to tests/propertylookup/__snapshots__/jsfmt.spec.mjs.snap index d7938e5e0..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()}; ================================================================================ `; @@ -60,6 +58,8 @@ printWidth: 80 $a = $obj->value; $a = &$obj->getValue(); +$a = &$obj->getValue()->getValue()->getValue()->getValue()->getValue()->getValue()->getValue()->getValue()->getValue(); +$var = &$var->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; $obj->value = 2; $b = $this->foo; @@ -87,14 +87,26 @@ $var->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $a = $obj->value; $a = &$obj->getValue(); +$a = &$obj + ->getValue() + ->getValue() + ->getValue() + ->getValue() + ->getValue() + ->getValue() + ->getValue() + ->getValue() + ->getValue(); +$var = + &$var->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; $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"; @@ -103,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/propertylookup/propertylookup.php b/tests/propertylookup/propertylookup.php index f7fcb02db..2c33e0665 100644 --- a/tests/propertylookup/propertylookup.php +++ b/tests/propertylookup/propertylookup.php @@ -2,6 +2,8 @@ $a = $obj->value; $a = &$obj->getValue(); +$a = &$obj->getValue()->getValue()->getValue()->getValue()->getValue()->getValue()->getValue()->getValue()->getValue(); +$var = &$var->aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; $obj->value = 2; $b = $this->foo; diff --git a/tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap b/tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap new file mode 100644 index 000000000..2d9815817 --- /dev/null +++ b/tests/propertystatement/__snapshots__/jsfmt.spec.mjs.snap @@ -0,0 +1,87 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`propertystatement.php 1`] = ` +====================================options===================================== +parsers: ["php"] +printWidth: 80 + | printWidth +=====================================input====================================== + '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']; + static $a = 'foo'; + static $a = 'foo', $b = 'baz'; +} + +=====================================output===================================== + "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", + ]; + static $a = "foo"; + static $a = "foo", + $b = "baz"; +} + +================================================================================ +`; 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/propertystatement/propertystatement.php b/tests/propertystatement/propertystatement.php new file mode 100644 index 000000000..6954a6f75 --- /dev/null +++ b/tests/propertystatement/propertystatement.php @@ -0,0 +1,23 @@ + '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']; + static $a = 'foo'; + static $a = 'foo', $b = 'baz'; +} 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 59a7ca5c7..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'] - : 1 + ? (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,13 +657,13 @@ 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() + : 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 84534c156..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,10 +256,10 @@ return $VeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongClassName; return [1, 2, 3]; return [ $veryVeryVeryVeryVeryVeryLongKey => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", $veryVeryVeryVeryVeryVeryLongKey => - 'VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString', - 3 + "VeryVeryVeryVeryVeryVeryVeryVeryVeryLongString", + 3, ]; return $a + $b; 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"]), ); }); @@ -532,13 +512,13 @@ return $this->hasEncodingOption(JSON_PARTIAL_OUTPUT_ON_ERROR) && in_array($jsonError, [ JSON_ERROR_RECURSION, JSON_ERROR_INF_OR_NAN, - JSON_ERROR_UNSUPPORTED_TYPE + JSON_ERROR_UNSUPPORTED_TYPE, ]); return in_array($jsonError, [ JSON_ERROR_RECURSION, JSON_ERROR_INF_OR_NAN, - JSON_ERROR_UNSUPPORTED_TYPE + JSON_ERROR_UNSUPPORTED_TYPE, ]) && $this->hasEncodingOption(JSON_PARTIAL_OUTPUT_ON_ERROR); return $this->guards[$name] ?? ($this->guards[$name] = $this->resolve($name)); @@ -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 465b4f389..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,23 +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 0cc4a0260..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 b6bef71ba..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() { @@ -228,7 +228,7 @@ class Bar extends Foo abstract class DataRecord { private static $db; // MySQLi-Connection, same for all subclasses - private static $table = array(); // Array of tables for subclasses + private static $table = []; // Array of tables for subclasses public static function init($classname, $table, $db = false) { @@ -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; @@ -368,7 +364,7 @@ $var = get_class($var)::$$$$$property; $var = $bar->{$property->foo}; // TODO https://github.com/glayzzle/php-parser/issues/254 // $var = $bar->\${$property}; -$var = $bar->foo_{$property}; +$var = $bar->foo_[$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 94% rename from tests/switch/__snapshots__/jsfmt.spec.js.snap rename to tests/switch/__snapshots__/jsfmt.spec.mjs.snap index 431673bff..293cb2ff0 100644 --- a/tests/switch/__snapshots__/jsfmt.spec.js.snap +++ b/tests/switch/__snapshots__/jsfmt.spec.mjs.snap @@ -169,7 +169,7 @@ endswitch; =====================================output===================================== 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) - }); - - 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 d845d26c9..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 = array('coffee', 'brown', 'caffeine'); -list($drink, $color, $power) = $info; -list( +$info = ["coffee", "brown", "caffeine"]; +[$drink, $color, $power] = $info; +[ $reallyReallyReallyReallyLongName, $otherReallyReallyReallyLongName, - $lastOne -) = $info; + $lastOne, +] = $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.js.snap deleted file mode 100644 index b65691af5..000000000 --- a/tests/trailing_commas/__snapshots__/jsfmt.spec.js.snap +++ /dev/null @@ -1,2909 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`array.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - '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',]; -$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'); -$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',); -$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'); -$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',); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT -, - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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' -]; -$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' -); -$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' -); -$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' -); -$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' -); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar' -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar' -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT - , - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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',]; -$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'); -$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',); -$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'); -$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',); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT -, - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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', -]; -$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', -); -$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', -); -$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', -); -$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', -); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT - , - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - , - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - , - ), - ), -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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',]; -$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'); -$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',); -$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'); -$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',); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT -, - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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', -]; -$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', -); -$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', -); -$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', -); -$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', -); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT - , - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - , - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - , - ), - ), -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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',]; -$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'); -$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',); -$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'); -$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',); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT -, - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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', -]; -$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', -); -$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', -); -$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', -); -$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', -); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT - , - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - , - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - , - ), - ), -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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',]; -$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'); -$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',); -$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'); -$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',); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -, - 'bar', -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT -, - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << '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' -]; -$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' -); -$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' -); -$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' -); -$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' -); -$packages = array_merge( - idx($composer, 'require', []), - idx($composer, 'require-dev', []) -); - -// nowdoc -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - 'foo', - <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar' -); - -// heredoc -$expected = array( - << <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - 'foo', - 'key' => <<<'EOT' -foo -# bar -baz - -EOT -); -$expected = array( - 'key' => <<<'EOT' -foo -# bar -baz - -EOT - , - 'bar' -); - -// Associative array with heredoc -$expected = array( - 'key' => << << << <<<'EOT' -foo -# bar -baz - -EOT - , - 'collection' => array( - array( - 'one' => <<<'EOT' -foo -# bar -baz - -EOT - ), - array( - 'two' => <<<'EOT' -foo -# bar -baz -EOT - ) - ) -); - -// Nested with heredoc -$expected = array( - 'test' => << array( - array( - 'one' => << << $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; - -=====================================output===================================== - $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; - -================================================================================ -`; - -exports[`list.php 2`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 -trailingCommaPHP: "php5" - | printWidth -=====================================input====================================== - $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; - -=====================================output===================================== - $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; - -================================================================================ -`; - -exports[`list.php 3`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 -trailingCommaPHP: "php7.2" - | printWidth -=====================================input====================================== - $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; - -=====================================output===================================== - $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; - -================================================================================ -`; - -exports[`list.php 4`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 -trailingCommaPHP: "all" - | printWidth -=====================================input====================================== - $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; - -=====================================output===================================== - $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; - -================================================================================ -`; - -exports[`list.php 5`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 -trailingComma: "all" - | printWidth -=====================================input====================================== - $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; - -=====================================output===================================== - $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; - -================================================================================ -`; - -exports[`use.php 1`] = ` -====================================options===================================== -parsers: ["php"] -printWidth: 80 - | printWidth -=====================================input====================================== - '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',]; +$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'); +$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',); +$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'); +$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',); +$packages = array_merge( + idx($composer, 'require', []), + idx($composer, 'require-dev', []) +); + +// nowdoc +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// heredoc +$expected = array( + << <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// Associative array with heredoc +$expected = array( + 'key' => << << << <<<'EOT' +foo +# bar +baz + +EOT +, + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + ) + ) +); + +// Nested with heredoc +$expected = array( + 'test' => << array( + array( + 'one' => << << "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", +]; +$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", +]; +$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", +]; +$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", +]; +$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", +]; +$packages = array_merge( + idx($composer, "require", []), + idx($composer, "require-dev", []) +); + +// nowdoc +$expected = [ + <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "foo", + <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + <<<'EOT' +foo +# bar +baz + +EOT + , + "bar", +]; + +// heredoc +$expected = [ + << <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "foo", + "key" => <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "key" => <<<'EOT' +foo +# bar +baz + +EOT + , + "bar", +]; + +// Associative array with heredoc +$expected = [ + "key" => << << << <<<'EOT' +foo +# bar +baz + +EOT + , + "collection" => [ + [ + "one" => <<<'EOT' +foo +# bar +baz + +EOT + , + ], + [ + "two" => <<<'EOT' +foo +# bar +baz +EOT + , + ], + ], +]; + +// Nested with heredoc +$expected = [ + "test" => << [ + [ + "one" => << << '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',]; +$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'); +$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',); +$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'); +$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',); +$packages = array_merge( + idx($composer, 'require', []), + idx($composer, 'require-dev', []) +); + +// nowdoc +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// heredoc +$expected = array( + << <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// Associative array with heredoc +$expected = array( + 'key' => << << << <<<'EOT' +foo +# bar +baz + +EOT +, + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + ) + ) +); + +// Nested with heredoc +$expected = array( + 'test' => << array( + array( + 'one' => << << "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", +); +$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", +); +$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", +); +$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", +); +$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", +); +$packages = array_merge( + idx($composer, "require", array()), + idx($composer, "require-dev", array()) +); + +// nowdoc +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + "foo", + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT + , + "bar", +); + +// heredoc +$expected = array( + << <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + "foo", + "key" => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + "key" => <<<'EOT' +foo +# bar +baz + +EOT + , + "bar", +); + +// Associative array with heredoc +$expected = array( + "key" => << << << <<<'EOT' +foo +# bar +baz + +EOT + , + "collection" => array( + array( + "one" => <<<'EOT' +foo +# bar +baz + +EOT + , + ), + array( + "two" => <<<'EOT' +foo +# bar +baz +EOT + , + ), + ), +); + +// Nested with heredoc +$expected = array( + "test" => << array( + array( + "one" => << << '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',]; +$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'); +$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',); +$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'); +$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',); +$packages = array_merge( + idx($composer, 'require', []), + idx($composer, 'require-dev', []) +); + +// nowdoc +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// heredoc +$expected = array( + << <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// Associative array with heredoc +$expected = array( + 'key' => << << << <<<'EOT' +foo +# bar +baz + +EOT +, + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + ) + ) +); + +// Nested with heredoc +$expected = array( + 'test' => << array( + array( + 'one' => << << "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", +]; +$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", +]; +$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", +]; +$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", +]; +$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", +]; +$packages = array_merge( + idx($composer, "require", []), + idx($composer, "require-dev", []) +); + +// nowdoc +$expected = [ + <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "foo", + <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + <<<'EOT' +foo +# bar +baz + +EOT + , + "bar", +]; + +// heredoc +$expected = [ + << <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "foo", + "key" => <<<'EOT' +foo +# bar +baz + +EOT +, +]; +$expected = [ + "key" => <<<'EOT' +foo +# bar +baz + +EOT + , + "bar", +]; + +// Associative array with heredoc +$expected = [ + "key" => << << << <<<'EOT' +foo +# bar +baz + +EOT + , + "collection" => [ + [ + "one" => <<<'EOT' +foo +# bar +baz + +EOT + , + ], + [ + "two" => <<<'EOT' +foo +# bar +baz +EOT + , + ], + ], +]; + +// Nested with heredoc +$expected = [ + "test" => << [ + [ + "one" => << << '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',]; +$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'); +$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',); +$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'); +$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',); +$packages = array_merge( + idx($composer, 'require', []), + idx($composer, 'require-dev', []) +); + +// nowdoc +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// heredoc +$expected = array( + << <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// Associative array with heredoc +$expected = array( + 'key' => << << << <<<'EOT' +foo +# bar +baz + +EOT +, + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + ) + ) +); + +// Nested with heredoc +$expected = array( + 'test' => << array( + array( + 'one' => << << "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", +]; +$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", +]; +$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", +]; +$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", +]; +$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", +]; +$packages = array_merge( + idx($composer, "require", []), + idx($composer, "require-dev", []), +); + +// nowdoc +$expected = [ + <<<'EOT' + foo + # bar + baz + + EOT +, +]; +$expected = [ + "foo", + <<<'EOT' + foo + # bar + baz + + EOT +, +]; +$expected = [ + <<<'EOT' + foo + # bar + baz + + EOT + , + "bar", +]; + +// heredoc +$expected = [ + << <<<'EOT' + foo + # bar + baz + + EOT +, +]; +$expected = [ + "foo", + "key" => <<<'EOT' + foo + # bar + baz + + EOT +, +]; +$expected = [ + "key" => <<<'EOT' + foo + # bar + baz + + EOT + , + "bar", +]; + +// Associative array with heredoc +$expected = [ + "key" => << << << <<<'EOT' + foo + # bar + baz + + EOT + , + "collection" => [ + [ + "one" => <<<'EOT' + foo + # bar + baz + + EOT + , + ], + [ + "two" => <<<'EOT' + foo + # bar + baz + EOT + , + ], + ], +]; + +// Nested with heredoc +$expected = [ + "test" => << [ + [ + "one" => << << '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',]; +$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'); +$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',); +$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'); +$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',); +$packages = array_merge( + idx($composer, 'require', []), + idx($composer, 'require-dev', []) +); + +// nowdoc +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// heredoc +$expected = array( + << <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'foo', + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, +); +$expected = array( + 'key' => <<<'EOT' +foo +# bar +baz + +EOT +, + 'bar', +); + +// Associative array with heredoc +$expected = array( + 'key' => << << << <<<'EOT' +foo +# bar +baz + +EOT +, + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + ) + ) +); + +// Nested with heredoc +$expected = array( + 'test' => << array( + array( + 'one' => << << "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" +]; +$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" +]; +$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" +]; +$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" +]; +$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" +]; +$packages = array_merge( + idx($composer, "require", []), + idx($composer, "require-dev", []) +); + +// nowdoc +$expected = [ + <<<'EOT' +foo +# bar +baz + +EOT +]; +$expected = [ + "foo", + <<<'EOT' +foo +# bar +baz + +EOT +]; +$expected = [ + <<<'EOT' +foo +# bar +baz + +EOT + , + "bar" +]; + +// heredoc +$expected = [ + << <<<'EOT' +foo +# bar +baz + +EOT +]; +$expected = [ + "foo", + "key" => <<<'EOT' +foo +# bar +baz + +EOT +]; +$expected = [ + "key" => <<<'EOT' +foo +# bar +baz + +EOT + , + "bar" +]; + +// Associative array with heredoc +$expected = [ + "key" => << << << <<<'EOT' +foo +# bar +baz + +EOT + , + "collection" => [ + [ + "one" => <<<'EOT' +foo +# bar +baz + +EOT + ], + [ + "two" => <<<'EOT' +foo +# bar +baz +EOT + ] + ] +]; + +// Nested with heredoc +$expected = [ + "test" => << [ + [ + "one" => << <<bar( + 'method', + 'bar', +); + +$foo->bar( + 'method', + 'bar', + 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', +); + +$foo( + 'invoke', + 'bar', +); + +$foo( + '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',); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, +); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + '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', + '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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ['foo', 'bar',], +); + +$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', +); + +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',],); + +call(<<<'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 + , +); + +call(<<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT + , +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }, function ($x) { return $x->selected; },); +=====================================output===================================== +bar("method", "bar"); + +$foo->bar( + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" +); + +$foo("invoke", "bar"); + +$foo( + "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" +); + +var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + "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", + "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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ["foo", "bar"] +); + +$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" +); + +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", + ] +); + +call( + <<<'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 +); + +call( + <<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { + return $x->selected; + }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter( + function ($x) { + return $x->selected; + }, + function ($x) { + return $x->selected; + } + ); + +================================================================================ +`; + +exports[`call.php 2`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "5.0" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== +bar( + 'method', + 'bar', +); + +$foo->bar( + 'method', + 'bar', + 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', +); + +$foo( + 'invoke', + 'bar', +); + +$foo( + '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',); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, +); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + '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', + '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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ['foo', 'bar',], +); + +$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', +); + +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',],); + +call(<<<'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 + , +); + +call(<<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT + , +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }, function ($x) { return $x->selected; },); +=====================================output===================================== +bar("method", "bar"); + +$foo->bar( + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" +); + +$foo("invoke", "bar"); + +$foo( + "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" +); + +var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + "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", + "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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + array("foo", "bar") +); + +$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" +); + +call( + array( + "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", + ) +); + +call( + <<<'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 +); + +call( + <<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { + return $x->selected; + }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter( + function ($x) { + return $x->selected; + }, + function ($x) { + return $x->selected; + } + ); + +================================================================================ +`; + +exports[`call.php 3`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.2" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== +bar( + 'method', + 'bar', +); + +$foo->bar( + 'method', + 'bar', + 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', +); + +$foo( + 'invoke', + 'bar', +); + +$foo( + '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',); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, +); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + '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', + '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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ['foo', 'bar',], +); + +$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', +); + +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',],); + +call(<<<'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 + , +); + +call(<<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT + , +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }, function ($x) { return $x->selected; },); +=====================================output===================================== +bar("method", "bar"); + +$foo->bar( + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" +); + +$foo("invoke", "bar"); + +$foo( + "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" +); + +var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + "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", + "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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ["foo", "bar"] +); + +$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" +); + +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", + ] +); + +call( + <<<'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 +); + +call( + <<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { + return $x->selected; + }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter( + function ($x) { + return $x->selected; + }, + function ($x) { + return $x->selected; + } + ); + +================================================================================ +`; + +exports[`call.php 4`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.3" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== +bar( + 'method', + 'bar', +); + +$foo->bar( + 'method', + 'bar', + 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', +); + +$foo( + 'invoke', + 'bar', +); + +$foo( + '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',); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, +); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + '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', + '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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ['foo', 'bar',], +); + +$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', +); + +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',],); + +call(<<<'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 + , +); + +call(<<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT + , +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }, function ($x) { return $x->selected; },); +=====================================output===================================== +bar("method", "bar"); + +$foo->bar( + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string", +); + +$foo("invoke", "bar"); + +$foo( + "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", +); + +var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + "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", + "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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ["foo", "bar"], +); + +$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", +); + +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", + ], +); + +call( + <<<'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 + , +); + +call( + <<foo. + Now, I am printing some {$foo->bar[1]}. + This should not print a capital 'A': \\x41 + EOT + , +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { + return $x->selected; + }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter( + function ($x) { + return $x->selected; + }, + function ($x) { + return $x->selected; + }, + ); + +================================================================================ +`; + +exports[`call.php 5`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.0" +printWidth: 80 +trailingComma: "all" +trailingCommaPHP: false + | printWidth +=====================================input====================================== +bar( + 'method', + 'bar', +); + +$foo->bar( + 'method', + 'bar', + 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', +); + +$foo( + 'invoke', + 'bar', +); + +$foo( + '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',); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, +); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + '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', + '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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ['foo', 'bar',], +); + +$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', +); + +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',],); + +call(<<<'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 + , +); + +call(<<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT + , +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }, function ($x) { return $x->selected; },); +=====================================output===================================== +bar("method", "bar"); + +$foo->bar( + "method", + "bar", + "very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string" +); + +$foo("invoke", "bar"); + +$foo( + "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" +); + +var_dump($whatIsInThere, $probablyABugInThisOne, $oneMoreToCheck); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + "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", + "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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ["foo", "bar"] +); + +$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" +); + +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" + ] +); + +call( + <<<'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 +); + +call( + <<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \\x41 +EOT +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { + return $x->selected; + }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter( + function ($x) { + return $x->selected; + }, + function ($x) { + return $x->selected; + } + ); + +================================================================================ +`; + +exports[`isset.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.0" +printWidth: 80 + | printWidth +=====================================input====================================== + $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; + +=====================================output===================================== + $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; + +================================================================================ +`; + +exports[`list.php 2`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "5.0" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== + $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; + +=====================================output===================================== + $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; + +================================================================================ +`; + +exports[`list.php 3`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.2" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== + $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; + +=====================================output===================================== + $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; + +================================================================================ +`; + +exports[`list.php 4`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.3" +printWidth: 80 +trailingCommaPHP: true + | printWidth +=====================================input====================================== + $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; + +=====================================output===================================== + $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; + +================================================================================ +`; + +exports[`list.php 5`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.0" +printWidth: 80 +trailingComma: "all" +trailingCommaPHP: false + | printWidth +=====================================input====================================== + $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; + +=====================================output===================================== + $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; + +================================================================================ +`; + +exports[`unset.php 1`] = ` +====================================options===================================== +parsers: ["php"] +phpVersion: "7.0" +printWidth: 80 + | printWidth +=====================================input====================================== +bar( + 'method', + 'bar', +); + +$foo->bar( + 'method', + 'bar', + 'very-very-very-very-very-very-very-very-very-very-very-very-veru-long-string', +); + +$foo( + 'invoke', + 'bar', +); + +$foo( + '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',); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, +); + +var_dump( + $whatIsInThere, + $probablyABugInThisOne, + $oneMoreToCheck, + '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', + '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, + $arrayTwo, + $arrayTwo, + $arrayTwo, + $arrayTwo, + ['foo', 'bar',], +); + +$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', +); + +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',],); + +call(<<<'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 + , +); + +call(<<foo. +Now, I am printing some {$foo->bar[1]}. +This should not print a capital 'A': \x41 +EOT + , +); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }); + +$sel = $this->connections + + ->concat($this->activities->concat($this->operators)) + ->filter(function ($x) { return $x->selected; }, function ($x) { return $x->selected; },); \ No newline at end of file diff --git a/tests/trailing_commas/isset.php b/tests/trailing_commas/isset.php new file mode 100644 index 000000000..8a55cfd80 --- /dev/null +++ b/tests/trailing_commas/isset.php @@ -0,0 +1,4 @@ + ================================================================================ 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 93% rename from tests/use/__snapshots__/jsfmt.spec.js.snap rename to tests/use/__snapshots__/jsfmt.spec.mjs.snap index 95105fe2b..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===================================== @@ -43,7 +43,8 @@ use \\Vendor\\Package\\SomeNamespace\\{ }; use Exception; use \\Exception; - +use \\Exception\\My; +use \\Carbon\\Carbon, \\App, \\Response, \\Input, \\Auth, \\URL; =====================================output===================================== $id_field; $id = $element->{$id_field}; $id = $element[$id_field]; $var = <<$id_field; $id = $element->{$id_field}; $id = $element[$id_field]; $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/variable/variable.php b/tests/variable/variable.php index f58e1ad7c..18896dc0b 100644 --- a/tests/variable/variable.php +++ b/tests/variable/variable.php @@ -6,6 +6,7 @@ $täyte = 'mansikka'; $bar = &$foo; $bar = "My name is $bar"; +$id = $element->$id_field; $id = $element->{$id_field}; $id = $element[$id_field]; $var = << 123; +} + =====================================output===================================== 123; +} + ================================================================================ `; 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/yield/yield.php b/tests/yield/yield.php index 597e27c98..b33f58663 100644 --- a/tests/yield/yield.php +++ b/tests/yield/yield.php @@ -51,3 +51,8 @@ function count_to_ten() { return yield from nine_ten(); } + +function foo() { + $test = 123; + yield "bar {$test}" => 123; +} 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 71% rename from tests_config/run_spec.js rename to tests_config/run_spec.mjs index 058e06def..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,11 +10,11 @@ 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) || [])] + plugins: [plugin, ...((options && options.plugins) || [])], }); // istanbul ignore next @@ -22,14 +22,14 @@ global.run_spec = (dirname, parsers, options) => { throw new Error(`No parsers were specified for ${dirname}`); } - fs.readdirSync(dirname).forEach(basename => { + fs.readdirSync(dirname).forEach((basename) => { const filename = path.join(dirname, basename); if ( path.extname(basename) === ".snap" || !fs.lstatSync(filename).isFile() || basename[0] === "." || - basename === "jsfmt.spec.js" + basename === "jsfmt.spec.mjs" ) { return; } @@ -58,18 +58,23 @@ global.run_spec = (dirname, parsers, options) => { const baseOptions = Object.assign({ printWidth: 80 }, options, { rangeStart, rangeEnd, - cursorOffset + cursorOffset, }); const mainOptions = Object.assign({}, baseOptions, { - parser: parsers[0] + parser: parsers[0], }); 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) ); @@ -138,7 +143,7 @@ function format(source, filename, options) { function consistentEndOfLine(text) { let firstEndOfLine; - return text.replace(/\r\n?|\n/g, endOfLine => { + return text.replace(/\r\n?|\n/g, (endOfLine) => { if (!firstEndOfLine) { firstEndOfLine = endOfLine; } @@ -147,7 +152,7 @@ function consistentEndOfLine(text) { } function visualizeEndOfLine(text) { - return text.replace(/\r\n?|\n/g, endOfLine => { + return text.replace(/\r\n?|\n/g, (endOfLine) => { switch (endOfLine) { case "\n": return "\n"; @@ -173,7 +178,7 @@ function createSnapshot(input, output, options) { printOptions( omit( options, - k => k === "rangeStart" || k === "rangeEnd" || k === "cursorOffset" + (k) => k === "rangeStart" || k === "rangeEnd" || k === "cursorOffset" ) ), printWidthIndicator, @@ -195,13 +200,13 @@ function printSeparator(width, description) { function printOptions(options) { const keys = Object.keys(options).sort(); - return keys.map(key => `${key}: ${stringify(options[key])}`).join("\n"); + return keys.map((key) => `${key}: ${stringify(options[key])}`).join("\n"); function stringify(value) { 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 1861fe1a0..b36e788a3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,1261 +2,2369 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" - integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== - dependencies: - "@babel/highlight" "^7.0.0" +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== +"@ampproject/remapping@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.1.tgz#7922fb0817bf3166d8d9e258c57477e3fd1c3610" + integrity sha512-Aolwjd7HSC2PyY0fDj/wA/EimQT4HfEnFYNp5s9CQlrdhyvWTtvZ5YzrUPu6R6/1jKiUlxu8bUhkdSnKHNAHMA== dependencies: - "@babel/highlight" "^7.0.0" + "@jridgewell/trace-mapping" "^0.3.0" -"@babel/core@^7.1.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687" - integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw== +"@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/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" - "@babel/helpers" "^7.2.0" - "@babel/parser" "^7.2.2" - "@babel/template" "^7.2.2" - "@babel/traverse" "^7.2.2" - "@babel/types" "^7.2.2" - convert-source-map "^1.1.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.10" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.0.0", "@babel/generator@^7.2.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.2.tgz#fff31a7b2f2f3dad23ef8e01be45b0d5c2fc0132" - integrity sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ== - dependencies: - "@babel/types" "^7.3.2" - jsesc "^2.5.1" - lodash "^4.17.10" - source-map "^0.5.0" - trim-right "^1.0.1" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" -"@babel/generator@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" - integrity sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ== +"@asamuzakjp/css-color@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-3.2.0.tgz#cc42f5b85c593f79f1fa4f25d2b9b321e61d1794" + integrity sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw== dependencies: - "@babel/types" "^7.5.5" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - trim-right "^1.0.1" + "@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-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== +"@babel/code-frame@^7.0.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/types" "^7.0.0" + "@babel/highlight" "^7.16.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== +"@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/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/highlight" "^7.18.6" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== +"@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/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/highlight" "^7.22.5" -"@babel/helper-define-map@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" - integrity sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg== +"@babel/code-frame@^7.22.5": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.5.5" - lodash "^4.17.13" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== +"@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/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@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/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-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +"@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-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/types" "^7.19.0" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== - dependencies: - "@babel/types" "^7.0.0" +"@babel/generator@^7.27.3", "@babel/generator@^7.27.5": + version "7.27.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" + integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== + dependencies: + "@babel/parser" "^7.27.5" + "@babel/types" "^7.27.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-annotate-as-pure@^7.27.1": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/helper-compilation-targets@^7.16.7": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-compilation-targets@^7.22.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + regexpu-core "^6.2.0" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz#15e8746368bfa671785f5926ff74b3064c291fab" + integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw== + dependencies: + "@babel/helper-compilation-targets" "^7.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/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== +"@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/types" "^7.4.4" + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.0.0" + js-tokens "^4.0.0" -"@babel/helper-member-expression-to-functions@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" - integrity sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA== +"@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/types" "^7.5.5" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== +"@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/types" "^7.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" -"@babel/helper-module-transforms@^7.1.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963" - integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/template" "^7.2.2" - "@babel/types" "^7.2.2" - lodash "^4.17.10" - -"@babel/helper-module-transforms@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" - integrity sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.5.5" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== - dependencies: - "@babel/types" "^7.0.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/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@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/helper-regex@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" - integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== - dependencies: - lodash "^4.17.10" +"@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/helper-regex@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" - integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== +"@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: - lodash "^4.17.13" + "@babel/types" "^7.27.3" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.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/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/helper-replace-supers@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" - integrity sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg== +"@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-member-expression-to-functions" "^7.5.5" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.5.5" - "@babel/types" "^7.5.5" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== +"@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/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/helper-split-export-declaration@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" - integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== +"@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/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== +"@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/types" "^7.4.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/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== +"@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-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helpers@^7.2.0": - version "7.3.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9" - integrity sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA== +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.5" - "@babel/types" "^7.3.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/highlight@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" - integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.2.tgz#95cdeddfc3992a6ca2a1315191c1679ca32c55cd" - integrity sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ== +"@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.12.13" -"@babel/parser@^7.1.0": - version "7.3.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c" - integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ== +"@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.14.5" -"@babel/parser@^7.4.4", "@babel/parser@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" - integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== +"@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.27.1" -"@babel/plugin-proposal-async-generator-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== +"@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.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-proposal-dynamic-import@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" - integrity sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw== +"@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.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@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.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" - integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== +"@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.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== +"@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.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== +"@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.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-dynamic-import@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-async-to-generator@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" - integrity sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg== +"@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.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== +"@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.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce" - integrity sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg== +"@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.0.0" - lodash "^4.17.13" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-classes@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" - integrity sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg== +"@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.0.0" - "@babel/helper-define-map" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== +"@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-plugin-utils" "^7.0.0" + "@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-destructuring@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" - integrity sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== +"@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.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-keys@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" - integrity sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ== +"@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-plugin-utils" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== +"@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-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== +"@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-plugin-utils" "^7.0.0" + "@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-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== +"@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-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== +"@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-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-amd@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" - integrity sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg== +"@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-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" - integrity sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ== +"@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-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" - integrity sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg== +"@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-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== +"@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-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" - integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== +"@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: - regexp-tree "^0.1.6" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== +"@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.0.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-object-super@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" - integrity sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ== +"@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-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== +"@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-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== +"@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-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== +"@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: - regenerator-transform "^0.14.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== +"@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-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== +"@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.0.0" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== +"@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.0.0" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + "@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-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== +"@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-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== +"@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: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== +"@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.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/preset-env@^7.3.1": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.5.5.tgz#bc470b53acaa48df4b8db24a570d6da1fef53c9a" - integrity sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A== +"@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-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-dynamic-import" "^7.5.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.5.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.5.5" - "@babel/plugin-transform-classes" "^7.5.5" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.5.0" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.5.0" - "@babel/plugin-transform-modules-systemjs" "^7.5.0" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.5.5" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" - "@babel/types" "^7.5.5" - browserslist "^4.6.0" - core-js-compat "^3.1.1" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - -"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" - integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + "@babel/helper-plugin-utils" "^7.27.1" + +"@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/code-frame" "^7.0.0" - "@babel/parser" "^7.2.2" - "@babel/types" "^7.2.2" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/template@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== +"@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/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.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/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" - integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== +"@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/code-frame" "^7.0.0" - "@babel/generator" "^7.2.2" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.0.0" - "@babel/parser" "^7.2.3" - "@babel/types" "^7.2.2" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.10" - -"@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" - integrity sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.5.5" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.5.5" - "@babel/types" "^7.5.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.2", "@babel/types@^7.4.4", "@babel/types@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" - integrity sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw== +"@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: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@cnakazawa/watch@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" - integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== +"@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: - exec-sh "^0.3.2" - minimist "^1.2.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@jest/console@^24.7.1": - version "24.7.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" - integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== - dependencies: - "@jest/source-map" "^24.3.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/core@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" - integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.8.0" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - jest-watcher "^24.8.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - pirates "^4.0.1" - realpath-native "^1.1.0" - rimraf "^2.5.4" - strip-ansi "^5.0.0" - -"@jest/environment@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" - integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== - dependencies: - "@jest/fake-timers" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - -"@jest/fake-timers@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" - integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== - dependencies: - "@jest/types" "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - -"@jest/reporters@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" - integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.1.1" - jest-haste-map "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - node-notifier "^5.2.1" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" +"@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-plugin-utils" "^7.27.1" -"@jest/source-map@^24.3.0": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" - integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== +"@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: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@jest/test-result@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" - integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== - dependencies: - "@jest/console" "^24.7.1" - "@jest/types" "^24.8.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-sequencer@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" - integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== - dependencies: - "@jest/test-result" "^24.8.0" - jest-haste-map "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - -"@jest/transform@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" - integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.8.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.8.0" - jest-regex-util "^24.3.0" - jest-util "^24.8.0" - micromatch "^3.1.10" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/types@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" - integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^12.0.9" - -"@types/babel__core@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.0.tgz#710f2487dda4dcfd010ca6abb2b4dc7394365c51" - integrity sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA== +"@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/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@types/babel__generator@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" - integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== +"@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/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@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== +"@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/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-plugin-utils" "^7.27.1" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" - integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== +"@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/types" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" -"@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== +"@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" -"@types/istanbul-lib-coverage@*": - 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== +"@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" -"@types/istanbul-lib-coverage@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz#1eb8c033e98cf4e1a4cedcaf8bcafe8cb7591e85" - integrity sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg== +"@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" -"@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" - integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== +"@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: - "@types/istanbul-lib-coverage" "*" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== +"@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: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" -"@types/json-schema@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" - integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A== +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@types/node@*": - version "12.6.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.9.tgz#ffeee23afdc19ab16e979338e7b536fdebbbaeaf" - integrity sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw== +"@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== -"@types/node@^11.13.0": - version "11.13.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.0.tgz#b0df8d6ef9b5001b2be3a94d909ce3c29a80f9e1" - integrity sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng== +"@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== -"@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== +"@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: - "@types/node" "*" + "@csstools/color-helpers" "^5.0.2" + "@csstools/css-calc" "^2.1.4" -"@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== +"@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== -"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": - version "12.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.9.tgz#693e76a52f61a2f1e7fb48c0eef167b95ea4ffd0" - integrity sha512-sCZy4SxP9rN2w30Hlmg5dtdRwgYQfYRiLo9usw8X9cxlf+H4FqM1xX7+sNH7NNKVdbXMJWqva7iyy+fxh/V7fA== +"@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== -"@typescript-eslint/experimental-utils@^1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" - integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg== +"@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: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "1.13.0" - eslint-scope "^4.0.0" + "@emnapi/wasi-threads" "1.0.2" + tslib "^2.4.0" -"@typescript-eslint/typescript-estree@1.13.0": - version "1.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" - integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw== +"@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: - lodash.unescape "4.0.1" - semver "5.5.0" - -abab@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" - integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + tslib "^2.4.0" -acorn-globals@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" - integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== +"@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: - acorn "^6.0.1" - acorn-walk "^6.0.1" + tslib "^2.4.0" -acorn-jsx@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" - integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== +"@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" -acorn-walk@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" - integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== +"@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== -acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== +"@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.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + 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== -acorn@^6.0.1, acorn@^6.0.7, acorn@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +"@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== -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== +"@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: - es6-promisify "^5.0.0" + 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" -ajv@^6.5.5, ajv@^6.9.1: - version "6.9.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" - integrity sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA== +"@istanbuljs/load-nyc-config@^1.0.0": + 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: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + 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" -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +"@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== -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +"@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" "30.0.1" + "@types/node" "*" + chalk "^4.1.2" + jest-message-util "30.0.2" + jest-util "30.0.2" + slash "^3.0.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.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" + +"@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/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" + "@types/jsdom" "^21.1.7" + "@types/node" "*" + jest-mock "30.0.2" + jest-util "30.0.2" -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= +"@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/fake-timers" "30.0.2" + "@jest/types" "30.0.1" + "@types/node" "*" + jest-mock "30.0.2" -ansi-regex@^4.0.0, 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== +"@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" -ansi-styles@^3.2.0, 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== +"@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: - color-convert "^1.9.0" + expect "30.0.3" + jest-snapshot "30.0.3" -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== +"@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: - micromatch "^3.1.4" - normalize-path "^2.1.1" + "@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" "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 "^6.0.0" + istanbul-lib-report "^3.0.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" + string-length "^4.0.2" + v8-to-istanbul "^9.0.1" + +"@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: + "@sinclair/typebox" "^0.34.0" + +"@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" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-30.0.1.tgz#305ebec50468f13e658b3d5c26f85107a5620aaa" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + callsites "^3.1.0" + graceful-fs "^4.2.11" + +"@jest/test-result@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.2.tgz#786849e33da6060381c508986fa7309ff855a367" + integrity sha512-KKMuBKkkZYP/GfHMhI+cH2/P3+taMZS3qnqqiPC1UXZTJskkCS+YU/ILCtw5anw1+YsTulDHFpDo70mmCedW8w== + dependencies: + "@jest/console" "30.0.2" + "@jest/types" "30.0.1" + "@types/istanbul-lib-coverage" "^2.0.6" + collect-v8-coverage "^1.0.2" + +"@jest/test-sequencer@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.2.tgz#2693692d285b1c929ed353f7f0b7cbea51c57515" + integrity sha512-fbyU5HPka0rkalZ3MXVvq0hwZY8dx3Y6SCqR64zRmh+xXlDeFl0IdL4l9e7vp4gxEXTYHbwLFA1D+WW5CucaSw== + dependencies: + "@jest/test-result" "30.0.2" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + slash "^3.0.0" + +"@jest/transform@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.2.tgz#62ba84fcc2389ab751e7ec923958c9b1163d90c3" + integrity sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA== + dependencies: + "@babel/core" "^7.27.4" + "@jest/types" "30.0.1" + "@jridgewell/trace-mapping" "^0.3.25" + babel-plugin-istanbul "^7.0.0" + chalk "^4.1.2" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-regex-util "30.0.1" + jest-util "30.0.2" + micromatch "^4.0.8" + pirates "^4.0.7" + slash "^3.0.0" + 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: + "@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" "^17.0.33" + chalk "^4.1.2" -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== +"@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: - delegates "^1.0.0" - readable-stream "^2.0.6" + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +"@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: - sprintf-js "~1.0.2" + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" -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= +"@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== -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== +"@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== -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= +"@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== -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +"@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== -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= +"@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: - define-properties "^1.1.2" - es-abstract "^1.7.0" + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" -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= +"@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== -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +"@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== -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== +"@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: - safer-buffer "~2.1.0" + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" -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= +"@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" -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= +"@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" -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== +"@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" -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== +"@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" -async@^2.5.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== +"@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: - lodash "^4.17.11" + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +"@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== -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +"@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" -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= +"@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== -aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== - -babel-jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" - integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== - dependencies: - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.6.0" - chalk "^2.4.2" - slash "^2.0.0" +"@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" -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== +"@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: - object.assign "^4.1.0" + "@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" -babel-plugin-istanbul@^5.1.0: +"@rollup/pluginutils@^5.1.0": version "5.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.0.tgz#6892f529eff65a3e2d33d87dc5888ffa2ecd4a30" - integrity sha512-CLoXPRSUWiR8yao8bShqZUIC6qLfZVVY3X1wj+QPNXu0wfmrRRfarh1LYy+dYMVI+bDj0ghy3tuqFFRFZmL1Nw== + 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: - find-up "^3.0.0" - istanbul-lib-instrument "^3.0.0" - test-exclude "^5.0.0" + type-detect "4.0.8" -babel-plugin-jest-hoist@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" - integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== +"@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: - "@types/babel__traverse" "^7.0.6" + "@sinonjs/commons" "^3.0.1" -babel-preset-jest@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" - integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== +"@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: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.6.0" + tslib "^2.4.0" -balanced-match@^1.0.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.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.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@*": + 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/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/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@^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" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@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/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" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/node@*": + 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/resolve@1.20.2": + version "1.20.2" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" + integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== + +"@types/stack-utils@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + +"@types/yargs-parser@*": + version "20.2.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" + integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== + +"@types/yargs@^17.0.33": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/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== + +"@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-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.21.3" + +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@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.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== + +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" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +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== + +array-buffer-byte-length@^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: + 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.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + 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" + +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +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" + +arraybuffer.prototype.slice@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + 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-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.3" + istanbul-lib-instrument "^6.0.2" + test-exclude "^6.0.0" + +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.27.2" + "@babel/types" "^7.27.3" + "@types/babel__core" "^7.20.5" + +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: - tweetnacl "^0.14.3" + "@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.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.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-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 "30.0.1" + babel-preset-current-node-syntax "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + 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" @@ -1266,122 +2374,119 @@ 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" - -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== +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: - resolve "1.1.7" + balanced-match "^1.0.0" -browserslist@^4.6.0, browserslist@^4.6.2: - version "4.6.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" - integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA== +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: - caniuse-lite "^1.0.30000984" - electron-to-chromium "^1.3.191" - node-releases "^1.1.25" + fill-range "^7.0.1" -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= +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: - node-int64 "^0.4.0" + fill-range "^7.1.1" -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== +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" -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== +browserslist@^4.24.0, browserslist@^4.25.0: + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== + dependencies: + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" -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" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: - callsites "^2.0.0" + node-int64 "^0.4.0" -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +c8@^10.1.3: + version "10.1.3" + resolved "https://registry.yarnpkg.com/c8/-/c8-10.1.3.tgz#54afb25ebdcc7f3b00112482c6d90d7541ad2fcd" + integrity sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA== + dependencies: + "@bcoe/v8-coverage" "^1.0.1" + "@istanbuljs/schema" "^0.1.3" + find-up "^5.0.0" + foreground-child "^3.1.1" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.1" + istanbul-reports "^3.1.6" + test-exclude "^7.0.1" + v8-to-istanbul "^9.0.0" + yargs "^17.7.2" + yargs-parser "^21.1.1" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - caller-callsite "^2.0.0" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" -callsites@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" - integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== +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: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== +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== -caniuse-lite@^1.0.30000984: - version "1.0.30000988" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000988.tgz#742f35ec1b8b75b9628d705d7652eea1fef983db" - integrity sha512-lPj3T8poYrRc/bniW5SQPND3GRtSrQdUM/R4mCYTbZxyi3jQiggLvZH4+BYUuX0t4TXjU+vMM7KFDQg+rSzZUQ== +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@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" - integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= - dependencies: - rsvp "^3.3.3" +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.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +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== @@ -1390,80 +2495,47 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +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" -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== +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -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" +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== -cli-cursor@^2.1.0: +cjs-module-lexer@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz#586e87d4341cb2661850ece5190232ccdebcff8b" + integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +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 "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + string-width "^4.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= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -codecov@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.5.0.tgz#3d0748932f9cb41e1ad7f21fa346ef1b2b1bed47" - integrity sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ== - dependencies: - argv "^0.0.2" - ignore-walk "^3.0.1" - js-yaml "^3.13.1" - teeny-request "^3.11.3" - urlgrey "^0.4.4" - -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" @@ -1472,233 +2544,182 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + 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== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" - integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== - dependencies: - delayed-stream "~1.0.0" +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== -commander@~2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== +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.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= +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= -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -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.1.0, convert-source-map@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" - integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +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.1.1: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.4.tgz#e4d0c40fbd01e65b1d457980fe4112d4358a7408" - integrity sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg== - dependencies: - browserslist "^4.6.2" - core-js-pure "3.1.4" - semver "^6.1.1" - -core-js-pure@3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.4.tgz#5fa17dc77002a169a3566cc48dc774d2e13e3769" - integrity sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +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== -cosmiconfig@^5.0.0: - version "5.0.7" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" - integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA== +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: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" + browserslist "^4.25.0" -create-jest-runner@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/create-jest-runner/-/create-jest-runner-0.4.1.tgz#eeda15bc0f9dc622ef2de5a7fd9a0f1a2c2eb62d" - integrity sha512-JOy675JMZ3b05F3VfAAi6Igme3pVBWu7Rt+gbW9ujAiX/Dua7+G47O7IbfiUU/FZjXhtipu/tz930b++UMGQEA== +cross-env@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: - jest-worker "^23.2.0" - throat "^4.1.0" + cross-spawn "^7.0.1" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== +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== dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.6" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" - integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -cssstyle@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" - integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== +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: - cssom "0.3.x" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -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= +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: - assert-plus "^1.0.0" + "@asamuzakjp/css-color" "^3.2.0" + rrweb-cssom "^0.8.0" -data-urls@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== +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: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" -debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - ms "2.0.0" + ms "2.1.2" -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +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@^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@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + ms "^2.1.3" -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decimal.js@^10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" + integrity sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== +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== -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= +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: - 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" + has-property-descriptors "^1.0.0" + object-keys "^1.1.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= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +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== -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +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" -detect-newline@^2.1.0: +doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -diff-sequences@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" - integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + 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" @@ -1707,553 +2728,604 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -electron-to-chromium@^1.3.191: - version "1.3.210" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.210.tgz#0ce6247366c5771d4f5663a5879388fd1adefb7e" - integrity sha512-m1i/F+gw9jkauxDx0mOr7Sj6vp6se1mfkQNYqZb1yL5VGTp0AC1NZH5CGI6YMSO7WaScILmkKDZFG9/hlR9axQ== - -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== - -end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== - dependencies: - once "^1.4.0" - -error-ex@^1.2.0, error-ex@^1.3.1: +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.4.648: + version "1.4.656" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz#b374fb7cab9b782a5bc967c0ce0e19826186b9c9" + integrity sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q== + +electron-to-chromium@^1.5.173: + version "1.5.174" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.174.tgz#c7d273755d4dc9bc4f1d192f6f2092bee42771f3" + integrity sha512-HE43yYdUUiJVjewV2A9EP8o89Kb4AqMKplMQP2IxEPUws1Etu/ZkdsgUDabUZ/WmbP4ZbvJDOcunvbBUPPIfmw== + +emittery@^0.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== + +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== + +entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + +error-ex@^1.3.1: version "1.3.2" 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.5.1, es-abstract@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +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.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.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: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" + get-intrinsic "^1.1.3" has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" + has-tostringtag "^1.0.0" -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +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" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" - integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" +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== -escodegen@^1.9.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz#f429a53bde9fc7660e6353910fd996d6284d3c25" - integrity sha512-vDrcCFE3+2ixNT5H83g28bO/uYAwibJxerXPj+E7op4qzBCsAV36QfvdAyVOoNxKAH2Os/e01T/2x++V0LPukA== - dependencies: - get-stdin "^6.0.0" - -eslint-import-resolver-node@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" - integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== - dependencies: - debug "^2.6.9" - resolve "^1.5.0" - -eslint-module-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" - integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== - dependencies: - debug "^2.6.8" - pkg-dir "^2.0.0" - -eslint-plugin-import@2.17.2: - version "2.17.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz#d227d5c6dc67eca71eb590d2bb62fb38d86e9fcb" - integrity sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g== - dependencies: - array-includes "^3.0.3" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.0" - has "^1.0.3" - lodash "^4.17.11" - minimatch "^3.0.4" - read-pkg-up "^2.0.0" - resolve "^1.10.0" +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== -eslint-plugin-jest@22.14.1: - version "22.14.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.14.1.tgz#32287dade9bc0a1920c61e25a71cf11363d78015" - integrity sha512-mpLjhADl+HjagrlaGNx95HIji089S18DhnU/Ee8P8VP+dhEnuEzb43BXEaRmDgQ7BiSUPcSCvt1ydtgPkjOF/Q== - dependencies: - "@typescript-eslint/experimental-utils" "^1.13.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.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz#19d521e3981f69dd6d14f64aec8c6a6ac6eb0b0d" - integrity sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ== +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@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +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-scope@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.2.tgz#5f10cd6cabb1965bf479fa65745673439e21cb0e" - integrity sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg== +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: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" - integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== - -eslint-visitor-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" - integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint@5.15.1, eslint@^5.6.0: - version "5.15.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.15.1.tgz#8266b089fd5391e0009a047050795b1d73664524" - integrity sha512-NTcm6vQ+PTgN3UBsALw5BMhgO6i5EpIjQF/Xb5tIh3sk9QhrFafujUOczGz4J24JBlzWclSB9Vmx8d+9Z6bFCg== +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" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" + 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.3.2" doctrine "^3.0.0" - eslint-scope "^4.0.2" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" + 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 "^7.1.2" - globals "^11.7.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" - inquirer "^6.2.2" - js-yaml "^3.12.0" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +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 "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.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.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +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 "^4.0.0" + 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@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + estraverse "^5.2.0" -estree-walker@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" - integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estree-walker@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.0.tgz#5d865327c44a618dde5699f763891ae31f257dae" - integrity sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw== +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== -esutils@^2.0.2: +estree-walker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= - -exec-sh@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" - integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== - -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" - -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@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" - integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== - dependencies: - "@jest/types" "^24.8.0" - ansi-styles "^3.2.0" - jest-get-type "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.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== - -external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -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= + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +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== + +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" + +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: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= +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.4: +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.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= +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.0.0" + reusify "^1.0.4" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +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: - escape-string-regexp "^1.0.5" + bser "2.1.1" -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== +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: - flat-cache "^2.0.1" + flat-cache "^3.0.4" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + 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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - locate-path "^3.0.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" - -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + locate-path "^6.0.0" + path-exists "^4.0.0" -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= +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" -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= +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== -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== +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: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" + is-callable "^1.1.3" -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.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== dependencies: - map-cache "^0.2.2" + cross-spawn "^7.0.6" + signal-exit "^4.0.1" -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== +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: - minipass "^2.2.1" + 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@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== +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== + +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.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" + +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.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.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, 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: - nan "^2.9.2" - node-pre-gyp "^0.10.0" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" -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== +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: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.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= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +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: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" -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-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@^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-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: - pump "^3.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -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= +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" -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +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: - assert-plus "^1.0.0" + is-glob "^4.0.3" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +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" @@ -2262,169 +3334,186 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.1.0, globals@^11.7.0: - version "11.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" - integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== +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" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +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== -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= +globals@^13.19.0: + version "13.19.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" + integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== + dependencies: + type-fest "^0.20.2" -handlebars@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" - integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== +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: - async "^2.5.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" + define-properties "^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= +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" -har-validator@~5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== +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: - ajv "^6.5.5" - har-schema "^2.0.0" + get-intrinsic "^1.1.3" + +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== + +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-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -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-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-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-values@^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= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" +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@^1.0.1, has@^1.0.3: +has-symbols@^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== + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: - function-bind "^1.1.1" + has-symbols "^1.0.2" -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== +has@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +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: - whatwg-encoding "^1.0.1" + function-bind "^1.1.2" -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= +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: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + whatwg-encoding "^3.1.1" -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +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: - safer-buffer ">= 2.1.2 < 3" + agent-base "^7.1.0" + debug "^4.3.4" -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== +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: - minimatch "^3.0.4" + agent-base "^7.1.2" + debug "4" -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +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== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= +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: - caller-path "^2.0.0" - resolve-from "^3.0.0" + safer-buffer ">= 2.1.2 < 3.0.0" -import-fresh@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" - integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== +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.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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== +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 "^3.0.0" - resolve-cwd "^2.0.0" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" imurmurhash@^0.1.4: version "0.1.4" @@ -2434,2300 +3523,1681 @@ 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" -inherits@2, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inquirer@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" - integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== +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: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.0.0" - through "^2.3.6" - -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== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -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: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - -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.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= +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-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -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= + hasown "^2.0.0" -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-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^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: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" - integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g== +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, 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= - dependencies: - kind-of "^3.0.2" +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-plain-object@^2.0.1, 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== +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: - isobject "^3.0.1" + has-tostringtag "^1.0.0" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +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-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.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-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-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-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== +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: - has-symbols "^1.0.0" + "@types/estree" "*" -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-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-windows@^1.0.2: +is-shared-array-buffer@^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== + 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-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -isarray@1.0.0, 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= +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" -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= +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" -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= +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: - isarray "1.0.0" + 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" -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= +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" -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= +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: + call-bind "^1.0.2" -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" - integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== +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== -istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" - integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA== +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +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@^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.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +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.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" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - "@babel/generator" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - istanbul-lib-coverage "^2.0.3" - semver "^5.5.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-report@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4" - integrity sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA== +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 "^2.0.3" - make-dir "^1.3.0" - supports-color "^6.0.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156" - integrity sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ== +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 "^2.0.3" - make-dir "^1.3.0" - rimraf "^2.6.2" - source-map "^0.6.1" + istanbul-lib-coverage "^3.0.0" -istanbul-reports@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz#72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9" - integrity sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw== - dependencies: - handlebars "^4.1.0" - -jest-changed-files@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" - integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== - dependencies: - "@jest/types" "^24.8.0" - execa "^1.0.0" - throat "^4.0.0" - -jest-cli@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" - integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== - dependencies: - "@jest/core" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^12.0.2" - -jest-config@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" - integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.8.0" - "@jest/types" "^24.8.0" - babel-jest "^24.8.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^24.8.0" - jest-environment-node "^24.8.0" - jest-get-type "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - micromatch "^3.1.10" - pretty-format "^24.8.0" - realpath-native "^1.1.0" - -jest-diff@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" - integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.3.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" - -jest-docblock@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" - integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== - dependencies: - detect-newline "^2.1.0" - -jest-each@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" - integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== - dependencies: - "@jest/types" "^24.8.0" - chalk "^2.0.1" - jest-get-type "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - -jest-environment-jsdom@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" - integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" - jsdom "^11.5.1" - -jest-environment-node@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" - integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" - -jest-get-type@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" - integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== - -jest-haste-map@^24.8.0: - version "24.8.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982" - integrity sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g== - dependencies: - "@jest/types" "^24.8.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.4.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-jasmine2@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" - integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^24.8.0" - is-generator-fn "^2.0.0" - jest-each "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - throat "^4.0.0" - -jest-leak-detector@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" - integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== - dependencies: - pretty-format "^24.8.0" - -jest-matcher-utils@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" - integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== - dependencies: - chalk "^2.0.1" - jest-diff "^24.8.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" - -jest-message-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" - integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== +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: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - -jest-mock@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" - integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== - dependencies: - "@jest/types" "^24.8.0" - -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== - -jest-regex-util@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" - integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== - -jest-resolve-dependencies@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" - integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== - dependencies: - "@jest/types" "^24.8.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.8.0" - -jest-resolve@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" - integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== - dependencies: - "@jest/types" "^24.8.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-runner-eslint@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/jest-runner-eslint/-/jest-runner-eslint-0.7.3.tgz#1dd876115eb2c779c6726d4cc18f0ed526ff9954" - integrity sha512-MywU/1Fm+0PisAyYSeJ0MsmSD3oGfWyCbkgvBWu7xEChCIiCMaQ+3Cm3AvAIJZPvVlDtQtKN6lEa2QcMyF3DGQ== - dependencies: - chalk "^2.4.1" - cosmiconfig "^5.0.0" - create-jest-runner "^0.4.1" - eslint "^5.6.0" - -jest-runner@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" - integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.4.2" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-leak-detector "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" - integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.2" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^12.0.2" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -jest-serializer@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" - integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== +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: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -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== +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: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@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.1.2" + co "^4.6.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" + 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-json-comments "^3.1.1" + +jest-diff@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.3.tgz#50ac056b90fe9151d6266b18a27adeb064c30235" + integrity sha512-Q1TAV0cUcBTic57SVnk/mug0/ASyAqtSIOkr7RAlxx97llRYsM74+E8N5WdGJUlwCKwgxPAkVjKh653h1+HA9A== + dependencies: + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.0.1" + chalk "^4.1.2" + pretty-format "30.0.2" + +jest-docblock@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.0.1.tgz#545ff59f2fa88996bd470dba7d3798a8421180b1" + integrity sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA== + dependencies: + detect-newline "^3.1.0" + +jest-each@30.0.2, jest-each@^30.0.0: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.2.tgz#402e189784715f5c76f1bb97c29842e79abe99a1" + integrity sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ== + dependencies: + "@jest/get-type" "30.0.1" + "@jest/types" "30.0.1" + chalk "^4.1.2" + jest-util "30.0.2" + pretty-format "30.0.2" + +jest-environment-jsdom@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.0.2.tgz#8f0eb3544ba5abb8de71a2be42b5a95f04485e91" + integrity sha512-lwMpe7hZ81e2PpHj+4nowAzSkC0p8ftRfzC+qEjav9p5ElCs6LAce3y46iLwMS27oL9+/KQe55gUvUDwrlDeJQ== + dependencies: + "@jest/environment" "30.0.2" + "@jest/environment-jsdom-abstract" "30.0.2" + "@types/jsdom" "^21.1.7" + "@types/node" "*" + jsdom "^26.1.0" -jest-snapshot@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" - integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== +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" "^24.8.0" - chalk "^2.0.1" - expect "^24.8.0" - jest-diff "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.8.0" - semver "^5.5.0" - -jest-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" - integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== - dependencies: - "@jest/console" "^24.7.1" - "@jest/fake-timers" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" + "@types/node" "*" + jest-mock "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" -jest-validate@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" - integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== - dependencies: - "@jest/types" "^24.8.0" - camelcase "^5.0.0" - chalk "^2.0.1" - jest-get-type "^24.8.0" - leven "^2.1.0" - pretty-format "^24.8.0" - -jest-watcher@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" - integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== - dependencies: - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.9" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.8.0" - string-length "^2.0.0" - -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" - integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= - dependencies: - merge-stream "^1.0.1" - -jest-worker@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d" - integrity sha512-s64/OThpfQvoCeHG963MiEZOAAxu8kHsaL/rCMF7lpdzo7vgF0CtPml9hfguOMgykgH/eOm4jFP4ibfHLruytg== - dependencies: - merge-stream "^1.0.1" - supports-color "^6.1.0" - -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== - dependencies: - merge-stream "^1.0.1" - supports-color "^6.1.0" - -jest@24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" - integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== - dependencies: - import-local "^2.0.0" - jest-cli "^24.8.0" - -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== +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" "30.0.1" + "@types/node" "*" + 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-mock@30.0.2, jest-mock@^30.0.0: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.2.tgz#5e4245f25f6f9532714906cab10a2b9e39eb2183" + integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA== + dependencies: + "@jest/types" "30.0.1" + "@types/node" "*" + jest-util "30.0.2" + +jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== + +jest-resolve-dependencies@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.3.tgz#8278f54a84009028b823f5c1f7033fb968405b2f" + integrity sha512-FlL6u7LiHbF0Oe27k7DHYMq2T2aNpPhxnNo75F7lEtu4A6sSw+TKkNNUGNcVckdFoL0RCWREJsC1HsKDwKRZzQ== + dependencies: + jest-regex-util "30.0.1" + jest-snapshot "30.0.3" + +jest-resolve@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.2.tgz#4b7c826a35e9657189568e4dafc0ba5f05868cf2" + integrity sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw== + dependencies: + chalk "^4.1.2" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-pnp-resolver "^1.2.3" + jest-util "30.0.2" + jest-validate "30.0.2" + slash "^3.0.0" + unrs-resolver "^1.7.11" + +jest-runner@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.3.tgz#baa1d5e77655c70cea9aa4138cfb437f6bada607" + integrity sha512-CxYBzu9WStOBBXAKkLXGoUtNOWsiS1RRmUQb6SsdUdTcqVncOau7m8AJ4cW3Mz+YL1O9pOGPSYLyvl8HBdFmkQ== + dependencies: + "@jest/console" "30.0.2" + "@jest/environment" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" + "@types/node" "*" + chalk "^4.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-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-watcher@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.2.tgz#ec93ed25183679f549a47f6197267d50ec83ea51" + integrity sha512-vYO5+E7jJuF+XmONr6CrbXdlYrgvZqtkn6pdkgjt/dU64UAdc0v1cAVaAeWtAfUUMScxNmnUjKPUMdCpNVASwg== + dependencies: + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" + "@types/node" "*" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + emittery "^0.13.1" + jest-util "30.0.2" + string-length "^4.0.2" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +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 "^8.1.1" + +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" "30.0.3" + "@jest/types" "30.0.1" + import-local "^3.2.0" + jest-cli "30.0.3" + +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.12.0, js-yaml@^3.13.1, js-yaml@^3.9.0: - 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@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" - xml-name-validator "^3.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 "^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@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" - integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== +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" -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" +json5@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -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" +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== -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" +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== -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== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== +lines-and-columns@^1.1.6: + 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== -kleur@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz#83c7ec858a41098b613d5998a7b653962b504f68" - integrity sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q== +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== -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: - invert-kv "^2.0.0" - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + p-locate "^4.1.0" -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - -levn@^0.3.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= +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: - prelude-ls "~1.1.2" - type-check "~0.3.2" + p-locate "^5.0.0" -linguist-languages@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-6.3.0.tgz#b15a847c130229cc9239ebb11f0525a0e4c7a092" - integrity sha512-d86fIQM00SqmBmAErxRpBEBe2Nw/WK4Se999wavaXc+lqarOLnoenGP3V/wgBclxKsRXEYWTd6mvv8373vPSKg== +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== -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" +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== -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" +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== -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= +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: - p-locate "^2.0.0" - path-exists "^3.0.0" + yallist "^3.0.2" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== +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: - p-locate "^3.0.0" - path-exists "^3.0.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= + yallist "^4.0.0" -lodash.unescape@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" - integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= - -lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -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== +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: - js-tokens "^3.0.0 || ^4.0.0" + "@jridgewell/sourcemap-codec" "^1.5.0" -magic-string@^0.25.0, magic-string@^0.25.2: - version "0.25.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" - integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== +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: - sourcemap-codec "^1.4.4" + semver "^6.0.0" -make-dir@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== +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: - pify "^3.0.0" + semver "^7.5.3" -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +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: - tmpl "1.0.x" + tmpl "1.0.5" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" +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== -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= +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== -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= +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: - object-visit "^1.0.0" + braces "^3.0.1" + picomatch "^2.2.3" -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== +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: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" + braces "^3.0.3" + picomatch "^2.3.1" -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - -micromatch@^3.1.10, 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" - -mime-db@~1.37.0: - version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" - integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" - integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== - dependencies: - mime-db "~1.37.0" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.0.0.tgz#0913ff0b121db44ef5848242c38bbb35d44cabde" - integrity sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA== +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== -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@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.1, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +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: - safe-buffer "^5.1.2" - yallist "^3.0.0" + brace-expansion "^2.0.1" -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== +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: - minipass "^2.2.1" + brace-expansion "^2.0.1" -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" +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== -mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" +"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.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +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== -ms@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -nan@^2.9.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== - -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= -needle@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -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.3.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" - integrity sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA== - 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-notifier@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== - dependencies: - growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" - shellwords "^0.1.1" - which "^1.3.0" - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^1.1.25: - version "1.1.26" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.26.tgz#f30563edc5c7dc20cf524cc8652ffa7be0762937" - integrity sha512-fZPsuhhUHMTlfkhDLGtfY80DSJTjOcx+qD1j5pqPkuhUHVS7xHZIg9EE4DHK8O3f0zTxXHX5VIkDG8pu98/wfQ== - dependencies: - semver "^5.3.0" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2: - 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.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== - -npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^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== -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" +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== -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +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: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + path-key "^3.0.0" -nwsapi@^2.0.7: - version "2.1.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.0.tgz#781065940aed90d9bb01ca5d0ce0fcf81c32712f" - integrity sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg== +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== -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== +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-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +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-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-keys@^1.0.11: +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-keys@^1.0.12: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" - integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== - -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.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +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: - define-properties "^1.1.2" - es-abstract "^1.5.1" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.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.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: - isobject "^3.0.1" + 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@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +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 "^1.0.0" + mimic-fn "^2.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= +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: - minimist "~0.0.1" - wordwrap "~0.0.2" + "@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" -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + p-try "^2.0.0" -os-locale@^3.0.0: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -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@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" - -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-is-promise@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" - integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== - -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== + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-try "^1.0.0" + yocto-queue "^0.1.0" -p-limit@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" - integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== +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-try "^2.0.0" + yocto-queue "^1.1.1" -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-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: - p-limit "^1.1.0" + p-limit "^2.2.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +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 "^2.0.0" - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - -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-limit "^3.0.2" p-try@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" - integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + 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.0" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.0.tgz#df250bdc5391f4a085fb589dad761f5ad6b865b5" - integrity sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= +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@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +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" -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.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@^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= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -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-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-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= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -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@glayzzle/php-parser#71485979b688d12fb130d3e853fdc00348671e00: - version "3.0.0-prerelease.8" - resolved "https://codeload.github.com/glayzzle/php-parser/tar.gz/71485979b688d12fb130d3e853fdc00348671e00" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -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" - -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" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -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.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" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^1.15.3: - version "1.17.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.0.tgz#53b303676eed22cc14a9f0cec09b477b3026c008" - integrity sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw== - -pretty-format@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" - integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== - dependencies: - "@jest/types" "^24.8.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - -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.0.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.2.tgz#094119b0b0a553ec652908b583205b9867630154" - integrity sha512-Pc/c53d2WZHJWZr78/BhZ5eHsdQtltbyBjHoA4T0cs/4yKJqCcoOHrq2SNKwtspVE0C+ebqAR5u0/mXwrHaADQ== - dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" - -psl@^1.1.24, psl@^1.1.28: - version "1.1.31" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" - integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== - -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== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - 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== - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^16.8.4: - version "16.8.4" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2" - integrity sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA== - -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" - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - -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" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -readable-stream@^2.0.1, readable-stream@^2.0.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== - dependencies: - util.promisify "^1.0.0" - -regenerate-unicode-properties@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" - integrity sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ== - 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== - -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== - dependencies: - private "^0.1.6" - -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== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp-tree@^0.1.6: - version "0.1.11" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.11.tgz#c9c7f00fcf722e0a56c7390983a7a63dd6c272f3" - integrity sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg== +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== -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpu-core@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" - integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.0.2" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - -regjsgen@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" - integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== +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== -regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== +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: - jsesc "~0.5.0" + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.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= +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== -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== +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== -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= +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== -request-promise-core@1.1.1: +picocolors@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +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== + +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== + +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" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - lodash "^4.13.1" + find-up "^4.0.0" -request-promise-native@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" - integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= - dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.3" - -request@^2.87.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - 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.0" - 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.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" +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== -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= +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" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +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== -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= +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: - resolve-from "^3.0.0" + "@jest/schemas" "30.0.1" + ansi-styles "^5.2.0" + react-is "^18.3.1" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= +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== -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +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== -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= +pure-rand@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-7.0.1.tgz#6f53a5a9e3e4a47445822af96821ca509ed37566" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +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== -resolve@^1.10.0, resolve@^1.3.2, resolve@^1.5.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== +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: - path-parse "^1.0.6" + safe-buffer "^5.1.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" +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== -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== +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: + regenerate "^1.4.2" -rimraf@2.6.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== +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: - glob "^7.1.3" + 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== -rollup-plugin-alias@^1.5.1: +regexp.prototype.flags@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-1.5.1.tgz#80cce3a967befda5b09c86abc14a043a78035b46" - integrity sha512-pQTYBRNfLedoVOO7AYHNegIavEIp4jKTga5jUi1r//KYgHKGWgG4qJXYhbcWKt2k1FwGlR5wCYoY+IFkme0t4A== + 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: - slash "^2.0.0" + jsesc "~3.0.2" -rollup-plugin-babel@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.2.tgz#8c0e1bd7aa9826e90769cf76895007098ffd1413" - integrity sha512-KfnizE258L/4enADKX61ozfwGHoqYauvoofghFJBhFnpH9Sb9dNPpWg8QHOaAfVASUYV8w0mCx430i9z0LJoJg== +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: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.3.0" + jsesc "~0.5.0" -rollup-plugin-commonjs@^9.2.0: - version "9.3.4" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz#2b3dddbbbded83d45c36ff101cdd29e924fd23bc" - integrity sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w== - dependencies: - estree-walker "^0.6.0" - magic-string "^0.25.2" - resolve "^1.10.0" - rollup-pluginutils "^2.6.0" +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= -rollup-plugin-inject@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-2.2.0.tgz#77e7e49e6949ac2a522926153cefdc854e229198" - integrity sha512-Wow9g+qkKbkK96wjLif2HqWOiuR6ZqkZbHSNt5r1bVUDQG96yzmuxlSl1grPzlTG5BbATUE7nA5HhQVfBXEigQ== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - estree-walker "^0.5.0" - magic-string "^0.25.0" - rollup-pluginutils "^2.0.1" + resolve-from "^5.0.0" -rollup-plugin-json@^4.0.0: +resolve-from@^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" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -rollup-plugin-node-resolve@^4.0.0: - version "4.2.4" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz#7d370f8d6fd3031006a0032c38262dd9be3c6250" - integrity sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw== - dependencies: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.10.0" +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== -rollup-plugin-replace@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.1.1.tgz#e49cb8d07d6f91a7bf28b90b66692f2c8c0b9bba" - integrity sha512-IS5ZYBb3px0UfbDCYzKaKxelLd5dbPHhfplEXbymfvGlz9Ok44At4AjTOWe2qEax73bE8+pnMZN9C7PcVpFNlw== +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: - magic-string "^0.25.2" - rollup-pluginutils "^2.4.1" + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -rollup-plugin-terser@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz#6f661ef284fa7c27963d242601691dc3d23f994e" - integrity sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg== +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/code-frame" "^7.0.0" - jest-worker "^24.0.0" - serialize-javascript "^1.6.1" - terser "^3.14.1" + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.4.1, rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz#203706edd43dfafeaebc355d7351119402fc83ad" - integrity sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ== - dependencies: - estree-walker "^0.6.0" - micromatch "^3.1.10" +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@^1.1.2: - version "1.9.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.9.0.tgz#65f7db8d312a07d4e9702316025f91df56ce9f9c" - integrity sha512-cNZx9MLpKFMSaObdVFeu8nXw8gfw6yjuxWjt5mRCJcBZrAJ0NHAYwemKjayvYvhLaNNkf3+kS2DKRKS5J6NRVg== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - "@types/estree" "0.0.39" - "@types/node" "^11.13.0" - acorn "^6.1.1" + glob "^7.1.3" -rsvp@^3.3.3: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +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" -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= +rrweb-cssom@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" + integrity sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - is-promise "^2.1.0" + queue-microtask "^1.2.2" -rxjs@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" - integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== +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: - tslib "^1.9.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +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.0.3" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.0.3.tgz#e878c3f19e25cc57fbb734602f48f8a97818b181" - integrity sha512-hSLkC+cPHiBQs7LSyXkotC3UUtyn8C4FMn50TNaacRyvBlI+3ebcxMpqckmTdtXVtel87YS7GXN3UIOj7NiGVQ== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^1.2.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" - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== +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@5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== +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@^6.1.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +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@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" - integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw== +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, 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@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= +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.1" - to-object-path "^0.3.0" + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +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: - 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.0.1" + functions-have-names "^1.2.3" + 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= +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - shebang-regex "^1.0.0" + 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.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" - integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== +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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + 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.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - dependencies: - atob "^2.1.1" - 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.9: - version "0.5.10" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" - integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== +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== -sourcemap-codec@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" - integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== - -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.3" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" - integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== - -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@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +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.0: - 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" -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= +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: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= +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: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +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: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.0.0.tgz#5a1690a57cc78211fffd9bf24bbe24d090604eb1" - integrity sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew== +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 "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +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: - safe-buffer "~5.1.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - ansi-regex "^2.0.0" + ansi-regex "^5.0.1" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +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 "^3.0.0" + ansi-regex "^5.0.1" -strip-ansi@^5.0.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@^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 "^4.1.0" + ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -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-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +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.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== supports-color@^5.3.0: version "5.5.0" @@ -4736,444 +5206,487 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.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== +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 "^3.0.0" + has-flag "^4.0.0" -symbol-tree@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= - -table@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== - dependencies: - ajv "^6.9.1" - lodash "^4.17.11" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" +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@^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== -teeny-request@^3.11.3: - version "3.11.3" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55" - integrity sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw== +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== + +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: - https-proxy-agent "^2.2.1" - node-fetch "^2.2.0" - uuid "^3.3.2" + "@pkgr/core" "^0.2.4" -terser@^3.14.1: - version "3.16.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.16.1.tgz#5b0dd4fa1ffd0b0b43c2493b2c364fd179160493" - integrity sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow== +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: - commander "~2.17.1" - source-map "~0.6.1" - source-map-support "~0.5.9" + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" -test-exclude@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1" - integrity sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA== +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-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: - arrify "^1.0.1" + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^1.0.1" + +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@^4.0.0, throat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +tinypool@0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.8.4.tgz#e217fe1270d941b39e98c625dcecebb1408c9aa8" + integrity sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ== -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +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== -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +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: - os-tmpdir "~1.0.2" + tldts-core "^6.1.86" -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +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" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -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" - -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: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" + is-number "^7.0.0" -tough-cookie@^2.3.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +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: - psl "^1.1.28" - punycode "^2.1.1" + tldts "^6.1.32" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== +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: - psl "^1.1.24" - punycode "^1.4.1" + punycode "^2.3.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= +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: - punycode "^2.1.0" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -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.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== -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= +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== -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= +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: - prelude-ls "~1.1.2" + tslib "^1.8.1" -uglify-js@^3.1.4: - version "3.4.9" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" - integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - commander "~2.17.1" - source-map "~0.6.1" - -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== + prelude-ls "^1.2.1" -unicode-match-property-ecmascript@^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== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" +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== -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +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== -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" - integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== +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== -union-value@^1.0.0: +typed-array-buffer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" -unset-value@^1.0.0: +typed-array-byte-length@^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= + 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: - has-value "^0.3.1" - isobject "^3.0.0" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" -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== +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: - 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= + 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" -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== +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" -util-deprecate@~1.0.1: +unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +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== -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== +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: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" +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== -w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= +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: - browser-process-hrtime "^0.1.2" + escalade "^3.2.0" + picocolors "^1.1.1" -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= +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - makeerror "1.0.x" + punycode "^2.1.0" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +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" -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== +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: - iconv-lite "0.4.24" + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.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== +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: + xml-name-validator "^5.0.0" -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== +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: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + makeerror "1.0.12" -whatwg-url@^7.0.0: +webidl-conversions@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + iconv-lite "0.6.3" -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +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== -which@^1.2.9, which@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +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: - isexe "^2.0.0" + tr46 "^5.1.0" + webidl-conversions "^7.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +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: + 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-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: + 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: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: - string-width "^1.0.2 || 2" + isexe "^2.0.0" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= +"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" -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +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@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +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: - string-width "^1.0.1" - strip-ansi "^3.0.1" + 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@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== +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: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" - signal-exit "^3.0.2" + signal-exit "^4.0.1" -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" +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== -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" +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== -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== +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@^3.2.1 || ^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== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^12.0.2: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.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== + +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 "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +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==