diff --git a/.eslintignore b/.eslintignore
index b7e97ace3..00b3a70ba 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -12,3 +12,4 @@
/website/build/
/website/static/playground.js
/website/static/lib/
+/vendors/
diff --git a/.eslintrc.js b/.eslintrc.js
index 84541d9cf..357e5d304 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -270,7 +270,7 @@ module.exports = {
"prettier-internal-rules/no-node-comments": [
"error",
{
- file: "src/language-js/utils.js",
+ file: "src/language-js/utils/index.js",
functions: ["hasComment", "getComments"],
},
"src/language-js/pragma.js",
@@ -278,6 +278,7 @@ module.exports = {
"src/language-js/parse/babel.js",
"src/language-js/parse/meriyah.js",
"src/language-js/parse/json.js",
+ "src/language-js/parse/acorn.js",
],
},
},
diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml
index c529c1319..64a719fdd 100644
--- a/.github/workflows/prod-test.yml
+++ b/.github/workflows/prod-test.yml
@@ -40,6 +40,7 @@ jobs:
uses: preactjs/compressed-size-action@2.3.0
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
+ pattern: "./dist/**/*"
compression: none
lint:
diff --git a/.github/workflows/validate-vendor-versions.yml b/.github/workflows/validate-vendor-versions.yml
new file mode 100644
index 000000000..311806f38
--- /dev/null
+++ b/.github/workflows/validate-vendor-versions.yml
@@ -0,0 +1,32 @@
+name: Validate_Vendor_Versions
+
+on:
+ push:
+ branches:
+ - main
+ - patch-release
+ paths:
+ - "package.json"
+ pull_request:
+ paths:
+ - "package.json"
+
+jobs:
+ validate-vendor-versions:
+ name: Validate Vendor Versions
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2.4.0
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v2.5.1
+ with:
+ version: "14"
+ cache: "yarn"
+
+ - name: Install Dependencies
+ run: yarn install --frozen-lockfile
+
+ - name: Validate Vendor Versions
+ run: yarn run vendors:validate
diff --git a/.prettierignore b/.prettierignore
index 283fe8f06..b01e56bc4 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -11,3 +11,4 @@ coverage/
/website/static/lib/
/website/static/playground.js
.nyc_output
+/vendors/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a5eddfcef..d5472531d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -48,7 +48,7 @@ function run_spec(
Parameters:
- **`fixtures`**: Must be set to `import.meta` or to an object of the shape `{ importMeta: import.meta, ... }`. The object may have the `snippets` property to specify an array of extra input entries in addition to the files in the current directory. For each input entry (a file or a snippet), `run_spec` configures and runs a number of tests. The main check is that for a given input the output should match the snapshot (for snippets, the expected output can also be specified directly). [Additional checks](#deeper-testing) are controlled by options and environment variables.
-- **`parsers`**: A list of parser names. The tests verify that the parsers in this list produce the same output. If the list includes `typescript`, then `babel-ts` is included implicitly. If the list includes `babel`, and the current directory is inside `tests/format/js`, then `espree` and `meriyah` are included implicitly.
+- **`parsers`**: A list of parser names. The tests verify that the parsers in this list produce the same output. If the list includes `typescript`, then `babel-ts` is included implicitly. If the list includes `babel`, and the current directory is inside `tests/format/js`, then `acorn`, `espree`, and `meriyah` are included implicitly.
- **`options`**: In addition to Prettier's formatting options, can contain the `errors` property to specify that it's expected that the formatting shouldn't be successful and an error should be thrown for all (`errors: true`) or some combinations of input entries and parsers.
The implementation of `run_spec` can be found in [`tests/config/format-test.js`](tests/config/format-test.js).
diff --git a/README.md b/README.md
index 14ced8d52..b439216dc 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-
+
Opinionated Code Formatter
diff --git a/changelog_unreleased/css/12210.md b/changelog_unreleased/css/12210.md
new file mode 100644
index 000000000..7b597087e
--- /dev/null
+++ b/changelog_unreleased/css/12210.md
@@ -0,0 +1,32 @@
+#### Preserve empty line in CSS paren groups (#12210 by @duailibe)
+
+
+
+
+```css
+/* Input */
+$colours: (
+ "text": $light-100,
+
+ "background-primary": $dark-300,
+ "background-secondary": $dark-200,
+ "background-tertiary": $dark-100
+);
+
+/* Prettier stable */
+$colours: (
+ "text": $light-100,
+ "background-primary": $dark-300,
+ "background-secondary": $dark-200,
+ "background-tertiary": $dark-100
+);
+
+/* Prettier main */
+$colours: (
+ "text": $light-100,
+
+ "background-primary": $dark-300,
+ "background-secondary": $dark-200,
+ "background-tertiary": $dark-100
+);
+```
diff --git a/changelog_unreleased/javascript/12075.md b/changelog_unreleased/javascript/12075.md
new file mode 100644
index 000000000..4b136d048
--- /dev/null
+++ b/changelog_unreleased/javascript/12075.md
@@ -0,0 +1,18 @@
+#### Print end-of-line comment for `continue`/`break` statements (#12075 by @sosukesuzuki)
+
+
+
+
+```jsx
+// Input
+for (;;) continue // comment
+;
+
+// Prettier stable
+Error: Comment "comment" was not printed. Please report this error!
+
+// Prettier main
+for (;;)
+ continue; // comment
+
+```
diff --git a/changelog_unreleased/javascript/12088.md b/changelog_unreleased/javascript/12088.md
new file mode 100644
index 000000000..ba6004dfe
--- /dev/null
+++ b/changelog_unreleased/javascript/12088.md
@@ -0,0 +1,40 @@
+#### Inline `await` expressions in JSX (#12088 & #12109 by @j-f1)
+
+`await` expressions in JSX are now inlined if their argument would be inlined.
+
+
+```jsx
+// Input
+{await Promise.all(
+ someVeryLongExpression
+)}
+
+{await (
+ Lorem ipsum ...
+)}
+
+
+// Prettier stable
+{
+ await Promise.all(
+ someVeryLongExpression
+ )
+}
+
+{
+ await (
+ Lorem ipsum ...
+ )
+}
+
+
+// Prettier main
+{await Promise.all(
+ someVeryLongExpression
+)}
+
+{await (
+ Lorem ipsum ...
+)}
+
+```
diff --git a/changelog_unreleased/javascript/12172.md b/changelog_unreleased/javascript/12172.md
new file mode 100644
index 000000000..e653c2f0a
--- /dev/null
+++ b/changelog_unreleased/javascript/12172.md
@@ -0,0 +1,3 @@
+#### Add `acorn` parser (#12172 by @fisker)
+
+A new value for the `parser` option has been added: [`acorn`](https://github.com/acornjs/acorn) - A small, fast, JavaScript-based JavaScript parser.
diff --git a/changelog_unreleased/javascript/12177.md b/changelog_unreleased/javascript/12177.md
new file mode 100644
index 000000000..79295954a
--- /dev/null
+++ b/changelog_unreleased/javascript/12177.md
@@ -0,0 +1,40 @@
+#### Keep comments after `default` cases in the same line (#12177 by @duailibe)
+
+Keep comments right after `default` cases (in switch statements) in the same line, when possible.
+
+
+```jsx
+// Input
+function read_statement() {
+ switch (peek_keyword()) {
+ case Keyword.impl: // impl Growling for Wolf {}
+ return ImplDeclaration.read();
+
+ default: // expression;
+ return ExpressionStatement.read();
+ }
+}
+
+// Prettier stable
+function read_statement() {
+ switch (peek_keyword()) {
+ case Keyword.impl: // impl Growling for Wolf {}
+ return ImplDeclaration.read();
+
+ default:
+ // expression;
+ return ExpressionStatement.read();
+ }
+}
+
+// Prettier main
+function read_statement() {
+ switch (peek_keyword()) {
+ case Keyword.impl: // impl Growling for Wolf {}
+ return ImplDeclaration.read();
+
+ default: // expression;
+ return ExpressionStatement.read();
+ }
+}
+```
diff --git a/changelog_unreleased/javascript/12185.md b/changelog_unreleased/javascript/12185.md
new file mode 100644
index 000000000..94fcaf7ea
--- /dev/null
+++ b/changelog_unreleased/javascript/12185.md
@@ -0,0 +1,26 @@
+#### Fix misplaced argument comment in abstract methods (#12185 by @duailibe)
+
+
+```ts
+// Input
+abstract class Foo {
+ abstract bar(
+ /** comment explaining userId param */
+ userId
+ )
+}
+
+// Prettier stable
+abstract class Foo {
+ abstract bar(userId);
+ /** comment explaining userId param */
+}
+
+// Prettier main
+abstract class Foo {
+ abstract bar(
+ /** comment explaining userId param */
+ userId
+ );
+}
+```
diff --git a/changelog_unreleased/javascript/12222.md b/changelog_unreleased/javascript/12222.md
new file mode 100644
index 000000000..215b77dde
--- /dev/null
+++ b/changelog_unreleased/javascript/12222.md
@@ -0,0 +1,15 @@
+#### Fix typecast of superclass in class declarations (#12222 & #12226 by @duailibe)
+
+This was a combination of two separate bugs: moving the comments before the superclass and adding multiple parenthesis around the superclass.
+
+
+```js
+// Input
+class Foo extends /** @type {Type} */ (Bar) {}
+
+// Prettier stable
+class Foo /** @type {Type} */ extends ((Bar)) {}
+
+// Prettier main
+class Foo extends /** @type {Type} */ (Bar) {}
+```
diff --git a/changelog_unreleased/javascript/12260.md b/changelog_unreleased/javascript/12260.md
new file mode 100644
index 000000000..423c052e8
--- /dev/null
+++ b/changelog_unreleased/javascript/12260.md
@@ -0,0 +1,24 @@
+#### Add parens to `ClassExpression` with decorators (#12260 by @fisker)
+
+
+```js
+// Input
+(@f() class {});
+
+// Prettier stable
+@f()
+class {};
+
+// Prettier stable (Second format)
+SyntaxError: A class name is required. (2:7)
+ 1 | @f()
+> 2 | class {};
+ | ^
+ 3 |
+
+// Prettier main
+(
+ @f()
+ class {}
+);
+```
diff --git a/changelog_unreleased/scss/12213.md b/changelog_unreleased/scss/12213.md
new file mode 100644
index 000000000..01f7c29c2
--- /dev/null
+++ b/changelog_unreleased/scss/12213.md
@@ -0,0 +1,16 @@
+#### Fixes printing parameters of a mixin named `selector()` (#12213 by @duailibe)
+
+
+```css
+/* Input */
+@mixin selector($param: 'value') {
+}
+
+/* Prettier stable */
+@mixin selector($param: 'value) {
+}
+
+/* Prettier main */
+@mixin selector($param: 'value') {
+}
+```
diff --git a/changelog_unreleased/vue/12113.md b/changelog_unreleased/vue/12113.md
new file mode 100644
index 000000000..314b5db6d
--- /dev/null
+++ b/changelog_unreleased/vue/12113.md
@@ -0,0 +1,21 @@
+#### Fix hangs on invalid `v-for` (#12113 by @fisker)
+
+
+```jsx
+// Input
+
+
+
+
+// Prettier stable
+// Hangs
+
+// Prettier main
+
+
+;
+```
diff --git a/cspell.json b/cspell.json
index 592fcac8d..ed255921c 100644
--- a/cspell.json
+++ b/cspell.json
@@ -213,6 +213,7 @@
"neoclide",
"neoformat",
"neovim",
+ "nocheck",
"nnoremap",
"nonenumerable",
"Nonspacing",
@@ -369,8 +370,6 @@
],
"files": [
"*",
- ".*",
- ".github/**/*",
"bin/**/*",
"changelog_unreleased/**/*",
"docs/**/*",
@@ -380,20 +379,19 @@
"website/**/*",
"tests/config/**/*",
"tests/integration/**/*",
- "tests/**/jsfmt.spec.js"
+ "tests/format/**/jsfmt.spec.js"
],
"ignorePaths": [
+ ".git",
"cspell.json",
- "**/node_modules/**",
- "**/yarn.lock",
"*.{log,svg,snap,png}",
- "test*.*",
"tests/config/jest-light-runner/**/*",
"website/data/users.yml",
"website/build/**",
"website/playground/codeSamples.mjs",
"website/pages/googlefe164a33bda4034b.html",
"website/static/lib/**",
- "website/static/playground.js"
+ "website/static/playground.js",
+ "scripts/vendors/vendor-meta.json"
]
}
diff --git a/docs/assets/webstorm/external-tool-prettier.png b/docs/assets/webstorm/external-tool-prettier.png
new file mode 100644
index 000000000..e56fa41c4
Binary files /dev/null and b/docs/assets/webstorm/external-tool-prettier.png differ
diff --git a/docs/options.md b/docs/options.md
index 86867379f..4ce69148e 100644
--- a/docs/options.md
+++ b/docs/options.md
@@ -265,6 +265,7 @@ Valid options:
- `"typescript"` (via [@typescript-eslint/typescript-estree](https://github.com/typescript-eslint/typescript-eslint)) _First available in v1.4.0_
- `"espree"` (via [espree](https://github.com/eslint/espree)) _First available in v2.2.0_
- `"meriyah"` (via [meriyah](https://github.com/meriyah/meriyah)) _First available in v2.2.0_
+- `"acorn"` (via [acorn](https://github.com/acornjs/acorn)) _First available in v2.6.0_
- `"css"` (via [postcss](https://github.com/postcss/postcss)) _First available in v1.7.1_
- `"scss"` (via [postcss-scss](https://github.com/postcss/postcss-scss)) _First available in v1.7.1_
- `"less"` (via [postcss-less](https://github.com/shellscape/postcss-less) _First available in v1.7.1_
@@ -350,13 +351,13 @@ Note that “in tandem” doesn’t mean “at the same time”. When the two op
_First available in v1.8.2_
-By default, Prettier will wrap markdown text as-is since some services use a linebreak-sensitive renderer, e.g. GitHub comment and BitBucket. In some cases you may want to rely on editor/viewer soft wrapping instead, so this option allows you to opt out with `"never"`.
+By default, Prettier will not change wrapping in markdown text since some services use a linebreak-sensitive renderer, e.g. GitHub comments and BitBucket. To have Prettier wrap prose to the print width, change this option to "always". If you want Prettier to force all prose blocks to be on a single line and rely on editor/viewer soft wrapping instead, you can use `"never"`.
Valid options:
- `"always"` - Wrap prose if it exceeds the print width.
-- `"never"` - Do not wrap prose.
-- `"preserve"` - Wrap prose as-is. _First available in v1.9.0_
+- `"never"` - Un-wrap each block of prose into one line.
+- `"preserve"` - Do nothing, leave prose as-is. _First available in v1.9.0_
| Default | CLI Override | API Override |
| ------------ | ----------------------------------------------------------- | ----------------------------------------------------------- |
diff --git a/docs/plugins.md b/docs/plugins.md
index 143a82e73..a227e74e0 100644
--- a/docs/plugins.md
+++ b/docs/plugins.md
@@ -3,7 +3,7 @@ id: plugins
title: Plugins
---
-Plugins are ways of adding new languages to Prettier. Prettier’s own implementations of all languages are expressed using the plugin API. The core `prettier` package contains JavaScript and other web-focused languages built in. For additional languages you’ll need to install a plugin.
+Plugins are ways of adding new languages or formatting rules to Prettier. Prettier’s own implementations of all languages are expressed using the plugin API. The core `prettier` package contains JavaScript and other web-focused languages built in. For additional languages you’ll need to install a plugin.
## Using Plugins
@@ -13,25 +13,38 @@ Plugins are automatically loaded if you have them installed in the same `node_mo
When plugins cannot be found automatically, you can load them with:
-- The [CLI](cli.md), via the `--plugin` and `--plugin-search-dir`:
+- The [CLI](cli.md), via `--plugin-search-dir` and `--plugin`:
```bash
- prettier --write main.foo --plugin-search-dir=./dir-with-plugins --plugin=./foo-plugin
+ prettier --write main.foo --plugin-search-dir=./dir-with-plugins --plugin=prettier-plugin-foo
```
- > Tip: You can set `--plugin` or `--plugin-search-dir` options multiple times.
+ > Tip: You can set `--plugin-search-dir` or `--plugin` options multiple times.
-- Or the [API](api.md), via the `plugins` and `pluginSearchDirs` options:
+- The [API](api.md), via the `pluginSearchDirs` and `plugins` options:
```js
prettier.format("code", {
parser: "foo",
pluginSearchDirs: ["./dir-with-plugins"],
- plugins: ["./foo-plugin"],
+ plugins: ["prettier-plugin-foo"],
});
```
-Prettier expects each of `pluginSearchDirs` to contain `node_modules` subdirectory, where `@prettier/plugin-*`, `@*/prettier-plugin-*` and `prettier-plugin-*` will be searched. For instance, this can be your project directory or the location of global npm modules.
+- The [Configuration File](configuration.md):
+
+ ```json
+ {
+ "pluginSearchDirs": ["./dir-with-plugins"],
+ "plugins": ["prettier-plugin-foo"]
+ }
+ ```
+
+`pluginSearchDirs` and `plugins` are independent and one does not require the other.
+
+The paths that are provided to `pluginSearchDirs` will be searched for `@prettier/plugin-*`, `prettier-plugin-*`, and `@*/prettier-plugin-*`. For instance, these can be your project directory, a `node_modules` directory, the location of global npm modules, or any arbitrary directory that contains plugins.
+
+Strings provided to `plugins` are ultimately passed to `require()`, so you can provide a module/package name, a path, or anything else `require()` takes. (`pluginSearchDirs` works the same way. That is, valid plugin paths that it finds are passed to `require()`.)
Providing at least one path to `--plugin-search-dir`/`pluginSearchDirs` turns off plugin autoloading in the default directory (i.e. `node_modules` above `prettier` binary).
diff --git a/package.json b/package.json
index 8af63eed7..19a821447 100644
--- a/package.json
+++ b/package.json
@@ -18,15 +18,18 @@
"index.js",
"standalone.js",
"src",
- "bin"
+ "bin",
+ "vendors"
],
"dependencies": {
- "@angular/compiler": "12.2.15",
+ "@angular/compiler": "12.2.16",
"@babel/code-frame": "7.16.7",
- "@babel/parser": "7.16.7",
+ "@babel/parser": "7.17.0",
"@glimmer/syntax": "0.83.1",
"@iarna/toml": "2.2.5",
- "@typescript-eslint/typescript-estree": "5.9.0",
+ "@typescript-eslint/typescript-estree": "5.10.2",
+ "acorn": "8.7.0",
+ "acorn-jsx": "5.3.2",
"angular-estree-parser": "2.5.0",
"angular-html-parser": "1.8.0",
"c8": "7.10.0",
@@ -42,25 +45,24 @@
"escape-string-regexp": "4.0.0",
"espree": "9.3.0",
"esutils": "2.0.3",
- "fast-glob": "3.2.9",
+ "fast-glob": "3.2.11",
"fast-json-stable-stringify": "2.1.0",
"find-parent-dir": "0.3.1",
- "flow-parser": "0.169.0",
+ "flow-parser": "0.171.0",
"get-stdin": "8.0.0",
- "globby": "11.0.4",
"graphql": "15.6.1",
"html-element-attributes": "2.3.0",
"html-styles": "1.0.0",
"html-tag-names": "1.1.5",
"html-void-elements": "1.0.5",
"ignore": "5.2.0",
- "jest-docblock": "27.4.0",
+ "jest-docblock": "27.5.0",
"json5": "2.2.0",
"leven": "3.1.0",
"lines-and-columns": "2.0.3",
"linguist-languages": "7.15.0",
"lodash": "4.17.21",
- "mem": "8.1.1",
+ "mem": "9.0.2",
"meriyah": "4.2.0",
"minimatch": "3.0.4",
"minimist": "1.2.5",
@@ -78,11 +80,11 @@
"remark-footnotes": "2.0.0",
"remark-math": "3.0.1",
"remark-parse": "8.0.3",
- "resolve": "1.21.0",
+ "resolve": "1.22.0",
"semver": "7.3.5",
- "string-width": "4.2.3",
+ "string-width": "5.0.1",
"strip-ansi": "6.0.0",
- "typescript": "4.5.4",
+ "typescript": "4.5.5",
"unicode-regex": "3.0.0",
"unified": "9.2.1",
"vnopts": "1.0.2",
@@ -90,47 +92,51 @@
"yaml-unist-parser": "1.3.1"
},
"devDependencies": {
- "@esbuild-plugins/node-globals-polyfill": "0.1.1",
+ "@babel/core": "7.17.0",
+ "@babel/preset-env": "7.16.11",
+ "@babel/types": "7.17.0",
"@esbuild-plugins/node-modules-polyfill": "0.1.4",
"@glimmer/reference": "0.83.1",
"@jest/globals": "27.4.2",
"@prettier/jest-light-runner": "file:./tests/config/jest-light-runner",
"@types/estree": "0.0.50",
"@types/jest": "27.4.0",
- "@typescript-eslint/eslint-plugin": "5.9.0",
+ "@typescript-eslint/eslint-plugin": "5.10.2",
+ "babel-jest": "27.5.0",
"benchmark": "2.1.4",
- "browserslist": "4.19.1",
+ "browserslist-to-esbuild": "1.1.1",
"builtin-modules": "3.2.0",
- "cross-env": "7.0.3",
- "cspell": "5.15.1",
+ "core-js": "3.21.0",
+ "cspell": "5.18.3",
"enquirer": "2.3.6",
- "esbuild": "0.14.10",
- "esbuild-plugin-browserslist": "0.4.1",
- "esbuild-plugin-text-replace": "1.1.3",
- "eslint": "8.6.0",
+ "esbuild": "0.14.18",
+ "esbuild-plugin-text-replace": "1.2.0",
+ "esbuild-visualizer": "0.3.1",
+ "eslint": "8.8.0",
"eslint-config-prettier": "8.3.0",
"eslint-formatter-friendly": "7.0.0",
- "eslint-plugin-compat": "4.0.1",
+ "eslint-plugin-compat": "4.0.2",
"eslint-plugin-import": "2.25.4",
- "eslint-plugin-jest": "25.3.4",
+ "eslint-plugin-jest": "26.0.0",
"eslint-plugin-prettier-internal-rules": "2.0.1",
"eslint-plugin-react": "7.28.0",
"eslint-plugin-regexp": "1.5.1",
- "eslint-plugin-unicorn": "40.0.0",
+ "eslint-plugin-unicorn": "40.1.0",
"esm-utils": "2.0.1",
"execa": "6.0.0",
- "jest": "27.4.7",
+ "jest": "27.5.0",
"jest-snapshot-serializer-ansi": "1.0.0",
"jest-snapshot-serializer-raw": "1.2.0",
"jest-watch-typeahead": "1.0.0",
"node-actionlint": "1.2.2",
- "node-fetch": "3.1.0",
+ "node-fetch": "3.1.1",
"npm-run-all": "4.1.5",
"path-browserify": "1.0.1",
"prettier": "2.5.1",
"pretty-bytes": "5.6.0",
+ "read-pkg-up": "9.0.0",
"rimraf": "3.0.2",
- "rollup-plugin-license": "2.2.0",
+ "rollup-plugin-license": "2.6.1",
"snapshot-diff": "0.9.0",
"tempy": "2.0.0"
},
@@ -142,7 +148,7 @@
"test:dev-package": "cross-env INSTALL_PACKAGE=1 yarn test",
"test:dist": "cross-env NODE_ENV=production yarn test",
"test:dist-standalone": "cross-env TEST_STANDALONE=1 yarn test:dist",
- "test:dist-lint": "eslint --no-eslintrc --no-ignore --no-inline-config --config=./scripts/bundle-eslint-config.js \"dist/!(bin-prettier|index|third-party).js\"",
+ "test:dist-lint": "eslint --no-eslintrc --no-ignore --no-inline-config --config=./scripts/bundle-eslint-config.cjs \"dist/**/*.{js,mjs}\"",
"perf:repeat": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
"perf:repeat-inspect": "yarn && yarn build && cross-env NODE_ENV=production node --inspect-brk ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
"perf:benchmark": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-benchmark --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
@@ -151,14 +157,16 @@
"lint:eslint": "cross-env EFF_NO_LINK_RULES=true eslint . --format friendly",
"lint:changelog": "node ./scripts/lint-changelog.mjs",
"lint:prettier": "prettier . \"!test*\" --check",
- "lint:spellcheck": "cspell --no-progress --relative",
+ "lint:spellcheck": "cspell --no-progress --relative --dot --gitignore",
"lint:deps": "node ./scripts/check-deps.mjs",
"lint:actionlint": "node-actionlint",
"fix": "run-s fix:eslint fix:prettier",
"fix:eslint": "yarn lint:eslint --fix",
"fix:prettier": "yarn lint:prettier --write",
"build": "node ./scripts/build/build.mjs",
- "build:website": "node ./scripts/build-website.mjs"
+ "build:website": "node ./scripts/build-website.mjs",
+ "vendors:bundle": "node ./scripts/vendors/bundle-vendors.mjs",
+ "vendors:validate": "node ./scripts/vendors/validate-vendor-versions.mjs"
},
"c8": {
"reporter": [
diff --git a/scripts/build-website.mjs b/scripts/build-website.mjs
index 0b0034e27..6b2d363dd 100644
--- a/scripts/build-website.mjs
+++ b/scripts/build-website.mjs
@@ -2,7 +2,7 @@
import path from "node:path";
import fs from "node:fs/promises";
-import globby from "globby";
+import fastGlob from "fast-glob";
import prettier from "prettier";
import createEsmUtils from "esm-utils";
import { execa } from "execa";
@@ -10,7 +10,6 @@ import {
PROJECT_ROOT,
DIST_DIR,
WEBSITE_DIR,
- readJson,
writeJson,
copyFile,
writeFile,
@@ -32,23 +31,25 @@ const PLAYGROUND_PRETTIER_DIR = path.join(WEBSITE_DIR, "static/lib");
async function buildPrettier() {
// --- Build prettier for PR ---
const packageJsonFile = path.join(PROJECT_ROOT, "package.json");
- const content = await fs.readFile(packageJsonFile);
- const packageJson = await readJson(packageJsonFile);
+ const packageJsonContent = await fs.readFile(packageJsonFile);
+ const packageJson = JSON.parse(packageJsonContent);
await writeJson(packageJsonFile, {
...packageJson,
version: `999.999.999-pr.${process.env.REVIEW_ID}`,
});
try {
- await runYarn("build", ["--playground"], { cwd: PROJECT_ROOT });
+ await runYarn("build", ["--playground", "--no-babel", "--clean"], {
+ cwd: PROJECT_ROOT,
+ });
} finally {
// restore
- await writeFile(packageJsonFile, content);
+ await writeFile(packageJsonFile, packageJsonContent);
}
}
async function buildPlaygroundFiles() {
- const files = await globby(["standalone.js", "parser-*.js"], {
+ const files = await fastGlob(["standalone.js", "parser-*.js"], {
cwd: PRETTIER_DIR,
});
const parsers = {};
diff --git a/scripts/build/README.md b/scripts/build/README.md
index 3521599df..5262c6ac7 100644
--- a/scripts/build/README.md
+++ b/scripts/build/README.md
@@ -12,6 +12,14 @@ yarn build
## Flags
+### `--clean`
+
+Remove `dist` directory before bundle files.
+
+```sh
+yarn build --clean
+```
+
### `--playground`
Run script with `--playground` flag will only build files needed for the website.
@@ -28,14 +36,51 @@ To print the bundled file sizes:
yarn build --print-size
```
-### `--file`
+### `--compare-size`
-To build a single file:
+Print the file size changes compare to the last released version:
```sh
-yarn build --file=parser-babel.js
+yarn build --compare-size
```
+### `--file`
+
+To build specific file(s):
+
+```sh
+yarn build --file=esm/parser-babel.mjs
+```
+
+```sh
+yarn build --file=standalone.js --file=parser-meriyah.js
+```
+
+### `--save-as`
+
+To save bundled file to a different location, this flag can only use together with ONE `--file` flag
+
+```sh
+yarn build --file=parser-babel.js --save-as=babel-for-test.js
+```
+
+### `--report`
+
+Visualize and analyze your esbuild bundle to see which modules are taking up space.
+
+Available reporter formats:
+
+- `html` Generate a HTML report file, saved next to the bundled file with `.report.html` suffix.
+- `text` Generate a plain text report file, saved next to the bundled file with `.report.txt` suffix.
+- `stdout` Log report information in console.
+
+```sh
+yarn build --report
+yarn build --report=stdout --report=text --report=html
+```
+
+**`--report` equals to `--report=html`**
+
### `--minify` and `--no-minify`
By default, the file minification is controlled by `config.mjs` and `bundler.mjs`, these flags are added to override that behavior.
diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs
index 074ca00d5..084ef67af 100644
--- a/scripts/build/build.mjs
+++ b/scripts/build/build.mjs
@@ -6,7 +6,7 @@ import readline from "node:readline";
import chalk from "chalk";
import minimist from "minimist";
import prettyBytes from "pretty-bytes";
-import rimraf from "rimraf";
+import createEsmUtils from "esm-utils";
import {
PROJECT_ROOT,
DIST_DIR,
@@ -18,6 +18,8 @@ import bundler from "./bundler.mjs";
import bundleConfigs from "./config.mjs";
import saveLicenses from "./save-licenses.mjs";
+const { require } = createEsmUtils(import.meta);
+
// Errors in promises should be fatal.
const loggedErrors = new Set();
process.on("unhandledRejection", (err) => {
@@ -49,60 +51,100 @@ function fitTerminal(input, suffix = "") {
const columns = Math.min(process.stdout.columns || 40, 80);
const WIDTH = columns - maxLength + 1;
if (input.length < WIDTH) {
- const repeatCount = WIDTH - input.length - 1 - suffix.length;
+ const repeatCount = Math.max(WIDTH - input.length - 1 - suffix.length, 0);
input += chalk.dim(".").repeat(repeatCount) + suffix;
}
return input;
}
+const clear = () => {
+ readline.clearLine(process.stdout, 0);
+ readline.cursorTo(process.stdout, 0, null);
+};
+
async function createBundle(bundleConfig, options) {
- const { output, target, format, type } = bundleConfig;
- process.stdout.write(fitTerminal(output));
+ const { target } = bundleConfig;
+
try {
- const { skipped } = await bundler(bundleConfig, options);
+ for await (const {
+ name,
+ started,
+ skipped,
+ relativePath,
+ absolutePath,
+ } of bundler(bundleConfig, options)) {
+ const displayName = name.startsWith("esm/") ? ` ${name}` : name;
- if (skipped) {
- console.log(status.SKIPPED);
- return;
- }
-
- const file = path.join(DIST_DIR, output);
-
- // Files including U+FFEE can't load in Chrome Extension
- // `prettier-chrome-extension` https://github.com/prettier/prettier-chrome-extension
- // details https://github.com/prettier/prettier/pull/8534
- if (target === "universal") {
- const content = await fs.readFile(file, "utf8");
- if (content.includes("\ufffe")) {
- throw new Error("Bundled umd file should not have U+FFFE character.");
+ if (started) {
+ process.stdout.write(fitTerminal(displayName));
+ continue;
}
- }
- if (options["print-size"]) {
- // Clear previous line
- readline.clearLine(process.stdout, 0);
- readline.cursorTo(process.stdout, 0, null);
+ if (skipped) {
+ if (!options.files) {
+ process.stdout.write(fitTerminal(displayName));
+ console.log(status.SKIPPED);
+ }
- const getSizeText = async (file) =>
- prettyBytes((await fs.stat(file)).size);
- const sizeTexts = [await getSizeText(file)];
- if (
- type !== "core" &&
- format !== "esm" &&
- bundleConfig.bundler !== "webpack" &&
- target === "universal"
- ) {
- const esmFile = path.join(
- DIST_DIR,
- "esm",
- output.replace(".js", ".mjs")
+ continue;
+ }
+
+ // Files including U+FFEE can't load in Chrome Extension
+ // `prettier-chrome-extension` https://github.com/prettier/prettier-chrome-extension
+ // details https://github.com/prettier/prettier/pull/8534
+ if (target === "universal") {
+ const content = await fs.readFile(absolutePath, "utf8");
+ if (content.includes("\ufffe")) {
+ throw new Error("Bundled umd file should not have U+FFFE character.");
+ }
+ }
+
+ const sizeMessages = [];
+
+ if (options.printSize) {
+ const { size } = await fs.stat(absolutePath);
+ sizeMessages.push(prettyBytes(size));
+ }
+
+ if (options.compareSize) {
+ // TODO: Use `import.meta.resolve` when Node.js support
+ const stablePrettierDirectory = path.dirname(
+ require.resolve("prettier")
);
- sizeTexts.push(`esm ${await getSizeText(esmFile)}`);
- }
- process.stdout.write(fitTerminal(output, `${sizeTexts.join(", ")} `));
- }
+ const stableVersionFile = path.join(
+ stablePrettierDirectory,
+ relativePath
+ );
+ let stableSize;
+ try {
+ ({ size: stableSize } = await fs.stat(stableVersionFile));
+ } catch {
+ // No op
+ }
- console.log(status.DONE);
+ if (stableSize) {
+ const { size } = await fs.stat(absolutePath);
+ const sizeDiff = size - stableSize;
+ const message = chalk[sizeDiff > 0 ? "yellow" : "green"](
+ prettyBytes(sizeDiff)
+ );
+
+ sizeMessages.push(`${message}`);
+ } else {
+ sizeMessages.push(chalk.blue("[NEW FILE]"));
+ }
+ }
+
+ if (sizeMessages.length > 0) {
+ // Clear previous line
+ clear();
+ process.stdout.write(
+ fitTerminal(displayName, `${sizeMessages.join(", ")} `)
+ );
+ }
+
+ console.log(status.DONE);
+ }
} catch (error) {
console.log(status.FAIL + "\n");
handleError(error);
@@ -135,16 +177,65 @@ async function preparePackage() {
}
async function run(params) {
- const shouldPreparePackage =
- !params.playground && !params.file && params.minify === null;
- const shouldSaveBundledPackagesLicenses = shouldPreparePackage;
+ params.files = params.file ? new Set([params.file].flat()) : params.file;
+ params.saveAs = params["save-as"];
+ params.printSize = params["print-size"];
- let configs = bundleConfigs;
- if (params.file) {
- configs = configs.filter(({ output }) => output === params.file);
- } else {
- rimraf.sync(DIST_DIR);
+ if (params.report === "") {
+ params.report = ["html"];
}
+ params.reports = params.report ? [params.report].flat() : params.report;
+
+ delete params.file;
+ delete params.report;
+ delete params["save-as"];
+ delete params["print-size"];
+
+ if (params.saveAs && !(params.files && params.files.size === 1)) {
+ throw new Error("'--save-as' can only use together with one '--file' flag");
+ }
+
+ if (
+ params.saveAs &&
+ !path.join(DIST_DIR, params.saveAs).startsWith(DIST_DIR)
+ ) {
+ throw new Error("'--save-as' can only relative path");
+ }
+
+ if (params.clean) {
+ let stat;
+ try {
+ stat = await fs.stat(DIST_DIR);
+ } catch {
+ // No op
+ }
+
+ if (stat) {
+ if (stat.isDirectory()) {
+ await fs.rm(DIST_DIR, { recursive: true, force: true });
+ } else {
+ throw new Error(`"${DIST_DIR}" is not a directory`);
+ }
+ }
+ }
+
+ if (params.compareSize) {
+ if (params.minify === false) {
+ throw new Error(
+ "'--compare-size' can not use together with '--no-minify' flag"
+ );
+ }
+
+ if (params.saveAs) {
+ throw new Error(
+ "'--compare-size' can not use together with '--save-as' flag"
+ );
+ }
+ }
+
+ const shouldPreparePackage =
+ !params.playground && !params.files && params.minify === null;
+ const shouldSaveBundledPackagesLicenses = shouldPreparePackage;
const licenses = [];
if (shouldSaveBundledPackagesLicenses) {
@@ -153,7 +244,7 @@ async function run(params) {
console.log(chalk.inverse(" Building packages "));
- for (const bundleConfig of configs) {
+ for (const bundleConfig of bundleConfigs) {
await createBundle(bundleConfig, params);
}
@@ -162,7 +253,12 @@ async function run(params) {
}
if (shouldSaveBundledPackagesLicenses) {
- await saveLicenses(licenses);
+ const vendorMeta = await readJson(
+ new URL("../vendors/vendor-meta.json", import.meta.url)
+ );
+ licenses.push(...vendorMeta.licenses);
+
+ await saveLicenses(licenses.filter(({ name }) => name !== "prettier"));
} else {
console.warn(
chalk.red("Bundled packages licenses not included in `dist/LICENSE`.")
@@ -172,8 +268,23 @@ async function run(params) {
run(
minimist(process.argv.slice(2), {
- boolean: ["playground", "print-size", "minify"],
- string: ["file"],
- default: { playground: false, printSize: false, minify: null },
+ boolean: [
+ "playground",
+ "print-size",
+ "compare-size",
+ "minify",
+ "clean",
+ ],
+ string: ["file", "save-as", "report"],
+ default: {
+ clean: false,
+ playground: false,
+ printSize: false,
+ compareSize: false,
+ minify: null,
+ },
+ unknown(flag) {
+ throw new Error(`Unknown flag ${chalk.red(flag)}`);
+ },
})
);
diff --git a/scripts/build/bundler.mjs b/scripts/build/bundler.mjs
index 5e6395595..a3c844c74 100644
--- a/scripts/build/bundler.mjs
+++ b/scripts/build/bundler.mjs
@@ -1,54 +1,59 @@
import path from "node:path";
import createEsmUtils from "esm-utils";
import builtinModules from "builtin-modules";
-import browserslist from "browserslist";
import esbuild from "esbuild";
import { NodeModulesPolyfillPlugin as esbuildPluginNodeModulePolyfills } from "@esbuild-plugins/node-modules-polyfill";
-import { NodeGlobalsPolyfillPlugin as esbuildPluginNodeGlobalsPolyfills } from "@esbuild-plugins/node-globals-polyfill";
import esbuildPluginTextReplace from "esbuild-plugin-text-replace";
-import { resolveToEsbuildTarget } from "esbuild-plugin-browserslist";
+import browserslistToEsbuild from "browserslist-to-esbuild";
import { PROJECT_ROOT, DIST_DIR } from "../utils/index.mjs";
import esbuildPluginEvaluate from "./esbuild-plugins/evaluate.mjs";
import esbuildPluginReplaceModule from "./esbuild-plugins/replace-module.mjs";
import esbuildPluginLicense from "./esbuild-plugins/license.mjs";
import esbuildPluginUmd from "./esbuild-plugins/umd.mjs";
+import esbuildPluginVisualizer from "./esbuild-plugins/visualizer.mjs";
import bundles from "./config.mjs";
-const { json, __dirname } = createEsmUtils(import.meta);
+const { __dirname, json, require } = createEsmUtils(import.meta);
const packageJson = json.loadSync("../../package.json");
-const umdTarget = resolveToEsbuildTarget(
- browserslist(packageJson.browserslist),
- { printUnknownTargets: false }
-);
+const umdTarget = browserslistToEsbuild(packageJson.browserslist);
+const EMPTY_MODULE_REPLACEMENT = { contents: "" };
-function* getEsbuildOptions(bundle, options) {
+function* getEsbuildOptions(bundle, buildOptions) {
const replaceStrings = {
- "process.env.PRETTIER_TARGET": JSON.stringify(bundle.target),
- "process.env.NODE_ENV": JSON.stringify("production"),
// `tslib` exports global variables
"createExporter(root": "createExporter({}",
};
+
+ const define = {
+ "process.env.PRETTIER_TARGET": JSON.stringify(bundle.target),
+ "process.env.NODE_ENV": JSON.stringify("production"),
+ };
+
if (bundle.target === "universal") {
// We can't reference `process` in UMD bundles and this is
// an undocumented "feature"
- replaceStrings["process.env.PRETTIER_DEBUG"] = "global.PRETTIER_DEBUG";
- // `rollup-plugin-node-globals` replace `__dirname` with the real dirname
- // `parser-typescript.js` will contain a path of working directory
+ replaceStrings["process.env.PRETTIER_DEBUG"] = "globalThis.PRETTIER_DEBUG";
+
+ define.process = JSON.stringify({ env: {}, argv: [] });
+
+ // Replace `__dirname` and `__filename` with a fake value
+ // So `parser-typescript.js` won't contain a path of working directory
// See #8268
- replaceStrings.__filename = JSON.stringify(
+ define.__filename = JSON.stringify(
"/prettier-security-filename-placeholder.js"
);
- replaceStrings.__dirname = JSON.stringify(
- "/prettier-security-dirname-placeholder"
- );
+ define.__dirname = JSON.stringify("/prettier-security-dirname-placeholder");
}
const replaceModule = {};
// Replace other bundled files
if (bundle.target === "node") {
// Replace package.json with dynamic `require("./package.json")`
- replaceModule[path.join(PROJECT_ROOT, "package.json")] = "./package.json";
+ replaceModule[path.join(PROJECT_ROOT, "package.json")] = {
+ path: "./package.json",
+ external: true,
+ };
// Dynamic require bundled files
for (const item of bundles) {
@@ -60,9 +65,8 @@ function* getEsbuildOptions(bundle, options) {
// Universal bundle only use version info from package.json
// Replace package.json with `{version: "{VERSION}"}`
replaceModule[path.join(PROJECT_ROOT, "package.json")] = {
- code: `module.exports = ${JSON.stringify({
- version: packageJson.version,
- })};`,
+ contents: JSON.stringify({ version: packageJson.version }),
+ loader: "json",
};
// Replace parser getters with `undefined`
@@ -75,37 +79,42 @@ function* getEsbuildOptions(bundle, options) {
"src/language-markdown/parsers.js",
"src/language-yaml/parsers.js",
]) {
- replaceModule[path.join(PROJECT_ROOT, file)] = { code: "" };
+ replaceModule[path.join(PROJECT_ROOT, file)] = EMPTY_MODULE_REPLACEMENT;
}
+
+ // Prevent `esbuildPluginNodeModulePolyfills` include shim for this module
+ replaceModule.assert = require.resolve("./shims/assert.cjs");
}
- let shouldMinify = options.minify;
+ let shouldMinify = buildOptions.minify;
if (typeof shouldMinify !== "boolean") {
shouldMinify = bundle.minify !== false && bundle.target === "universal";
}
const esbuildOptions = {
entryPoints: [path.join(PROJECT_ROOT, bundle.input)],
+ define,
bundle: true,
metafile: true,
plugins: [
- bundle.target === "universal" && esbuildPluginNodeGlobalsPolyfills(),
- bundle.target === "universal" && esbuildPluginNodeModulePolyfills(),
esbuildPluginEvaluate(),
esbuildPluginReplaceModule({ ...replaceModule, ...bundle.replaceModule }),
+ bundle.target === "universal" && esbuildPluginNodeModulePolyfills(),
esbuildPluginTextReplace({
include: /\.[cm]?js$/,
// TODO[@fisker]: Use RegExp when possible
pattern: Object.entries({ ...replaceStrings, ...bundle.replace }),
}),
- options.onLicenseFound &&
+ buildOptions.onLicenseFound &&
esbuildPluginLicense({
cwd: PROJECT_ROOT,
thirdParty: {
includePrivate: true,
- output: options.onLicenseFound,
+ output: buildOptions.onLicenseFound,
},
}),
+ buildOptions.reports &&
+ esbuildPluginVisualizer({ formats: buildOptions.reports }),
].filter(Boolean),
minify: shouldMinify,
legalComments: "none",
@@ -122,7 +131,7 @@ function* getEsbuildOptions(bundle, options) {
yield {
...esbuildOptions,
- outfile: path.join(DIST_DIR, bundle.output),
+ outfile: bundle.output,
plugins: [
esbuildPluginUmd({ name: bundle.name }),
...esbuildOptions.plugins,
@@ -130,28 +139,24 @@ function* getEsbuildOptions(bundle, options) {
format: "umd",
};
- if (!bundle.format && !options.playground) {
+ if (/^(?:standalone|parser-.*)\.js$/.test(bundle.output)) {
yield {
...esbuildOptions,
- outfile: path.join(
- DIST_DIR,
- `esm/${bundle.output.replace(".js", ".mjs")}`
- ),
+ outfile: `esm/${bundle.output.replace(".js", ".mjs")}`,
format: "esm",
};
}
} else {
esbuildOptions.external.push(
...builtinModules,
- "./package.json*",
...bundles
.filter((item) => item.input !== bundle.input)
- .map((item) => `./${item.output}*`)
+ .map((item) => `./${item.output}`)
);
yield {
...esbuildOptions,
- outfile: path.join(DIST_DIR, bundle.output),
+ outfile: bundle.output,
format: "cjs",
};
}
@@ -161,20 +166,27 @@ async function runBuild(bundle, esbuildOptions) {
await esbuild.build(esbuildOptions);
}
-async function createBundle(bundle, options) {
- if (
- options.playground &&
- (bundle.target !== "universal" || bundle.output === "doc.js")
- ) {
- return { skipped: true };
- }
+async function* createBundle(bundle, buildOptions) {
+ for (const esbuildOptions of getEsbuildOptions(bundle, buildOptions)) {
+ const { outfile: file } = esbuildOptions;
- const esbuildOptions = getEsbuildOptions(bundle, options);
- for (const options of esbuildOptions) {
- await runBuild(bundle, options);
- }
+ if (
+ (buildOptions.files && !buildOptions.files.has(file)) ||
+ (buildOptions.playground && esbuildOptions.format !== "umd")
+ ) {
+ yield { name: file, skipped: true };
+ continue;
+ }
- return { bundled: true };
+ const relativePath = buildOptions.saveAs || file;
+ const absolutePath = path.join(DIST_DIR, relativePath);
+
+ esbuildOptions.outfile = absolutePath;
+
+ yield { name: file, started: true };
+ await runBuild(bundle, esbuildOptions, buildOptions);
+ yield { name: file, relativePath, absolutePath };
+ }
}
export default createBundle;
diff --git a/scripts/build/config.mjs b/scripts/build/config.mjs
index e51caae1c..28c6c1631 100644
--- a/scripts/build/config.mjs
+++ b/scripts/build/config.mjs
@@ -1,4 +1,5 @@
import path from "node:path";
+import { createRequire } from "node:module";
import createEsmUtils from "esm-utils";
const { require } = createEsmUtils(import.meta);
@@ -43,11 +44,41 @@ const parsers = [
'require("globby")': "{}",
"extra.projects = prepareAndTransformProjects(":
"extra.projects = [] || prepareAndTransformProjects(",
- "process.versions.node": "'999.999.999'",
+ "process.versions.node": JSON.stringify("999.999.999"),
+ "process.cwd()": JSON.stringify("/prettier-security-dirname-placeholder"),
// `rollup-plugin-polyfill-node` don't have polyfill for these modules
'require("perf_hooks")': "{}",
'require("inspector")': "{}",
"_fs.realpathSync.native": "_fs.realpathSync && _fs.realpathSync.native",
+ // Remove useless `ts.sys`
+ "ts.sys = ": "ts.sys = undefined && ",
+
+ // Remove useless language service
+ "ts.realizeDiagnostics = ": "ts.realizeDiagnostics = undefined && ",
+ "ts.TypeScriptServicesFactory = ":
+ "ts.TypeScriptServicesFactory = undefined && ",
+ "var ShimBase = ": "var ShimBase = undefined && ",
+ "var TypeScriptServicesFactory = ":
+ "var TypeScriptServicesFactory = undefined && ",
+ "var LanguageServiceShimObject = ":
+ "var LanguageServiceShimObject = undefined && ",
+ "var CoreServicesShimHostAdapter = ":
+ "var CoreServicesShimHostAdapter = undefined && ",
+ "var LanguageServiceShimHostAdapter = ":
+ "var LanguageServiceShimHostAdapter = undefined && ",
+ "var ScriptSnapshotShimAdapter = ":
+ "var ScriptSnapshotShimAdapter = undefined && ",
+ "var ClassifierShimObject = ": "var ClassifierShimObject = undefined && ",
+ "var CoreServicesShimObject = ":
+ "var CoreServicesShimObject = undefined && ",
+ "function simpleForwardCall(": "0 && function simpleForwardCall(",
+ "function forwardJSONCall(": "0 && function forwardJSONCall(",
+ "function forwardCall(": "0 && function forwardCall(",
+ "function realizeDiagnostics(": "0 && function realizeDiagnostics(",
+ "function realizeDiagnostic(": "0 && function realizeDiagnostic(",
+ "function convertClassifications(":
+ "0 && function convertClassifications(",
+
// Dynamic `require()`s
"ts.sys && ts.sys.require": "false",
"require(etwModulePath)": "undefined",
@@ -59,9 +90,19 @@ const parsers = [
"typescriptVersionIsAtLeast[version] = semverCheck(version);":
"typescriptVersionIsAtLeast[version] = true;",
},
+ replaceModule: {
+ [require.resolve("debug")]: require.resolve("./shims/debug.cjs"),
+ },
},
{
- input: "src/language-js/parse/espree.js",
+ input: "src/language-js/parse/acorn-and-espree.js",
+ name: "prettierPlugins.espree",
+ // TODO: Rename this file to `parser-acorn-and-espree.js` or find a better way
+ output: "parser-espree.js",
+ replace: {
+ "const Syntax = ": "const Syntax = undefined && ",
+ "var visitorKeys = ": "var visitorKeys = undefined && ",
+ },
},
{
input: "src/language-js/parse/meriyah.js",
@@ -88,6 +129,10 @@ const parsers = [
replaceModule: {
[require.resolve("parse-entities/decode-entity.browser.js")]:
require.resolve("parse-entities/decode-entity.js"),
+ // Avoid `node:util` shim
+ [require.resolve("inherits")]: require.resolve(
+ "inherits/inherits_browser.js"
+ ),
},
},
{
@@ -98,6 +143,12 @@ const parsers = [
},
{
input: "src/language-yaml/parser-yaml.js",
+ replaceModule: {
+ // Use `tslib.es6.js`, so we can avoid `globalThis` shim
+ [require.resolve("tslib")]: require
+ .resolve("tslib")
+ .replace(/tslib\.js$/, "tslib.es6.js"),
+ },
},
].map((bundle) => {
const { name } = bundle.input.match(
@@ -134,6 +185,13 @@ const coreBundles = [
input: "src/standalone.js",
name: "prettier",
target: "universal",
+ replaceModule: {
+ [require.resolve("@babel/highlight")]: require.resolve(
+ "./shims/babel-highlight.cjs"
+ ),
+ [createRequire(require.resolve("vnopts")).resolve("chalk")]:
+ require.resolve("./shims/chalk.cjs"),
+ },
},
{
input: "bin/prettier.js",
diff --git a/scripts/build/esbuild-plugins/replace-module.mjs b/scripts/build/esbuild-plugins/replace-module.mjs
index e4fba83eb..7f166f6d8 100644
--- a/scripts/build/esbuild-plugins/replace-module.mjs
+++ b/scripts/build/esbuild-plugins/replace-module.mjs
@@ -1,33 +1,55 @@
-import fs from "node:fs";
+import { dirname } from "node:path";
export default function esbuildPluginReplaceModule(replacements = {}) {
return {
name: "replace-module",
setup(build) {
- build.onLoad({ filter: /./ }, ({ path }) => {
- if (!Reflect.has(replacements, path)) {
+ build.onLoad({ filter: /./ }, ({ path, namespace }) => {
+ let options = replacements[path];
+
+ if (!options) {
return;
}
- const replacement = replacements[path];
+ options =
+ typeof options === "string" ? { path: options } : { ...options };
- if (typeof replacement === "string") {
- return {
- contents: `module.exports = require(${JSON.stringify(
- replacement
- )});`,
- };
+ let {
+ path: file,
+ resolveDir,
+ contents,
+ loader = "js",
+ external: isExternal,
+ } = options;
+
+ // Make this work with `@esbuild-plugins/node-modules-polyfill` plugin
+ if (
+ !resolveDir &&
+ namespace === "node-modules-polyfills-commonjs" &&
+ file
+ ) {
+ resolveDir = dirname(file);
}
- if (replacement.file) {
- return {
- contents: fs.readFileSync(replacement.file, "utf8"),
- };
+ if (isExternal) {
+ if (!file) {
+ throw new Error("Missing external module path.");
+ }
+
+ // Prevent `esbuild` to resolve
+ contents = `
+ const entry = ${JSON.stringify(`${file}`)};
+ module.exports = require(entry);
+ `;
+ } else {
+ if (file) {
+ contents = `
+ module.exports = require(${JSON.stringify(`${file}`)});
+ `;
+ }
}
- return {
- contents: replacement.code,
- };
+ return { contents, loader, resolveDir };
});
},
};
diff --git a/scripts/build/esbuild-plugins/umd.mjs b/scripts/build/esbuild-plugins/umd.mjs
index 77eb5ddd2..69e6f2da8 100644
--- a/scripts/build/esbuild-plugins/umd.mjs
+++ b/scripts/build/esbuild-plugins/umd.mjs
@@ -46,8 +46,8 @@ function getUmdWrapper(name, build) {
if (minify) {
wrapper = build.esbuild
- .buildSync({ stdin: { contents: wrapper }, minify, write: false })
- .outputFiles[0].text.trim();
+ .transformSync(wrapper, { loader: "js", minify })
+ .code.trim();
}
const [intro, outro] = wrapper.split(placeholder);
diff --git a/scripts/build/esbuild-plugins/visualizer.mjs b/scripts/build/esbuild-plugins/visualizer.mjs
new file mode 100644
index 000000000..0d66d169e
--- /dev/null
+++ b/scripts/build/esbuild-plugins/visualizer.mjs
@@ -0,0 +1,44 @@
+import fs from "node:fs/promises";
+import { visualizer as esbuildVisualizer } from "esbuild-visualizer/dist/plugin/index.js";
+
+export default function esbuildPluginVisualizer({ formats }) {
+ formats = Object.fromEntries(formats.map((format) => [format, true]));
+
+ return {
+ name: "visualizer",
+ setup(build) {
+ const { initialOptions: esbuildConfig, esbuild } = build;
+ esbuildConfig.metafile = true;
+
+ build.onEnd(async ({ metafile }) => {
+ const files = Object.keys(metafile.outputs);
+
+ if (files.length !== 1) {
+ throw new Error("Unexpected `outputs`.");
+ }
+
+ if (formats.text || formats.stdout) {
+ const report = await esbuild.analyzeMetafile(metafile, {
+ verbose: true,
+ });
+
+ if (formats.stdout) {
+ console.log(report);
+ }
+
+ if (formats.text) {
+ await fs.writeFile(`${esbuildConfig.outfile}.report.txt`, report);
+ }
+ }
+
+ if (formats.html) {
+ const report = await esbuildVisualizer(metafile, {
+ title: files[0],
+ });
+
+ await fs.writeFile(`${esbuildConfig.outfile}.report.html`, report);
+ }
+ });
+ },
+ };
+}
diff --git a/scripts/build/shims/assert.cjs b/scripts/build/shims/assert.cjs
new file mode 100644
index 000000000..42b115991
--- /dev/null
+++ b/scripts/build/shims/assert.cjs
@@ -0,0 +1,6 @@
+"use strict";
+
+const assert = () => {};
+assert.ok = assert;
+assert.strictEqual = assert;
+module.exports = assert;
diff --git a/scripts/build/shims/babel-highlight.cjs b/scripts/build/shims/babel-highlight.cjs
new file mode 100644
index 000000000..3b23660e0
--- /dev/null
+++ b/scripts/build/shims/babel-highlight.cjs
@@ -0,0 +1,6 @@
+"use strict";
+
+const chalk = require("./chalk.cjs");
+const highlight = { shouldHighlight: () => false, getChalk: () => chalk };
+
+module.exports = highlight;
diff --git a/scripts/build/shims/chalk.cjs b/scripts/build/shims/chalk.cjs
new file mode 100644
index 000000000..8ce0658d3
--- /dev/null
+++ b/scripts/build/shims/chalk.cjs
@@ -0,0 +1,11 @@
+"use strict";
+
+const chalk = (x) => x;
+chalk.grey = chalk;
+chalk.red = chalk;
+chalk.bold = chalk;
+chalk.yellow = chalk;
+chalk.blue = chalk;
+chalk.default = chalk;
+
+module.exports = chalk;
diff --git a/scripts/build/shims/debug.cjs b/scripts/build/shims/debug.cjs
new file mode 100644
index 000000000..9d9e8288e
--- /dev/null
+++ b/scripts/build/shims/debug.cjs
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = () => () => {};
diff --git a/scripts/bundle-eslint-config.cjs b/scripts/bundle-eslint-config.cjs
new file mode 100644
index 000000000..e1f3c4bb8
--- /dev/null
+++ b/scripts/bundle-eslint-config.cjs
@@ -0,0 +1,70 @@
+"use strict";
+
+const targets = require("../package.json").browserslist;
+
+module.exports = {
+ root: true,
+ parserOptions: {
+ ecmaVersion: "latest",
+ },
+ settings: {
+ targets,
+ lintAllEsApis: true,
+ polyfills: [
+ // These are not really polyfilled, but seems safe to use in target browsers
+ "BigInt",
+ "Symbol.asyncIterator",
+ ],
+ },
+ plugins: ["compat"],
+ overrides: [
+ {
+ files: ["**/*.mjs"],
+ parserOptions: {
+ sourceType: "module",
+ },
+ },
+ {
+ files: [
+ "doc.js",
+ "parser-*.js",
+ "standalone.js",
+ "parser-*.mjs",
+ "standalone.mjs",
+ ],
+ env: {
+ browser: true,
+ },
+ rules: {
+ "compat/compat": "error",
+ },
+ },
+ {
+ files: ["index.js", "bin-prettier.js", "third-party.js"],
+ rules: {
+ "no-restricted-syntax": [
+ "error",
+ // Forbid top level `require()` parsers
+ {
+ selector:
+ 'CallExpression:not(:function *)[callee.name="require"][arguments.0.value=/parser-/]',
+ message: "Parsers should be inline `require()`d.",
+ },
+ ],
+ },
+ },
+ {
+ files: ["doc.js", "parser-*.js", "standalone.js"],
+ rules: {
+ "no-restricted-syntax": [
+ "error",
+ // Forbid `require()`
+ {
+ selector: 'CallExpression[callee.name="require"]',
+ message: "UMD bundles should not include any `require()` call.",
+ },
+ ],
+ },
+ },
+ ],
+};
diff --git a/scripts/bundle-eslint-config.js b/scripts/bundle-eslint-config.js
deleted file mode 100644
index 01e9edda1..000000000
--- a/scripts/bundle-eslint-config.js
+++ /dev/null
@@ -1,26 +0,0 @@
-"use strict";
-
-const targets = require("../package.json").browserslist;
-
-module.exports = {
- root: true,
- env: {
- browser: true,
- },
- parserOptions: {
- ecmaVersion: "latest",
- },
- settings: {
- targets,
- lintAllEsApis: true,
- polyfills: [
- // These are not really polyfilled, but seems safe to use in target browsers
- "BigInt",
- "Symbol.asyncIterator",
- ],
- },
- plugins: ["compat"],
- rules: {
- "compat/compat": "error",
- },
-};
diff --git a/scripts/clean-changelog-unreleased.mjs b/scripts/clean-changelog-unreleased.mjs
index 600fcbfd6..dcc75641d 100644
--- a/scripts/clean-changelog-unreleased.mjs
+++ b/scripts/clean-changelog-unreleased.mjs
@@ -2,13 +2,13 @@
import fs from "node:fs";
import { fileURLToPath } from "node:url";
-import globby from "globby";
+import fastGlob from "fast-glob";
const changelogUnreleasedDir = fileURLToPath(
new URL("../changelog_unreleased", import.meta.url)
);
-const files = globby.sync(["blog-post-intro.md", "*/*.md"], {
+const files = fastGlob.sync(["blog-post-intro.md", "*/*.md"], {
cwd: changelogUnreleasedDir,
absolute: true,
});
diff --git a/scripts/release/package.json b/scripts/release/package.json
index a457103d7..ce334c017 100644
--- a/scripts/release/package.json
+++ b/scripts/release/package.json
@@ -8,13 +8,13 @@
"chalk": "4.1.2",
"execa": "6.0.0",
"minimist": "1.2.5",
- "node-fetch": "3.1.0",
+ "node-fetch": "3.2.0",
"outdent": "0.8.0",
"semver": "7.3.5",
- "string-width": "5.0.1"
+ "string-width": "5.1.0"
},
"devDependencies": {
- "@jest/globals": "27.4.6",
- "jest": "27.4.7"
+ "@jest/globals": "27.5.0",
+ "jest": "27.5.0"
}
}
diff --git a/scripts/release/steps/bump-prettier.js b/scripts/release/steps/bump-prettier.js
index de98b4bd8..9424e6f30 100644
--- a/scripts/release/steps/bump-prettier.js
+++ b/scripts/release/steps/bump-prettier.js
@@ -33,7 +33,7 @@ async function bump({
} else {
pkg.version = semver.inc(version, "minor") + "-dev";
}
- await writeJson("package.json", pkg, { spaces: 2 });
+ await writeJson("package.json", pkg);
}
export default async function bumpPrettier(params) {
diff --git a/scripts/release/steps/generate-bundles.js b/scripts/release/steps/generate-bundles.js
index 22ca621e3..1a36232aa 100644
--- a/scripts/release/steps/generate-bundles.js
+++ b/scripts/release/steps/generate-bundles.js
@@ -2,7 +2,10 @@ import chalk from "chalk";
import { runYarn, logPromise, readJson } from "../utils.js";
export default async function generateBundles({ version }) {
- await logPromise("Generating bundles", runYarn(["build"]));
+ await logPromise(
+ "Generating bundles",
+ runYarn(["build", "--clean", "--print-size", "--compare-size"])
+ );
const builtPkg = await readJson("dist/package.json");
if (builtPkg.version !== version) {
diff --git a/scripts/release/steps/update-version.js b/scripts/release/steps/update-version.js
index 5b9a8315d..b97cbe7da 100644
--- a/scripts/release/steps/update-version.js
+++ b/scripts/release/steps/update-version.js
@@ -9,7 +9,7 @@ import {
async function bump({ version }) {
const pkg = await readJson("package.json");
pkg.version = version;
- await writeJson("package.json", pkg, { spaces: 2 });
+ await writeJson("package.json", pkg);
// Update github issue templates
processFile(".github/ISSUE_TEMPLATE/formatting.md", (content) =>
diff --git a/scripts/release/yarn.lock b/scripts/release/yarn.lock
index c7c1291bd..37447b3e1 100644
--- a/scripts/release/yarn.lock
+++ b/scripts/release/yarn.lock
@@ -501,168 +501,168 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-"@jest/console@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.6.tgz#0742e6787f682b22bdad56f9db2a8a77f6a86107"
- integrity sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==
+"@jest/console@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.0.tgz#82289a589ad5803555b50b64178128b7a8e45282"
+ integrity sha512-WUzX5neFb0IOQOy/7A2VhiGdxJKk85Xns2Oq29JaHmtnSel+BsjwyQZxzAs2Xxfd2i452fwdDG9ox/IWi81bdQ==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
- jest-message-util "^27.4.6"
- jest-util "^27.4.2"
+ jest-message-util "^27.5.0"
+ jest-util "^27.5.0"
slash "^3.0.0"
-"@jest/core@^27.4.7":
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.7.tgz#84eabdf42a25f1fa138272ed229bcf0a1b5e6913"
- integrity sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==
+"@jest/core@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.0.tgz#27b383f497ff1671cc30fd5e22eba9d9b10c3031"
+ integrity sha512-DcUTkZyon+dRozTEjy38Bgt3PIU51GdUJuz3uHKg5maGtmCaYqPUGiM3Xddqi7eIMC7E3fTGIlHqH9i0pTOy6Q==
dependencies:
- "@jest/console" "^27.4.6"
- "@jest/reporters" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/reporters" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
emittery "^0.8.1"
exit "^0.1.2"
- graceful-fs "^4.2.4"
- jest-changed-files "^27.4.2"
- jest-config "^27.4.7"
- jest-haste-map "^27.4.6"
- jest-message-util "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-resolve "^27.4.6"
- jest-resolve-dependencies "^27.4.6"
- jest-runner "^27.4.6"
- jest-runtime "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
- jest-watcher "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-changed-files "^27.5.0"
+ jest-config "^27.5.0"
+ jest-haste-map "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-resolve-dependencies "^27.5.0"
+ jest-runner "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
+ jest-watcher "^27.5.0"
micromatch "^4.0.4"
rimraf "^3.0.0"
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/environment@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.4.6.tgz#1e92885d64f48c8454df35ed9779fbcf31c56d8b"
- integrity sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==
+"@jest/environment@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.0.tgz#a473bc76261aad7dfa3a1d8e35155953a5ba3436"
+ integrity sha512-lg0JFsMaLKgpwzs0knOg21Z4OQwaJoBLutnmYzip4tyLTXP21VYWtYGpLXgx42fw/Mw05m1WDXWKgwR6WnsiTw==
dependencies:
- "@jest/fake-timers" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
- jest-mock "^27.4.6"
+ jest-mock "^27.5.0"
-"@jest/fake-timers@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.4.6.tgz#e026ae1671316dbd04a56945be2fa251204324e8"
- integrity sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==
+"@jest/fake-timers@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.0.tgz#f9e07b4c723a535f7c532cfb403394fa40d88c8a"
+ integrity sha512-e3WrlpqSHq3HAQ03JFjTn8YCrsyg640/sr1rjkM2rNv8z1ufjudpv4xq6DvvTJYB6FuUrfg0g+7bSKPet5QfCQ==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@sinonjs/fake-timers" "^8.0.1"
"@types/node" "*"
- jest-message-util "^27.4.6"
- jest-mock "^27.4.6"
- jest-util "^27.4.2"
+ jest-message-util "^27.5.0"
+ jest-mock "^27.5.0"
+ jest-util "^27.5.0"
-"@jest/globals@27.4.6", "@jest/globals@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.6.tgz#3f09bed64b0fd7f5f996920258bd4be8f52f060a"
- integrity sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==
+"@jest/globals@27.5.0", "@jest/globals@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.0.tgz#16271323f79e3b0fe0842e9588241d202a6c2aff"
+ integrity sha512-wWpMnTiR65Q4JD7fr2BqN+ZDbi99mmILnEM6u7AaX4geASEIVvQsiB4RCvwZrIX5YZCsAjviJQVq9CYddLABkg==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/types" "^27.4.2"
- expect "^27.4.6"
+ "@jest/environment" "^27.5.0"
+ "@jest/types" "^27.5.0"
+ expect "^27.5.0"
-"@jest/reporters@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.6.tgz#b53dec3a93baf9b00826abf95b932de919d6d8dd"
- integrity sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==
+"@jest/reporters@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.0.tgz#e7602e12656b5051bf4e784cbdd82d4ec1299e33"
+ integrity sha512-DG+BmVSx2uaJSTKz5z1eScgHTQ6/cZ5CCKSpmpr4sXQPwV2V5aUMOBDwXX1MnqNRhH7/Rq9K97ynnocvho5aMA==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
collect-v8-coverage "^1.0.0"
exit "^0.1.2"
glob "^7.1.2"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
istanbul-lib-coverage "^3.0.0"
istanbul-lib-instrument "^5.1.0"
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^4.0.0"
istanbul-reports "^3.1.3"
- jest-haste-map "^27.4.6"
- jest-resolve "^27.4.6"
- jest-util "^27.4.2"
- jest-worker "^27.4.6"
+ jest-haste-map "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-util "^27.5.0"
+ jest-worker "^27.5.0"
slash "^3.0.0"
source-map "^0.6.0"
string-length "^4.0.1"
terminal-link "^2.0.0"
v8-to-istanbul "^8.1.0"
-"@jest/source-map@^27.4.0":
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.4.0.tgz#2f0385d0d884fb3e2554e8f71f8fa957af9a74b6"
- integrity sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==
+"@jest/source-map@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.0.tgz#f22a7e759b8807491f84719c01acf433b917c7a0"
+ integrity sha512-0xr7VZ+JNCRrlCyRMYhquUm8eU3kNdGDaIW4s3L625bNjk273v9ZhAm3YczIuzJzYH0pnjT+QSCiZQegWKjeow==
dependencies:
callsites "^3.0.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
source-map "^0.6.0"
-"@jest/test-result@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.6.tgz#b3df94c3d899c040f602cea296979844f61bdf69"
- integrity sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==
+"@jest/test-result@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.0.tgz#29e0ace33570c9dcbd47c67e954f77a7d7fff98e"
+ integrity sha512-Lxecvx5mN6WIeynIyW0dWDQm8UPGMHvTwxUPK+OsZaqBDMGaNDSZtw53VoVk7HyT6AcRblMR/pfa0XucmH4hGw==
dependencies:
- "@jest/console" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
-"@jest/test-sequencer@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz#447339b8a3d7b5436f50934df30854e442a9d904"
- integrity sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==
+"@jest/test-sequencer@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.0.tgz#68beceb3de818dcb34fb3ea59be3c22c890bb6e5"
+ integrity sha512-WzjcDflqbpWe+SnJPCvB2gB6haGfrkzAgzY6Pb1aq+EPoVAj2mwBaKN0ROWI4H87aSslCjq2M+BUQFNJ8VpnDA==
dependencies:
- "@jest/test-result" "^27.4.6"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
- jest-runtime "^27.4.6"
+ "@jest/test-result" "^27.5.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
+ jest-runtime "^27.5.0"
-"@jest/transform@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.6.tgz#153621940b1ed500305eacdb31105d415dc30231"
- integrity sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==
+"@jest/transform@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.0.tgz#a4941e69ac51e8aa9a255ff4855b564c228c400b"
+ integrity sha512-yXUy/iO3TH1itxJ9BF7LLjuXt8TtgtjAl0PBQbUaCvRa+L0yYBob6uayW9dFRX/CDQweouLhvmXh44zRiaB+yA==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
babel-plugin-istanbul "^6.1.1"
chalk "^4.0.0"
convert-source-map "^1.4.0"
fast-json-stable-stringify "^2.0.0"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-util "^27.4.2"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-util "^27.5.0"
micromatch "^4.0.4"
pirates "^4.0.4"
slash "^3.0.0"
source-map "^0.6.1"
write-file-atomic "^3.0.0"
-"@jest/types@^27.4.2":
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5"
- integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==
+"@jest/types@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.0.tgz#6ad04a5c5355fd9f46e5cf761850e0edb3c209dd"
+ integrity sha512-oDHEp7gwSgA82RZ6pzUL3ugM2njP/lVB1MsxRZNOBk+CoNvh9SpH1lQixPFc/kDlV50v59csiW4HLixWmhmgPQ==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
@@ -871,18 +871,18 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-babel-jest@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.6.tgz#4d024e69e241cdf4f396e453a07100f44f7ce314"
- integrity sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==
+babel-jest@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.0.tgz#c653985241af3c76f59d70d65a570860c2594a50"
+ integrity sha512-puhCyvBTNLevhbd1oyw6t3gWBicWoUARQYKCBB/B1moif17NbyhxbsfadqZIw8zfJJD+W7Vw0Nb20pEjLxkXqQ==
dependencies:
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/babel__core" "^7.1.14"
babel-plugin-istanbul "^6.1.1"
- babel-preset-jest "^27.4.0"
+ babel-preset-jest "^27.5.0"
chalk "^4.0.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
slash "^3.0.0"
babel-plugin-istanbul@^6.1.1:
@@ -896,10 +896,10 @@ babel-plugin-istanbul@^6.1.1:
istanbul-lib-instrument "^5.0.4"
test-exclude "^6.0.0"
-babel-plugin-jest-hoist@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6"
- integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==
+babel-plugin-jest-hoist@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.0.tgz#8fdf07835f2165a068de3ce95fd7749a89801b51"
+ integrity sha512-ztwNkHl+g1GaoQcb8f2BER4C3LMvSXuF7KVqtUioXQgScSEnkl6lLgCILUYIR+CPTwL8H3F/PNLze64HPWF9JA==
dependencies:
"@babel/template" "^7.3.3"
"@babel/types" "^7.3.3"
@@ -924,12 +924,12 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-syntax-top-level-await" "^7.8.3"
-babel-preset-jest@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca"
- integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==
+babel-preset-jest@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.0.tgz#4e308711c3d2ff1f45cf5d9a23646e37b621fc9f"
+ integrity sha512-7bfu1cJBlgK/nKfTvMlElzA3jpi6GzDWX3fntnyP2cQSzoi/KUz6ewGlcb3PSRYZGyv+uPnVHY0Im3JbsViqgA==
dependencies:
- babel-plugin-jest-hoist "^27.4.0"
+ babel-plugin-jest-hoist "^27.5.0"
babel-preset-current-node-syntax "^1.0.0"
balanced-match@^1.0.0:
@@ -1192,10 +1192,10 @@ detect-newline@^3.0.0:
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-diff-sequences@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5"
- integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==
+diff-sequences@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.0.tgz#a8ac0cb742b17d6f30a6c43e233893a2402c0729"
+ integrity sha512-ZsOBWnhXiH+Zn0DcBNX/tiQsqrREHs/6oQsEVy2VJJjrTblykPima11pyHMSA/7PGmD+fwclTnKVKL/qtNREDQ==
domexception@^2.0.1:
version "2.0.1"
@@ -1204,6 +1204,11 @@ domexception@^2.0.1:
dependencies:
webidl-conversions "^5.0.0"
+eastasianwidth@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+ integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
electron-to-chromium@^1.3.830:
version "1.3.830"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz#40e3144204f8ca11b2cebec83cf14c20d3499236"
@@ -1306,15 +1311,15 @@ exit@^0.1.2:
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
-expect@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.6.tgz#f335e128b0335b6ceb4fcab67ece7cbd14c942e6"
- integrity sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==
+expect@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.0.tgz#ea2fbebb483c274043098c34a53923a0aee493f0"
+ integrity sha512-z73GZ132cBqrapO0X6BeRjyBXqOt9YeRtnDteHJIQqp5s2pZ41Hz23VUbsVFMfkrsFLU9GwoIRS0ZzLuFK8M5w==
dependencies:
- "@jest/types" "^27.4.2"
- jest-get-type "^27.4.0"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
+ "@jest/types" "^27.5.0"
+ jest-get-type "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
@@ -1333,11 +1338,12 @@ fb-watchman@^2.0.0:
dependencies:
bser "2.1.1"
-fetch-blob@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.2.tgz#6bc438675f3851ecea51758ac91f6a1cd1bacabd"
- integrity sha512-hunJbvy/6OLjCD0uuhLdp0mMPzP/yd2ssd1t2FCJsaA7wkWhpbp9xfuNVpv7Ll4jFhzp6T4LAupSiV9uOeg0VQ==
+fetch-blob@^3.1.2, fetch-blob@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.4.tgz#e8c6567f80ad7fc22fd302e7dcb72bafde9c1717"
+ integrity sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==
dependencies:
+ node-domexception "^1.0.0"
web-streams-polyfill "^3.0.3"
fill-range@^7.0.1:
@@ -1423,10 +1429,10 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-graceful-fs@^4.2.4:
- version "4.2.8"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
- integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+graceful-fs@^4.2.9:
+ version "4.2.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
has-flag@^3.0.0:
version "3.0.0"
@@ -1529,11 +1535,6 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-is-fullwidth-code-point@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
- integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
-
is-generator-fn@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
@@ -1616,226 +1617,226 @@ istanbul-reports@^3.1.3:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
-jest-changed-files@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5"
- integrity sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==
+jest-changed-files@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.0.tgz#61e8d0a7394c1ee1cec4c2893e206e62b1566066"
+ integrity sha512-BGWKI7E6ORqbF5usF1oA4ftbkhVZVrXr8jB0/BrU6TAn3kfOVwX2Zx6pKIXYutJ+qNEjT8Da/gGak0ajya/StA==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
execa "^5.0.0"
throat "^6.0.1"
-jest-circus@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.6.tgz#d3af34c0eb742a967b1919fbb351430727bcea6c"
- integrity sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==
+jest-circus@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.0.tgz#fcff8829ceb2c8ef4b4532ace7734d156c6664b9"
+ integrity sha512-+NPd1OxpAHYKjbW8dgL0huFgmtZRKSUKee/UtRgZJEfAxCeA12d7sp0coh5EGDBpW4fCk1Pcia/2dG+j6BQvdw==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
dedent "^0.7.0"
- expect "^27.4.6"
+ expect "^27.5.0"
is-generator-fn "^2.0.0"
- jest-each "^27.4.6"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
- jest-runtime "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
- pretty-format "^27.4.6"
+ jest-each "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
+ pretty-format "^27.5.0"
slash "^3.0.0"
stack-utils "^2.0.3"
throat "^6.0.1"
-jest-cli@^27.4.7:
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.7.tgz#d00e759e55d77b3bcfea0715f527c394ca314e5a"
- integrity sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==
+jest-cli@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.0.tgz#06557ad22818740fb28481089a574ba107a8b369"
+ integrity sha512-9ANs79Goz1ULKtG7HDm/F//4E69v8EFOLXRIHmeC/eK1xTUeQGlU6XP0Zwst386sKaKB4O60qhWY/UaTBS2MLA==
dependencies:
- "@jest/core" "^27.4.7"
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/core" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
exit "^0.1.2"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
import-local "^3.0.2"
- jest-config "^27.4.7"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
+ jest-config "^27.5.0"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
prompts "^2.0.1"
yargs "^16.2.0"
-jest-config@^27.4.7:
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.7.tgz#4f084b2acbd172c8b43aa4cdffe75d89378d3972"
- integrity sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==
+jest-config@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.0.tgz#d96ccf8e26d3f2f3ae6543686c48449c201bb621"
+ integrity sha512-eOIpvpXFz5WHuIYZN1QmvBLEjsSk3w+IAC/2jBpZClbprF53Bj9meBMgAbE15DSkaaJBDFmhXXd1L2eCLaWxQw==
dependencies:
"@babel/core" "^7.8.0"
- "@jest/test-sequencer" "^27.4.6"
- "@jest/types" "^27.4.2"
- babel-jest "^27.4.6"
+ "@jest/test-sequencer" "^27.5.0"
+ "@jest/types" "^27.5.0"
+ babel-jest "^27.5.0"
chalk "^4.0.0"
ci-info "^3.2.0"
deepmerge "^4.2.2"
glob "^7.1.1"
- graceful-fs "^4.2.4"
- jest-circus "^27.4.6"
- jest-environment-jsdom "^27.4.6"
- jest-environment-node "^27.4.6"
- jest-get-type "^27.4.0"
- jest-jasmine2 "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-resolve "^27.4.6"
- jest-runner "^27.4.6"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-circus "^27.5.0"
+ jest-environment-jsdom "^27.5.0"
+ jest-environment-node "^27.5.0"
+ jest-get-type "^27.5.0"
+ jest-jasmine2 "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-runner "^27.5.0"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
micromatch "^4.0.4"
- pretty-format "^27.4.6"
+ pretty-format "^27.5.0"
slash "^3.0.0"
-jest-diff@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.6.tgz#93815774d2012a2cbb6cf23f84d48c7a2618f98d"
- integrity sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==
+jest-diff@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.0.tgz#34dc608a3b9159df178dd480b6d835b5e6b92082"
+ integrity sha512-zztvHDCq/QcAVv+o6rts0reupSOxyrX+KLQEOMWCW2trZgcBFgp/oTK7hJCGpXvEIqKrQzyQlaPKn9W04+IMQg==
dependencies:
chalk "^4.0.0"
- diff-sequences "^27.4.0"
- jest-get-type "^27.4.0"
- pretty-format "^27.4.6"
+ diff-sequences "^27.5.0"
+ jest-get-type "^27.5.0"
+ pretty-format "^27.5.0"
-jest-docblock@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.4.0.tgz#06c78035ca93cbbb84faf8fce64deae79a59f69f"
- integrity sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==
+jest-docblock@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.0.tgz#096fa3a8b55d019a954ef7cc205c791bf94b2352"
+ integrity sha512-U4MtJgdZn2x+jpPzd7NAYvDmgJAA5h9QxVAwsyuH7IymGzY8VGHhAkHcIGOmtmdC61ORLxCbEhj6fCJsaCWzXA==
dependencies:
detect-newline "^3.0.0"
-jest-each@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.4.6.tgz#e7e8561be61d8cc6dbf04296688747ab186c40ff"
- integrity sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==
+jest-each@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.0.tgz#7bd00a767df0fbec0caba3df0d2c0b3268a2ce84"
+ integrity sha512-2vpajSdDMZmAxjSP1f4BG9KKduwHtuaI0w66oqLUkfaGUU7Ix/W+d8BW0h3/QEJiew7hR0GSblqdFwTEEbhBdw==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
- jest-get-type "^27.4.0"
- jest-util "^27.4.2"
- pretty-format "^27.4.6"
+ jest-get-type "^27.5.0"
+ jest-util "^27.5.0"
+ pretty-format "^27.5.0"
-jest-environment-jsdom@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz#c23a394eb445b33621dfae9c09e4c8021dea7b36"
- integrity sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==
+jest-environment-jsdom@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.0.tgz#6d22d9b76890e9b82c7e1062a15730efb3fb7361"
+ integrity sha512-sX49N8rjp6HSHeGpNgLk6mtHRd1IPAnE/u7wLQkb6Tz/1E08Q++Y8Zk/IbpVdcFywbzH1icFqEuDuHJ6o+uXXg==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/fake-timers" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
- jest-mock "^27.4.6"
- jest-util "^27.4.2"
+ jest-mock "^27.5.0"
+ jest-util "^27.5.0"
jsdom "^16.6.0"
-jest-environment-node@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.4.6.tgz#ee8cd4ef458a0ef09d087c8cd52ca5856df90242"
- integrity sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==
+jest-environment-node@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.0.tgz#1ab357b4715bff88d48c8b62b8379002ff955dd1"
+ integrity sha512-7UzisMMfGyrURhS/eUa7p7mgaqN3ajHylsjOgfcn0caNeYRZq4LHKZLfAxrPM34DWLnBZcRupEJlpQsizdSUsw==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/fake-timers" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
- jest-mock "^27.4.6"
- jest-util "^27.4.2"
+ jest-mock "^27.5.0"
+ jest-util "^27.5.0"
-jest-get-type@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5"
- integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==
+jest-get-type@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.0.tgz#861c24aa1b176be83c902292cb9618d580cac8a7"
+ integrity sha512-Vp6O8a52M/dahXRG/E0EJuWQROps2mDQ0sJYPgO8HskhdLwj9ajgngy2OAqZgV6e/RcU67WUHq6TgfvJb8flbA==
-jest-haste-map@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.6.tgz#c60b5233a34ca0520f325b7e2cc0a0140ad0862a"
- integrity sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==
+jest-haste-map@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.0.tgz#7cc3a920caf304c89fbfceb5d5717b929873f175"
+ integrity sha512-0KfckSBEKV+D6e0toXmIj4zzp72EiBnvkC0L+xYxenkLhAdkp2/8tye4AgMzz7Fqb1r8SWtz7+s1UQLrxMBang==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/graceful-fs" "^4.1.2"
"@types/node" "*"
anymatch "^3.0.3"
fb-watchman "^2.0.0"
- graceful-fs "^4.2.4"
- jest-regex-util "^27.4.0"
- jest-serializer "^27.4.0"
- jest-util "^27.4.2"
- jest-worker "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-regex-util "^27.5.0"
+ jest-serializer "^27.5.0"
+ jest-util "^27.5.0"
+ jest-worker "^27.5.0"
micromatch "^4.0.4"
walker "^1.0.7"
optionalDependencies:
fsevents "^2.3.2"
-jest-jasmine2@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz#109e8bc036cb455950ae28a018f983f2abe50127"
- integrity sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==
+jest-jasmine2@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.0.tgz#589d6574d1318d3fb41b3fc368344117ec417dcc"
+ integrity sha512-X7sT3HLNjjrBEepilxzPyNhNdyunaFBepo1L3T/fvYb9tb8Wb8qY576gwIa+SZcqYUqAA7/bT3EpZI4lAp0Qew==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/source-map" "^27.4.0"
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/source-map" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
- expect "^27.4.6"
+ expect "^27.5.0"
is-generator-fn "^2.0.0"
- jest-each "^27.4.6"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
- jest-runtime "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
- pretty-format "^27.4.6"
+ jest-each "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
+ pretty-format "^27.5.0"
throat "^6.0.1"
-jest-leak-detector@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz#ed9bc3ce514b4c582637088d9faf58a33bd59bf4"
- integrity sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==
+jest-leak-detector@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.0.tgz#c98c02e64eab4da9a8b91f058d2b7473272272ee"
+ integrity sha512-Ak3k+DD3ao5d4/zzJrxAQ5UV5wiCrp47jH94ZD4/vXSzQgE6WBVDfg83VtculLILO7Y6/Q/7yzKSrtN9Na8luA==
dependencies:
- jest-get-type "^27.4.0"
- pretty-format "^27.4.6"
+ jest-get-type "^27.5.0"
+ pretty-format "^27.5.0"
-jest-matcher-utils@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz#53ca7f7b58170638590e946f5363b988775509b8"
- integrity sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==
+jest-matcher-utils@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.0.tgz#d2fc737224fb3bfa38eaa2393ac5bc953d5c5697"
+ integrity sha512-5ruyzWMGb1ilCWD6ECwNdOhQBeIXAjHmHd5c3uO6quR7RIMHPRP2ucOaejz2j+0R0Ko4GanWM6SqXAeF8nYN5g==
dependencies:
chalk "^4.0.0"
- jest-diff "^27.4.6"
- jest-get-type "^27.4.0"
- pretty-format "^27.4.6"
+ jest-diff "^27.5.0"
+ jest-get-type "^27.5.0"
+ pretty-format "^27.5.0"
-jest-message-util@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.6.tgz#9fdde41a33820ded3127465e1a5896061524da31"
- integrity sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==
+jest-message-util@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.0.tgz#654a781b38a305b1fd8120053c784c67bca00a52"
+ integrity sha512-lfbWRhTtmZMEHPAtl0SrvNzK1F4UnVNMHOliRQT2BJ4sBFzIb0gBCHA4ebWD4o6l1fUyvDPxM01K9OIMQTAdQw==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
micromatch "^4.0.4"
- pretty-format "^27.4.6"
+ pretty-format "^27.5.0"
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.4.6.tgz#77d1ba87fbd33ccb8ef1f061697e7341b7635195"
- integrity sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==
+jest-mock@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.0.tgz#1018656fe6bcd0f58fd1edca7f420169f6707c6e"
+ integrity sha512-PHluG6MJGng82/sxh8OiB9fnxzNn3cazceSHCAmAKs4g5rMhc3EZCrJXv+4w61rA2WGagMUj7QLLrA1SRlFpzQ==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
jest-pnp-resolver@^1.2.2:
@@ -1843,182 +1844,181 @@ jest-pnp-resolver@^1.2.2:
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
-jest-regex-util@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca"
- integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==
+jest-regex-util@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.0.tgz#26c26cf15a73edba13cb8930e261443d25ed8608"
+ integrity sha512-e9LqSd6HsDsqd7KS3rNyYwmQAaG9jq4U3LbnwVxN/y3nNlDzm2OFs596uo9zrUY+AV1opXq6ome78tRDUCRWfA==
-jest-resolve-dependencies@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz#fc50ee56a67d2c2183063f6a500cc4042b5e2327"
- integrity sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==
+jest-resolve-dependencies@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.0.tgz#8e3b15589848995ddc9a39f49462dad5b7bc14a2"
+ integrity sha512-xQsy7CmrT4CJxdNUEdzZU2M/v6YmtQ/pkJM+sx7TA1siG1zfsZuo78PZvzglwRMQFr88f3Su4Om8OEBAic+SMw==
dependencies:
- "@jest/types" "^27.4.2"
- jest-regex-util "^27.4.0"
- jest-snapshot "^27.4.6"
+ "@jest/types" "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-snapshot "^27.5.0"
-jest-resolve@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.6.tgz#2ec3110655e86d5bfcfa992e404e22f96b0b5977"
- integrity sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==
+jest-resolve@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.0.tgz#a8e95a68dfb4a59faa508d7b6d2c6a02dcabb712"
+ integrity sha512-PkDpYEGV/nFqThnIrlPtj8oTxyAV3iuuS6or7dZYyUWaHr/tyyVb5qfBmZS6FEr7ozBHgjrF1bgcgIefnlicbw==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
jest-pnp-resolver "^1.2.2"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
resolve "^1.20.0"
resolve.exports "^1.1.0"
slash "^3.0.0"
-jest-runner@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.6.tgz#1d390d276ec417e9b4d0d081783584cbc3e24773"
- integrity sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==
+jest-runner@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.0.tgz#b5747a4444b4d3faae019bd201943948882d26c3"
+ integrity sha512-RMzXhkJLLOKKgUPY2trpyVBijaFmswMtgoCCBk2PQVRHC6yo1vLd1/jmFP39s5OXXnt7rntuzKSYvxl+QUibqQ==
dependencies:
- "@jest/console" "^27.4.6"
- "@jest/environment" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/environment" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
emittery "^0.8.1"
- exit "^0.1.2"
- graceful-fs "^4.2.4"
- jest-docblock "^27.4.0"
- jest-environment-jsdom "^27.4.6"
- jest-environment-node "^27.4.6"
- jest-haste-map "^27.4.6"
- jest-leak-detector "^27.4.6"
- jest-message-util "^27.4.6"
- jest-resolve "^27.4.6"
- jest-runtime "^27.4.6"
- jest-util "^27.4.2"
- jest-worker "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-docblock "^27.5.0"
+ jest-environment-jsdom "^27.5.0"
+ jest-environment-node "^27.5.0"
+ jest-haste-map "^27.5.0"
+ jest-leak-detector "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-util "^27.5.0"
+ jest-worker "^27.5.0"
source-map-support "^0.5.6"
throat "^6.0.1"
-jest-runtime@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.6.tgz#83ae923818e3ea04463b22f3597f017bb5a1cffa"
- integrity sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==
+jest-runtime@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.0.tgz#2497116742b9e7cc1e5381a9ded36602b8b0c78c"
+ integrity sha512-T7APxCPjN3p3ePcLuypbWtD0UZHyAdvIADZ9ABI/sFZ9t/Rf2xIUd6D7RzZIX+unewJRooVGWrgDIgeUuj0OUA==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/fake-timers" "^27.4.6"
- "@jest/globals" "^27.4.6"
- "@jest/source-map" "^27.4.0"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/globals" "^27.5.0"
+ "@jest/source-map" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
cjs-module-lexer "^1.0.0"
collect-v8-coverage "^1.0.0"
execa "^5.0.0"
glob "^7.1.3"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
- jest-message-util "^27.4.6"
- jest-mock "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-resolve "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-mock "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
slash "^3.0.0"
strip-bom "^4.0.0"
-jest-serializer@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a"
- integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==
+jest-serializer@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.0.tgz#439a110df27f97a40c114a429b708c2ada15a81f"
+ integrity sha512-aSDFqQlVXtBH+Zb5dl9mCvTSFkabixk/9P9cpngL4yJKpmEi9USxfDhONFMzJrtftPvZw3PcltUVmtFZTB93rg==
dependencies:
"@types/node" "*"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
-jest-snapshot@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.6.tgz#e2a3b4fff8bdce3033f2373b2e525d8b6871f616"
- integrity sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==
+jest-snapshot@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.0.tgz#c5c4c084f5e10036f31e7647de1a6f28c07681fc"
+ integrity sha512-cAJj15uqWGkro0bfcv/EgusBnqNgCpRruFQZghsMYTq4Fm2lk/VhAf8DgRr8wvhR6Ue1hkeL8tn70Cw4t8x/5A==
dependencies:
"@babel/core" "^7.7.2"
"@babel/generator" "^7.7.2"
"@babel/plugin-syntax-typescript" "^7.7.2"
"@babel/traverse" "^7.7.2"
"@babel/types" "^7.0.0"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/babel__traverse" "^7.0.4"
"@types/prettier" "^2.1.5"
babel-preset-current-node-syntax "^1.0.0"
chalk "^4.0.0"
- expect "^27.4.6"
- graceful-fs "^4.2.4"
- jest-diff "^27.4.6"
- jest-get-type "^27.4.0"
- jest-haste-map "^27.4.6"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
- jest-util "^27.4.2"
+ expect "^27.5.0"
+ graceful-fs "^4.2.9"
+ jest-diff "^27.5.0"
+ jest-get-type "^27.5.0"
+ jest-haste-map "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-util "^27.5.0"
natural-compare "^1.4.0"
- pretty-format "^27.4.6"
+ pretty-format "^27.5.0"
semver "^7.3.2"
-jest-util@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621"
- integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==
+jest-util@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.0.tgz#0b9540d91b0de65d288f235fa9899e6eeeab8d35"
+ integrity sha512-FUUqOx0gAzJy3ytatT1Ss372M1kmhczn8x7aE0++11oPGW1FyD/5NjYBI8w1KOXFm6IVjtaZm2szfJJL+CHs0g==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
ci-info "^3.2.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
picomatch "^2.2.3"
-jest-validate@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.6.tgz#efc000acc4697b6cf4fa68c7f3f324c92d0c4f1f"
- integrity sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==
+jest-validate@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.0.tgz#b3df32372d2c832fa5a5e31ee2c37f94f79f7f1f"
+ integrity sha512-2XZzQWNrY9Ypo11mm4ZeVjvr++CQG/45XnmA2aWwx155lTwy1JGFI8LpQ2dBCSAeO21ooqg/FCIvv9WwfnPClA==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
camelcase "^6.2.0"
chalk "^4.0.0"
- jest-get-type "^27.4.0"
+ jest-get-type "^27.5.0"
leven "^3.1.0"
- pretty-format "^27.4.6"
+ pretty-format "^27.5.0"
-jest-watcher@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.6.tgz#673679ebeffdd3f94338c24f399b85efc932272d"
- integrity sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==
+jest-watcher@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.0.tgz#ca11c3b9115c92a8fd2fd9e2def296d45206f1ca"
+ integrity sha512-MhIeIvEd6dnnspE0OfYrqHOAfZZdyFqx/k8U2nvVFSkLYf22qAFfyNWPVQYcwqKVNobcOhJoT0kV/nRHGbqK8A==
dependencies:
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
- jest-util "^27.4.2"
+ jest-util "^27.5.0"
string-length "^4.0.1"
-jest-worker@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e"
- integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==
+jest-worker@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.0.tgz#99ee77e4d06168107c27328bd7f54e74c3a48d59"
+ integrity sha512-8OEHiPNOPTfaWnJ2SUHM8fmgeGq37uuGsQBvGKQJl1f+6WIy6g7G3fE2ruI5294bUKUI9FaCWt5hDvO8HSwsSg==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@27.4.7:
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.7.tgz#87f74b9026a1592f2da05b4d258e57505f28eca4"
- integrity sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==
+jest@27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.0.tgz#2c04ff88754e42e9fc5240840b91f9a9a8990875"
+ integrity sha512-sCMZhL9zy0fiFc4H0cKlXq7BcghMSxm5ZnEyaPWTteArU5ix6JjOKyOXSUBGLTQCmt5kuX9zEvQ9BSshHOPB3A==
dependencies:
- "@jest/core" "^27.4.7"
+ "@jest/core" "^27.5.0"
import-local "^3.0.2"
- jest-cli "^27.4.7"
+ jest-cli "^27.5.0"
js-tokens@^4.0.0:
version "4.0.0"
@@ -2186,13 +2186,18 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-node-fetch@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.1.0.tgz#714f4922dc270239487654eaeeab86b8206cb52e"
- integrity sha512-QU0WbIfMUjd5+MUzQOYhenAazakV7Irh1SGkWCsRzBwvm4fAhzEUaHMJ6QLP7gWT6WO9/oH2zhKMMGMuIrDyKw==
+node-domexception@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
+ integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
+
+node-fetch@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.0.tgz#59390db4e489184fa35d4b74caf5510e8dfbaf3b"
+ integrity sha512-8xeimMwMItMw8hRrOl3C9/xzU49HV/yE6ORew/l+dxWimO5A4Ra8ld2rerlJvc/O7et5Z1zrWsPX43v1QBjCxw==
dependencies:
data-uri-to-buffer "^4.0.0"
- fetch-blob "^3.1.2"
+ fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
node-int64@^0.4.0:
@@ -2348,10 +2353,10 @@ prelude-ls@~1.1.2:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-pretty-format@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7"
- integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==
+pretty-format@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.0.tgz#71e1af7a4b587d259fa4668dcd3e94af077767cb"
+ integrity sha512-xEi6BRPZ+J1AIS4BAtFC/+rh5jXlXObGZjx5+OSpM95vR/PGla78bFVHMy5GdZjP9wk3AHAMHROXq/r69zXltw==
dependencies:
ansi-regex "^5.0.1"
ansi-styles "^5.0.0"
@@ -2521,13 +2526,13 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
-string-width@5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.0.1.tgz#0d8158335a6cfd8eb95da9b6b262ce314a036ffd"
- integrity sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==
+string-width@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3"
+ integrity sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==
dependencies:
+ eastasianwidth "^0.2.0"
emoji-regex "^9.2.2"
- is-fullwidth-code-point "^4.0.0"
strip-ansi "^7.0.1"
string-width@^4.1.0, string-width@^4.2.0:
diff --git a/scripts/sync-flow-tests.js b/scripts/sync-flow-tests.js
index 68b0ef0d8..57fc2b9f0 100644
--- a/scripts/sync-flow-tests.js
+++ b/scripts/sync-flow-tests.js
@@ -3,7 +3,7 @@
const fs = require("fs");
const path = require("path");
const flowParser = require("flow-parser");
-const globby = require("globby");
+const fastGlob = require("fast-glob");
const rimraf = require("rimraf");
const DEFAULT_SPEC_CONTENT = "run_spec(__dirname);\n";
@@ -11,9 +11,11 @@ const SPEC_FILE_NAME = "jsfmt.spec.js";
const FLOW_TESTS_DIR = path.join(__dirname, "..", "tests", "flow-repo");
function tryParse(file, content) {
+ // Keep this sync with `/src/language-js/parse/flow.js`
const ast = flowParser.parse(content, {
- esproposal_class_instance_fields: true,
- esproposal_class_static_fields: true,
+ comments: false,
+ enums: true,
+ esproposal_decorators: true,
esproposal_export_star_as: true,
});
@@ -27,10 +29,10 @@ function tryParse(file, content) {
}
function syncTests(syncDir) {
- const specFiles = globby.sync(
+ const specFiles = fastGlob.sync(
path.join(FLOW_TESTS_DIR, "**", SPEC_FILE_NAME)
);
- const filesToCopy = globby.sync(path.join(syncDir, "**/*.js"));
+ const filesToCopy = fastGlob.sync(path.join(syncDir, "**/*.js"));
if (filesToCopy.length === 0) {
throw new Error(
diff --git a/scripts/tools/eslint-plugin-prettier-internal-rules/test.js b/scripts/tools/eslint-plugin-prettier-internal-rules/test.js
index b7d5857b5..40bf3c61b 100644
--- a/scripts/tools/eslint-plugin-prettier-internal-rules/test.js
+++ b/scripts/tools/eslint-plugin-prettier-internal-rules/test.js
@@ -272,8 +272,8 @@ test("no-identifier-n", {
valid: ["const a = {n: 1}", "const m = 1", "a.n = 1"],
invalid: [
{
- code: "const n = 1; alet(n)",
- output: "const node = 1; alet(node)",
+ code: "const n = 1; alert(n)",
+ output: "const node = 1; alert(node)",
errors: 1,
},
{
diff --git a/scripts/utils/index.mjs b/scripts/utils/index.mjs
index 46438ac31..9e9e1c5a5 100644
--- a/scripts/utils/index.mjs
+++ b/scripts/utils/index.mjs
@@ -2,13 +2,15 @@ import fs from "node:fs/promises";
import url from "node:url";
import path from "node:path";
+const toPath = (path) => (path instanceof URL ? url.fileURLToPath(path) : path);
+
async function readJson(file) {
const data = await fs.readFile(file);
return JSON.parse(data);
}
function writeJson(file, content) {
- content = JSON.stringify(content, null, 2);
+ content = JSON.stringify(content, null, 2) + "\n";
return writeFile(file, content);
}
@@ -18,7 +20,7 @@ async function copyFile(from, to) {
}
async function writeFile(file, content) {
- const directory = path.dirname(file);
+ const directory = path.dirname(toPath(file));
try {
await fs.mkdir(directory, { recursive: true });
} catch {
diff --git a/scripts/vendors/README.md b/scripts/vendors/README.md
new file mode 100644
index 000000000..ff8d54414
--- /dev/null
+++ b/scripts/vendors/README.md
@@ -0,0 +1,55 @@
+# `./scripts/vendors`
+
+Scripts for bundling Pure ESM Packages to CommonJS so that Prettier can use them.
+
+## Context
+
+https://github.com/prettier/prettier/issues/12209#issuecomment-1028212785
+
+Currently, Prettier is developed using CommonJS Modules. This is for historical reasons, and we are considering [migrating to ECMAScript Modules](https://github.com/prettier/prettier/issues/10157) in the future.
+
+However, migrating to ECMAScript Modules is not an easy task.
+
+While we are working on it, several important packages are being migrated to Pure ESM. Please see https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c from [@sindresorhus](https://github.com/sindresorhus) about Pure ESM Packages.
+
+It would be a problem if Prettier could not use the new Pure ESM Package until we have completed that work.
+
+So we will put the files bundled with Pure ESM Packages as CommonJS Modules under `/vendors`, and Prettier will use them.
+
+**This will be removed during the migration to ESM.**
+
+## Usage
+
+### `/scripts/vendors/bundle-vendors.mjs`
+
+```
+node ./scripts/vendors/bundle-vendors.mjs
+```
+
+This script do the following 4 things:
+
+**1. Bundle ESM Packages to CommonJS**
+
+This bundles listed packages in `vendors.mjs` into `/vendors/*.js` as CommonJS.
+
+**2. Update `package.json`**
+
+This updates [`"imports"` in `package.json`](https://nodejs.org/api/packages.html#imports) to enables aliases to resolve packages put in `/vendors/*.js`.
+
+**3. Lock ESM Packages version to `vendor-versions.json`**
+
+This locks versions of packages that is bundled to `vendor-versions.json`. It is used to validate by `validate-vendor-versions.mjs`.
+
+**4. Generate `/vendors/types.d.ts`**
+
+This Generates a minimal type definition file that satisfies `lint:typecheck`.
+
+### `/scripts/vendors/validate-vendor-versions.mjs`
+
+```
+node ./scripts/vendors/validate-vendor-versions.mjs
+```
+
+This script compares the version of packages locked in `vendor-versions.json` with the version of packages actually installed, and fails if they are different.
+
+This is mainly run on CI to keep consistency between bundled and installed packages.
diff --git a/scripts/vendors/bundle-vendors.mjs b/scripts/vendors/bundle-vendors.mjs
new file mode 100644
index 000000000..8a82f8cbc
--- /dev/null
+++ b/scripts/vendors/bundle-vendors.mjs
@@ -0,0 +1,109 @@
+#!/usr/bin/env node
+
+import fs from "node:fs/promises";
+import path from "node:path";
+import createEsmUtils from "esm-utils";
+import esbuild from "esbuild";
+import { readPackageUp } from "read-pkg-up";
+import { PROJECT_ROOT } from "../utils/index.mjs";
+import esbuildPluginLicense from "../build/esbuild-plugins/license.mjs";
+import vendors from "./vendors.mjs";
+import { saveVendorVersions, saveVendorLicenses } from "./utils.mjs";
+import esbuildPluginTsNocheck from "./esbuild-plugin-ts-nocheck.mjs";
+
+const { __dirname, require } = createEsmUtils(import.meta);
+const rootDir = path.join(__dirname, "..", "..");
+// prettier/vendors
+const vendorsDir = path.join(rootDir, "vendors");
+// prettier/vendors/*.js
+const getVendorFilePath = (vendorName) =>
+ path.join(vendorsDir, `${vendorName}.js`);
+
+async function lockVersions(vendors) {
+ const vendorVersions = {};
+ for (const vendor of vendors) {
+ const { packageJson: vendorPackage } = await readPackageUp({
+ cwd: path.dirname(require.resolve(vendor)),
+ });
+ const vendorVersion = vendorPackage.version;
+ vendorVersions[vendor] = vendorVersion;
+ }
+ await saveVendorVersions(vendorVersions);
+}
+
+async function fileExists(filePath) {
+ try {
+ return (await fs.stat(filePath)).isFile();
+ } catch {
+ return false;
+ }
+}
+
+async function cleanExistsBundledJS() {
+ for (const file of await fs.readdir(vendorsDir)) {
+ const filePath = path.join(vendorsDir, file);
+ if (path.extname(file) === ".js" && (await fileExists(filePath))) {
+ await fs.rm(filePath);
+ }
+ }
+}
+
+async function bundle(vendor, options) {
+ const outfile = getVendorFilePath(vendor);
+ if (await fileExists(outfile)) {
+ await fs.rm(outfile);
+ }
+
+ /** @type {import("esbuild").CommonOptions} */
+ const esbuildOption = {
+ entryPoints: [require.resolve(vendor)],
+ bundle: true,
+ target: ["node12.17.0"],
+ platform: "node",
+ plugins: [
+ esbuildPluginTsNocheck(),
+ esbuildPluginLicense({
+ cwd: PROJECT_ROOT,
+ thirdParty: {
+ includePrivate: true,
+ output: options.onLicenseFound,
+ },
+ }),
+ ],
+ outfile,
+ };
+ await esbuild.build(esbuildOption);
+
+ await fs.writeFile(
+ path.join(vendorsDir, `${vendor}.d.ts`),
+ [
+ "// This file is generated automatically.",
+ `export {default} from "${vendor}";`,
+ `export * from "${vendor}";`,
+ "",
+ ].join("\n"),
+ "utf-8"
+ );
+}
+
+async function main() {
+ await cleanExistsBundledJS();
+
+ const licenses = [];
+ for (const vendor of vendors) {
+ await bundle(vendor, {
+ onLicenseFound(dependencies) {
+ licenses.push(...dependencies);
+ },
+ });
+ console.log(`Bundled: ${vendor}`);
+ }
+
+ await lockVersions(vendors);
+ console.log("Vendor versions saved");
+
+ await saveVendorLicenses(licenses);
+ console.log("Vendor licenses saved");
+}
+
+main();
diff --git a/scripts/vendors/esbuild-plugin-ts-nocheck.mjs b/scripts/vendors/esbuild-plugin-ts-nocheck.mjs
new file mode 100644
index 000000000..17c0d0b22
--- /dev/null
+++ b/scripts/vendors/esbuild-plugin-ts-nocheck.mjs
@@ -0,0 +1,20 @@
+import fs from "node:fs";
+
+const tsNoCheck = "// @ts-nocheck\n// This file is generated automatically\n";
+
+export default function esbuildPluginTsNocheck() {
+ return {
+ name: "ts-no-check",
+ setup(build) {
+ const options = build.initialOptions;
+ const { outfile } = options;
+ build.onEnd(() => {
+ if (!fs.existsSync(outfile)) {
+ throw new Error(`${outfile} not exists`);
+ }
+ const text = fs.readFileSync(outfile, "utf8");
+ fs.writeFileSync(outfile, tsNoCheck + text);
+ });
+ },
+ };
+}
diff --git a/scripts/vendors/utils.mjs b/scripts/vendors/utils.mjs
new file mode 100644
index 000000000..b579fd05b
--- /dev/null
+++ b/scripts/vendors/utils.mjs
@@ -0,0 +1,23 @@
+import fs from "node:fs";
+import { readJson, writeJson } from "../utils/index.mjs";
+
+const vendorMetaFile = new URL("./vendor-meta.json", import.meta.url);
+const getMeta = () =>
+ fs.existsSync(vendorMetaFile) ? readJson(vendorMetaFile) : {};
+
+export async function getVendorVersions() {
+ const meta = await getMeta();
+ return meta.versions;
+}
+
+export async function saveVendorVersions(versions) {
+ const meta = await getMeta();
+ meta.versions = versions;
+ await writeJson(vendorMetaFile, meta);
+}
+
+export async function saveVendorLicenses(licenses) {
+ const meta = await getMeta();
+ meta.licenses = licenses;
+ await writeJson(vendorMetaFile, meta);
+}
diff --git a/scripts/vendors/validate-vendor-versions.mjs b/scripts/vendors/validate-vendor-versions.mjs
new file mode 100644
index 000000000..d5a408af7
--- /dev/null
+++ b/scripts/vendors/validate-vendor-versions.mjs
@@ -0,0 +1,42 @@
+#!/usr/bin/env node
+
+import createEsmUtils from "esm-utils";
+import { readPackageUp } from "read-pkg-up";
+import { getVendorVersions } from "./utils.mjs";
+import vendors from "./vendors.mjs";
+
+const { require } = createEsmUtils(import.meta);
+
+async function main() {
+ const errors = [];
+ const vendorVersions = await getVendorVersions();
+ for (const vendor of vendors) {
+ const { packageJson: vendorPackage } = await readPackageUp({
+ cwd: require.resolve(vendor),
+ });
+ const vendorPackageVersion = vendorPackage.version;
+ const lockedVersion = vendorVersions[vendor];
+ if (vendorPackageVersion !== lockedVersion) {
+ errors.push({
+ oldVersion: lockedVersion,
+ newVersion: vendorPackageVersion,
+ packageName: vendor,
+ });
+ }
+ }
+ if (errors.length > 0) {
+ for (const { packageName, oldVersion, newVersion } of errors) {
+ console.error(
+ `The version of \`${packageName}\` is "${newVersion}", expected locked "${oldVersion}"`
+ );
+ }
+ console.error(
+ "Did you forget running `./scripts/vendors/bundle-vendors.mjs`?"
+ );
+ process.exitCode = 1;
+ } else {
+ console.log("Done");
+ }
+}
+
+main();
diff --git a/scripts/vendors/vendor-meta.json b/scripts/vendors/vendor-meta.json
new file mode 100644
index 000000000..acd4925ac
--- /dev/null
+++ b/scripts/vendors/vendor-meta.json
@@ -0,0 +1,164 @@
+{
+ "licenses": [
+ {
+ "name": "ansi-regex",
+ "maintainers": [],
+ "version": "6.0.1",
+ "description": "Regular expression for matching ANSI escape codes",
+ "repository": "chalk/ansi-regex",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "contributors": []
+ },
+ {
+ "name": "strip-ansi",
+ "maintainers": [],
+ "version": "7.0.1",
+ "description": "Strip ANSI escape codes from a string",
+ "repository": "chalk/strip-ansi",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "contributors": []
+ },
+ {
+ "name": "is-fullwidth-code-point",
+ "maintainers": [],
+ "version": "4.0.0",
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "repository": "sindresorhus/is-fullwidth-code-point",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "contributors": []
+ },
+ {
+ "name": "emoji-regex",
+ "maintainers": [],
+ "version": "9.2.2",
+ "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/mathiasbynens/emoji-regex.git"
+ },
+ "homepage": "https://mths.be/emoji-regex",
+ "private": false,
+ "license": "MIT",
+ "licenseText": "Copyright Mathias Bynens \n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Mathias Bynens",
+ "email": null,
+ "url": "https://mathiasbynens.be/"
+ },
+ "contributors": []
+ },
+ {
+ "name": "string-width",
+ "maintainers": [],
+ "version": "5.0.1",
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "repository": "sindresorhus/string-width",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "contributors": []
+ },
+ {
+ "name": "mimic-fn",
+ "maintainers": [],
+ "version": "4.0.0",
+ "description": "Make a function mimic another one",
+ "repository": "sindresorhus/mimic-fn",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "contributors": []
+ },
+ {
+ "name": "p-defer",
+ "maintainers": [],
+ "version": "1.0.0",
+ "description": "Create a deferred promise",
+ "repository": "sindresorhus/p-defer",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "The MIT License (MIT)\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "contributors": []
+ },
+ {
+ "name": "map-age-cleaner",
+ "maintainers": [],
+ "version": "0.1.3",
+ "description": "Automatically cleanup expired items in a Map",
+ "repository": "SamVerschueren/map-age-cleaner",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "MIT License\n\nCopyright (c) Sam Verschueren (github.com/SamVerschueren)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Sam Verschueren",
+ "email": "sam.verschueren@gmail.com",
+ "url": "github.com/SamVerschueren"
+ },
+ "contributors": []
+ },
+ {
+ "name": "mem",
+ "maintainers": [],
+ "version": "9.0.2",
+ "description": "Memoize functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input",
+ "repository": "sindresorhus/mem",
+ "homepage": null,
+ "private": false,
+ "license": "MIT",
+ "licenseText": "MIT License\n\nCopyright (c) Sindre Sorhus (https://sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "contributors": []
+ }
+ ],
+ "versions": {
+ "string-width": "5.0.1",
+ "mem": "9.0.2"
+ }
+}
diff --git a/scripts/vendors/vendors.mjs b/scripts/vendors/vendors.mjs
new file mode 100644
index 000000000..ebc992813
--- /dev/null
+++ b/scripts/vendors/vendors.mjs
@@ -0,0 +1,3 @@
+const vendors = ["string-width", "mem"];
+
+export default vendors;
diff --git a/src/cli/format.js b/src/cli/format.js
index 13aeca6f8..01806522f 100644
--- a/src/cli/format.js
+++ b/src/cli/format.js
@@ -16,9 +16,18 @@ const getOptionsForFile = require("./options/get-options-for-file.js");
const isTTY = require("./is-tty.js");
function diff(a, b) {
- return require("diff").createTwoFilesPatch("", "", a, b, "", "", {
- context: 2,
- });
+ // Use `diff/lib/patch/create.js` instead of `diff` to reduce bundle size
+ return require("diff/lib/patch/create.js").createTwoFilesPatch(
+ "",
+ "",
+ a,
+ b,
+ "",
+ "",
+ {
+ context: 2,
+ }
+ );
}
function handleError(context, filename, error, printedFilename) {
diff --git a/src/cli/options/get-options-for-file.js b/src/cli/options/get-options-for-file.js
index e91fab07a..e2bbe6507 100644
--- a/src/cli/options/get-options-for-file.js
+++ b/src/cli/options/get-options-for-file.js
@@ -1,6 +1,7 @@
"use strict";
const dashify = require("dashify");
+const chalk = require("chalk");
// eslint-disable-next-line no-restricted-modules
const prettier = require("../../index.js");
const { optionsNormalizer } = require("../prettier-internal.js");
@@ -49,7 +50,7 @@ function parseArgsToOptions(context, overrideDefaults) {
default: cliifyOptions(overrideDefaults, apiDetailedOptionMap),
}),
context.detailedOptions,
- { logger: false }
+ { logger: false, colorsModule: chalk }
),
context.detailedOptions
);
diff --git a/src/cli/options/parse-cli-arguments.js b/src/cli/options/parse-cli-arguments.js
index 1dc14b1bd..d1b341d08 100644
--- a/src/cli/options/parse-cli-arguments.js
+++ b/src/cli/options/parse-cli-arguments.js
@@ -1,6 +1,7 @@
"use strict";
const pick = require("lodash/pick");
const camelCase = require("camelcase");
+const chalk = require("chalk");
const {
optionsNormalizer: { normalizeCliOptions },
} = require("../prettier-internal.js");
@@ -19,7 +20,10 @@ function parseArgv(rawArguments, detailedOptions, logger, keys) {
argv = pick(argv, keys);
}
- const normalized = normalizeCliOptions(argv, detailedOptions, { logger });
+ const normalized = normalizeCliOptions(argv, detailedOptions, {
+ logger,
+ colorsModule: chalk,
+ });
return Object.fromEntries(
Object.entries(normalized).map(([key, value]) => {
diff --git a/src/common/load-plugins.js b/src/common/load-plugins.js
index 933693b6d..9985a6f38 100644
--- a/src/common/load-plugins.js
+++ b/src/common/load-plugins.js
@@ -4,17 +4,17 @@ const fs = require("fs");
const path = require("path");
const uniqBy = require("lodash/uniqBy");
const partition = require("lodash/partition");
-const globby = require("globby");
-const mem = require("mem");
+const fastGlob = require("fast-glob");
const internalPlugins = require("../languages.js");
+const { default: mem, memClear } = require("../../vendors/mem.js");
const thirdParty = require("./third-party.js");
const resolve = require("./resolve.js");
const memoizedLoad = mem(load, { cacheKey: JSON.stringify });
const memoizedSearch = mem(findPluginsInNodeModules);
const clearCache = () => {
- mem.clear(memoizedLoad);
- mem.clear(memoizedSearch);
+ memClear(memoizedLoad);
+ memClear(memoizedSearch);
};
function load(plugins, pluginSearchDirs) {
@@ -102,7 +102,7 @@ function load(plugins, pluginSearchDirs) {
}
function findPluginsInNodeModules(nodeModulesDir) {
- const pluginPackageJsonPaths = globby.sync(
+ const pluginPackageJsonPaths = fastGlob.sync(
[
"prettier-plugin-*/package.json",
"@*/prettier-plugin-*/package.json",
@@ -110,7 +110,6 @@ function findPluginsInNodeModules(nodeModulesDir) {
],
{
cwd: nodeModulesDir,
- expandDirectories: false,
}
);
return pluginPackageJsonPaths.map(path.dirname);
diff --git a/src/common/util.js b/src/common/util.js
index ab7383db7..4acfb14d9 100644
--- a/src/common/util.js
+++ b/src/common/util.js
@@ -1,11 +1,20 @@
"use strict";
-const stringWidth = require("string-width");
const escapeStringRegexp = require("escape-string-regexp");
const getLast = require("../utils/get-last.js");
const { getSupportInfo } = require("../main/support.js");
-
-const notAsciiRegex = /[^\x20-\x7F]/;
+const isNonEmptyArray = require("../utils/is-non-empty-array.js");
+const getStringWidth = require("../utils/get-string-width.js");
+const {
+ skipWhitespace,
+ skipSpaces,
+ skipToLineEnd,
+ skipEverythingButNewLine,
+} = require("../utils/text/skip.js");
+const skipInlineComment = require("../utils/text/skip-inline-comment.js");
+const skipTrailingComment = require("../utils/text/skip-trailing-comment.js");
+const skipNewline = require("../utils/text/skip-newline.js");
+const getNextNonSpaceNonCommentCharacterIndexWithStartIndex = require("../utils/text/get-next-non-space-non-comment-character-index-with-start-index.js");
const getPenultimate = (arr) => arr[arr.length - 2];
@@ -54,110 +63,6 @@ function skip(chars) {
};
}
-/**
- * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
- */
-const skipWhitespace = skip(/\s/);
-/**
- * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
- */
-const skipSpaces = skip(" \t");
-/**
- * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
- */
-const skipToLineEnd = skip(",; \t");
-/**
- * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
- */
-const skipEverythingButNewLine = skip(/[^\n\r]/);
-
-/**
- * @param {string} text
- * @param {number | false} index
- * @returns {number | false}
- */
-function skipInlineComment(text, index) {
- /* istanbul ignore next */
- if (index === false) {
- return false;
- }
-
- if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") {
- for (let i = index + 2; i < text.length; ++i) {
- if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") {
- return i + 2;
- }
- }
- }
- return index;
-}
-
-/**
- * @param {string} text
- * @param {number | false} index
- * @returns {number | false}
- */
-function skipTrailingComment(text, index) {
- /* istanbul ignore next */
- if (index === false) {
- return false;
- }
-
- if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") {
- return skipEverythingButNewLine(text, index);
- }
- return index;
-}
-
-// This one doesn't use the above helper function because it wants to
-// test \r\n in order and `skip` doesn't support ordering and we only
-// want to skip one newline. It's simple to implement.
-/**
- * @param {string} text
- * @param {number | false} index
- * @param {SkipOptions=} opts
- * @returns {number | false}
- */
-function skipNewline(text, index, opts) {
- const backwards = opts && opts.backwards;
- if (index === false) {
- return false;
- }
-
- const atIndex = text.charAt(index);
- if (backwards) {
- // We already replace `\r\n` with `\n` before parsing
- /* istanbul ignore next */
- if (text.charAt(index - 1) === "\r" && atIndex === "\n") {
- return index - 2;
- }
- if (
- atIndex === "\n" ||
- atIndex === "\r" ||
- atIndex === "\u2028" ||
- atIndex === "\u2029"
- ) {
- return index - 1;
- }
- } else {
- // We already replace `\r\n` with `\n` before parsing
- /* istanbul ignore next */
- if (atIndex === "\r" && text.charAt(index + 1) === "\n") {
- return index + 2;
- }
- if (
- atIndex === "\n" ||
- atIndex === "\r" ||
- atIndex === "\u2028" ||
- atIndex === "\u2029"
- ) {
- return index + 1;
- }
- }
-
- return index;
-}
-
/**
* @param {string} text
* @param {number} index
@@ -235,26 +140,6 @@ function isNextLineEmpty(text, node, locEnd) {
return isNextLineEmptyAfterIndex(text, locEnd(node));
}
-/**
- * @param {string} text
- * @param {number} idx
- * @returns {number | false}
- */
-function getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, idx) {
- /** @type {number | false} */
- let oldIdx = null;
- /** @type {number | false} */
- let nextIdx = idx;
- while (nextIdx !== oldIdx) {
- oldIdx = nextIdx;
- nextIdx = skipSpaces(text, nextIdx);
- nextIdx = skipInlineComment(text, nextIdx);
- nextIdx = skipTrailingComment(text, nextIdx);
- nextIdx = skipNewline(text, nextIdx);
- }
- return nextIdx;
-}
-
/**
* @template N
* @param {string} text
@@ -517,23 +402,6 @@ function getMinNotPresentContinuousCount(str, target) {
return max + 1;
}
-/**
- * @param {string} text
- * @returns {number}
- */
-function getStringWidth(text) {
- if (!text) {
- return 0;
- }
-
- // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width`
- if (!notAsciiRegex.test(text)) {
- return text.length;
- }
-
- return stringWidth(text);
-}
-
function addCommentHelper(node, comment) {
const comments = node.comments || (node.comments = []);
comments.push(comment);
@@ -580,25 +448,6 @@ function isFrontMatterNode(node) {
return node && node.type === "front-matter";
}
-function getShebang(text) {
- if (!text.startsWith("#!")) {
- return "";
- }
- const index = text.indexOf("\n");
- if (index === -1) {
- return text;
- }
- return text.slice(0, index);
-}
-
-/**
- * @param {any} object
- * @returns {object is Array}
- */
-function isNonEmptyArray(object) {
- return Array.isArray(object) && object.length > 0;
-}
-
/**
* @param {string} description
* @returns {(node: any) => symbol}
@@ -664,7 +513,6 @@ module.exports = {
addDanglingComment,
addTrailingComment,
isFrontMatterNode,
- getShebang,
isNonEmptyArray,
createGroupIdMapper,
};
diff --git a/src/config/resolve-config-editorconfig.js b/src/config/resolve-config-editorconfig.js
index 06105b44d..e7db00d1c 100644
--- a/src/config/resolve-config-editorconfig.js
+++ b/src/config/resolve-config-editorconfig.js
@@ -3,8 +3,8 @@
const path = require("path");
const editorconfig = require("editorconfig");
-const mem = require("mem");
const editorConfigToPrettier = require("editorconfig-to-prettier");
+const { default: mem, memClear } = require("../../vendors/mem.js");
const findProjectRoot = require("./find-project-root.js");
const jsonStringifyMem = (fn) => mem(fn, { cacheKey: JSON.stringify });
@@ -36,8 +36,8 @@ function getLoadFunction(opts) {
}
function clearCache() {
- mem.clear(editorconfigSyncWithCache);
- mem.clear(editorconfigAsyncWithCache);
+ memClear(editorconfigSyncWithCache);
+ memClear(editorconfigAsyncWithCache);
}
module.exports = {
diff --git a/src/config/resolve-config.js b/src/config/resolve-config.js
index 5c0c09156..ad13eb263 100644
--- a/src/config/resolve-config.js
+++ b/src/config/resolve-config.js
@@ -2,12 +2,12 @@
const path = require("path");
const minimatch = require("minimatch");
-const mem = require("mem");
const thirdParty = require("../common/third-party.js");
const loadToml = require("../utils/load-toml.js");
const loadJson5 = require("../utils/load-json5.js");
const resolve = require("../common/resolve.js");
+const { default: mem, memClear } = require("../../vendors/mem.js");
const resolveEditorConfig = require("./resolve-config-editorconfig.js");
/**
@@ -127,7 +127,7 @@ const resolveConfig = (filePath, opts) => _resolveConfig(filePath, opts, false);
resolveConfig.sync = (filePath, opts) => _resolveConfig(filePath, opts, true);
function clearCache() {
- mem.clear(getExplorerMemoized);
+ memClear(getExplorerMemoized);
resolveEditorConfig.clearCache();
}
diff --git a/src/document/doc-printer.js b/src/document/doc-printer.js
index 4b36f4093..1a45f78c6 100644
--- a/src/document/doc-printer.js
+++ b/src/document/doc-printer.js
@@ -1,7 +1,8 @@
"use strict";
-const { getStringWidth, getLast } = require("../common/util.js");
const { convertEndOfLineToChars } = require("../common/end-of-line.js");
+const getLast = require("../utils/get-last.js");
+const getStringWidth = require("../utils/get-string-width.js");
const { fill, cursor, indent } = require("./doc-builders.js");
const { isConcat, getDocParts } = require("./doc-utils.js");
diff --git a/src/document/doc-utils.js b/src/document/doc-utils.js
index 015cf6ebb..7392976b1 100644
--- a/src/document/doc-utils.js
+++ b/src/document/doc-utils.js
@@ -1,4 +1,5 @@
"use strict";
+
const getLast = require("../utils/get-last.js");
const { literalline, join } = require("./doc-builders.js");
diff --git a/src/language-css/loc.js b/src/language-css/loc.js
index d5316d242..fb5088b7f 100644
--- a/src/language-css/loc.js
+++ b/src/language-css/loc.js
@@ -1,11 +1,9 @@
"use strict";
+const { skipEverythingButNewLine } = require("../utils/text/skip.js");
+const getLast = require("../utils/get-last.js");
+const isNonEmptyArray = require("../utils/is-non-empty-array.js");
const lineColumnToIndex = require("../utils/line-column-to-index.js");
-const {
- getLast,
- skipEverythingButNewLine,
- isNonEmptyArray,
-} = require("../common/util.js");
function calculateLocStart(node, text) {
// `postcss>=8`
diff --git a/src/language-css/parser-postcss.js b/src/language-css/parser-postcss.js
index 81e2ca4b4..470fb4dba 100644
--- a/src/language-css/parser-postcss.js
+++ b/src/language-css/parser-postcss.js
@@ -4,16 +4,14 @@ const createError = require("../common/parser-create-error.js");
const getLast = require("../utils/get-last.js");
const parseFrontMatter = require("../utils/front-matter/parse.js");
const { hasPragma } = require("./pragma.js");
-const {
- hasSCSSInterpolation,
- hasStringOrFunction,
- isSCSSNestedPropertyNode,
- isSCSSVariable,
- stringifyNode,
- isModuleRuleName,
-} = require("./utils.js");
const { locStart, locEnd } = require("./loc.js");
const { calculateLoc, replaceQuotesInInlineComments } = require("./loc.js");
+const hasSCSSInterpolation = require("./utils/has-SCSS-interpolation.js");
+const hasStringOrFunction = require("./utils/has-string-or-function.js");
+const isSCSSNestedPropertyNode = require("./utils/is-SCSS-nested-property-node.js");
+const isSCSSVariable = require("./utils/is-SCSS-variable.js");
+const stringifyNode = require("./utils/stringify-node.js");
+const isModuleRuleName = require("./utils/is-module-rule-name.js");
const getHighestAncestor = (node) => {
while (node.parent) {
diff --git a/src/language-css/printer-postcss.js b/src/language-css/printer-postcss.js
index 7bd497d8e..e2b134104 100644
--- a/src/language-css/printer-postcss.js
+++ b/src/language-css/printer-postcss.js
@@ -74,8 +74,10 @@ const {
isAtWordPlaceholderNode,
isConfigurationNode,
isParenGroupNode,
-} = require("./utils.js");
+} = require("./utils/index.js");
const { locStart, locEnd } = require("./loc.js");
+const isLessParser = require("./utils/is-less-parser.js");
+const isSCSS = require("./utils/is-scss.js");
function shouldPrintComma(options) {
return options.trailingComma === "es5" || options.trailingComma === "all";
@@ -501,8 +503,8 @@ function genericPrint(path, options, print) {
grandParent.type === "value-func" &&
grandParent.value === "selector"
) {
- const start = locStart(parentNode.open) + 1;
- const end = locEnd(parentNode.close) - 1;
+ const start = locEnd(parentNode.open) + 1;
+ const end = locStart(parentNode.close);
const selector = options.originalText.slice(start, end).trim();
return lastLineHasInlineComment(selector)
@@ -909,26 +911,40 @@ function genericPrint(path, options, print) {
indent([
softline,
join(
- [",", line],
- path.map((childPath) => {
- const node = childPath.getValue();
- const printed = print();
+ [line],
+ path.map((childPath, index) => {
+ const child = childPath.getValue();
+ const isLast = index === node.groups.length - 1;
+ const printed = [print(), isLast ? "" : ","];
// Key/Value pair in open paren already indented
if (
- isKeyValuePairNode(node) &&
- node.type === "value-comma_group" &&
- node.groups &&
- node.groups[0].type !== "value-paren_group" &&
- node.groups[2] &&
- node.groups[2].type === "value-paren_group"
+ isKeyValuePairNode(child) &&
+ child.type === "value-comma_group" &&
+ child.groups &&
+ child.groups[0].type !== "value-paren_group" &&
+ child.groups[2] &&
+ child.groups[2].type === "value-paren_group"
) {
- const parts = getDocParts(printed.contents.contents);
+ const parts = getDocParts(printed[0].contents.contents);
parts[1] = group(parts[1]);
-
return group(dedent(printed));
}
+ if (
+ !isLast &&
+ child.type === "value-comma_group" &&
+ child.groups &&
+ child.groups[0].type !== "value-paren_group" &&
+ isNextLineEmpty(
+ options.originalText,
+ getLast(child.groups),
+ locEnd
+ )
+ ) {
+ printed.push(hardline);
+ }
+
return printed;
}, "groups")
),
diff --git a/src/language-css/utils/has-SCSS-interpolation.js b/src/language-css/utils/has-SCSS-interpolation.js
new file mode 100644
index 000000000..0ef726e18
--- /dev/null
+++ b/src/language-css/utils/has-SCSS-interpolation.js
@@ -0,0 +1,22 @@
+"use strict";
+
+const isNonEmptyArray = require("../../utils/is-non-empty-array.js");
+
+function hasSCSSInterpolation(groupList) {
+ if (isNonEmptyArray(groupList)) {
+ for (let i = groupList.length - 1; i > 0; i--) {
+ // If we find `#{`, return true.
+ if (
+ groupList[i].type === "word" &&
+ groupList[i].value === "{" &&
+ groupList[i - 1].type === "word" &&
+ groupList[i - 1].value.endsWith("#")
+ ) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+module.exports = hasSCSSInterpolation;
diff --git a/src/language-css/utils/has-string-or-function.js b/src/language-css/utils/has-string-or-function.js
new file mode 100644
index 000000000..d11bde837
--- /dev/null
+++ b/src/language-css/utils/has-string-or-function.js
@@ -0,0 +1,16 @@
+"use strict";
+
+const isNonEmptyArray = require("../../utils/is-non-empty-array.js");
+
+function hasStringOrFunction(groupList) {
+ if (isNonEmptyArray(groupList)) {
+ for (let i = 0; i < groupList.length; i++) {
+ if (groupList[i].type === "string" || groupList[i].type === "func") {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+module.exports = hasStringOrFunction;
diff --git a/src/language-css/utils.js b/src/language-css/utils/index.js
similarity index 84%
rename from src/language-css/utils.js
rename to src/language-css/utils/index.js
index 726f306e2..8df1d0049 100644
--- a/src/language-css/utils.js
+++ b/src/language-css/utils/index.js
@@ -1,6 +1,5 @@
"use strict";
-const { isNonEmptyArray } = require("../common/util.js");
const colorAdjusterFunctions = new Set([
"red",
"green",
@@ -28,7 +27,6 @@ const colorAdjusterFunctions = new Set([
"hwb",
"hwba",
]);
-const moduleRuleNames = new Set(["import", "use", "forward"]);
function getAncestorCounter(path, typeOrTypes) {
const types = Array.isArray(typeOrTypes) ? typeOrTypes : [typeOrTypes];
@@ -60,43 +58,6 @@ function getPropOfDeclNode(path) {
);
}
-function hasSCSSInterpolation(groupList) {
- if (isNonEmptyArray(groupList)) {
- for (let i = groupList.length - 1; i > 0; i--) {
- // If we find `#{`, return true.
- if (
- groupList[i].type === "word" &&
- groupList[i].value === "{" &&
- groupList[i - 1].type === "word" &&
- groupList[i - 1].value.endsWith("#")
- ) {
- return true;
- }
- }
- }
- return false;
-}
-
-function hasStringOrFunction(groupList) {
- if (isNonEmptyArray(groupList)) {
- for (let i = 0; i < groupList.length; i++) {
- if (groupList[i].type === "string" || groupList[i].type === "func") {
- return true;
- }
- }
- }
- return false;
-}
-
-function isSCSSVariable(node, options) {
- return (
- options.parser === "scss" &&
- node &&
- node.type === "word" &&
- node.value.startsWith("$")
- );
-}
-
function isWideKeywords(value) {
return ["initial", "inherit", "unset", "revert"].includes(
value.toLowerCase()
@@ -265,6 +226,7 @@ function isSCSSControlDirectiveNode(node, options) {
);
}
+<<<<<<< HEAD:src/language-css/utils.js
function isSCSSNestedPropertyNode(node, options) {
if (options.parser !== "scss") {
return false;
@@ -282,6 +244,8 @@ function isSCSSNestedPropertyNode(node, options) {
.endsWith(":");
}
+=======
+>>>>>>> main:src/language-css/utils/index.js
function isDetachedRulesetCallNode(node) {
return node.raws && node.raws.params && /^\(\s*\)$/.test(node.raws.params);
}
@@ -444,35 +408,6 @@ function lastLineHasInlineComment(text) {
return /\/\//.test(text.split(/[\n\r]/).pop());
}
-function stringifyNode(node) {
- if (node.groups) {
- const open = node.open && node.open.value ? node.open.value : "";
- const groups = node.groups.reduce(
- (previousValue, currentValue, index) =>
- previousValue +
- stringifyNode(currentValue) +
- (node.groups[0].type === "comma_group" &&
- index !== node.groups.length - 1
- ? ","
- : ""),
- ""
- );
- const close = node.close && node.close.value ? node.close.value : "";
-
- return open + groups + close;
- }
-
- const before = node.raws && node.raws.before ? node.raws.before : "";
- const quote = node.raws && node.raws.quote ? node.raws.quote : "";
- const atword = node.type === "atword" ? "@" : "";
- const value = node.value ? node.value : "";
- const unit = node.unit ? node.unit : "";
- const group = node.group ? stringifyNode(node.group) : "";
- const after = node.raws && node.raws.after ? node.raws.after : "";
-
- return before + quote + atword + value + quote + unit + group + after;
-}
-
function isAtWordPlaceholderNode(node) {
return (
node &&
@@ -481,10 +416,6 @@ function isAtWordPlaceholderNode(node) {
);
}
-function isModuleRuleName(name) {
- return moduleRuleNames.has(name);
-}
-
function isConfigurationNode(node, parentNode) {
if (
!node.open ||
@@ -523,8 +454,6 @@ module.exports = {
getAncestorCounter,
getAncestorNode,
getPropOfDeclNode,
- hasSCSSInterpolation,
- hasStringOrFunction,
maybeToLowerCase,
insideValueFunctionNode,
insideICSSRuleNode,
@@ -532,7 +461,6 @@ module.exports = {
insideURLFunctionInImportAtRuleNode,
isKeyframeAtRuleKeywords,
isWideKeywords,
- isSCSSVariable,
isLastNode,
isSCSSControlDirectiveNode,
isDetachedRulesetDeclarationNode,
@@ -551,7 +479,6 @@ module.exports = {
hasComposesNode,
hasParensAroundNode,
hasEmptyRawBefore,
- isSCSSNestedPropertyNode,
isDetachedRulesetCallNode,
isTemplatePlaceholderNode,
isTemplatePropNode,
@@ -569,9 +496,7 @@ module.exports = {
isMediaAndSupportsKeywords,
isColorAdjusterFuncNode,
lastLineHasInlineComment,
- stringifyNode,
isAtWordPlaceholderNode,
- isModuleRuleName,
isConfigurationNode,
isParenGroupNode,
};
diff --git a/src/language-css/utils/is-SCSS-nested-property-node.js b/src/language-css/utils/is-SCSS-nested-property-node.js
new file mode 100644
index 000000000..c1bd11af1
--- /dev/null
+++ b/src/language-css/utils/is-SCSS-nested-property-node.js
@@ -0,0 +1,16 @@
+"use strict";
+
+function isSCSSNestedPropertyNode(node) {
+ /* istanbul ignore next */
+ if (!node.selector) {
+ return false;
+ }
+
+ return node.selector
+ .replace(/\/\*.*?\*\//, "")
+ .replace(/\/\/.*\n/, "")
+ .trim()
+ .endsWith(":");
+}
+
+module.exports = isSCSSNestedPropertyNode;
diff --git a/src/language-css/utils/is-SCSS-variable.js b/src/language-css/utils/is-SCSS-variable.js
new file mode 100644
index 000000000..9529028a5
--- /dev/null
+++ b/src/language-css/utils/is-SCSS-variable.js
@@ -0,0 +1,7 @@
+"use strict";
+
+function isSCSSVariable(node) {
+ return Boolean(node && node.type === "word" && node.value.startsWith("$"));
+}
+
+module.exports = isSCSSVariable;
diff --git a/src/language-css/utils/is-module-rule-name.js b/src/language-css/utils/is-module-rule-name.js
new file mode 100644
index 000000000..8ee9c47d8
--- /dev/null
+++ b/src/language-css/utils/is-module-rule-name.js
@@ -0,0 +1,9 @@
+"use strict";
+
+const moduleRuleNames = new Set(["import", "use", "forward"]);
+
+function isModuleRuleName(name) {
+ return moduleRuleNames.has(name);
+}
+
+module.exports = isModuleRuleName;
diff --git a/src/language-css/utils/stringify-node.js b/src/language-css/utils/stringify-node.js
new file mode 100644
index 000000000..f0fe3747f
--- /dev/null
+++ b/src/language-css/utils/stringify-node.js
@@ -0,0 +1,32 @@
+"use strict";
+
+function stringifyNode(node) {
+ if (node.groups) {
+ const open = node.open && node.open.value ? node.open.value : "";
+ const groups = node.groups.reduce(
+ (previousValue, currentValue, index) =>
+ previousValue +
+ stringifyNode(currentValue) +
+ (node.groups[0].type === "comma_group" &&
+ index !== node.groups.length - 1
+ ? ","
+ : ""),
+ ""
+ );
+ const close = node.close && node.close.value ? node.close.value : "";
+
+ return open + groups + close;
+ }
+
+ const before = node.raws && node.raws.before ? node.raws.before : "";
+ const quote = node.raws && node.raws.quote ? node.raws.quote : "";
+ const atword = node.type === "atword" ? "@" : "";
+ const value = node.value ? node.value : "";
+ const unit = node.unit ? node.unit : "";
+ const group = node.group ? stringifyNode(node.group) : "";
+ const after = node.raws && node.raws.after ? node.raws.after : "";
+
+ return before + quote + atword + value + quote + unit + group + after;
+}
+
+module.exports = stringifyNode;
diff --git a/src/language-html/embed.js b/src/language-html/embed.js
index c247dd1fc..ef83e6364 100644
--- a/src/language-html/embed.js
+++ b/src/language-html/embed.js
@@ -28,10 +28,10 @@ const {
isVueSlotAttribute,
isVueSfcBindingsAttribute,
getTextValueParts,
-} = require("./utils.js");
+} = require("./utils/index.js");
const getNodeContent = require("./get-node-content.js");
-function printEmbeddedAttributeValue(node, originalTextToDoc, options) {
+function printEmbeddedAttributeValue(node, htmlTextToDoc, options) {
const isKeyMatched = (patterns) =>
new RegExp(patterns.join("|")).test(node.fullName);
const getValue = () => unescapeQuoteEntities(node.value);
@@ -67,11 +67,11 @@ function printEmbeddedAttributeValue(node, originalTextToDoc, options) {
const printMaybeHug = (doc) => (shouldHug ? printHug(doc) : printExpand(doc));
const attributeTextToDoc = (code, opts) =>
- originalTextToDoc(
- code,
- { __onHtmlBindingRoot, __embeddedInHtml: true, ...opts },
- { stripTrailingHardline: true }
- );
+ htmlTextToDoc(code, {
+ __onHtmlBindingRoot,
+ __embeddedInHtml: true,
+ ...opts,
+ });
if (
node.fullName === "srcset" &&
diff --git a/src/language-html/parser-html.js b/src/language-html/parser-html.js
index dd5c1e968..b438eaa35 100644
--- a/src/language-html/parser-html.js
+++ b/src/language-html/parser-html.js
@@ -9,11 +9,9 @@ const parseFrontMatter = require("../utils/front-matter/parse.js");
const getLast = require("../utils/get-last.js");
const createError = require("../common/parser-create-error.js");
const { inferParserByLanguage } = require("../common/util.js");
-const {
- HTML_ELEMENT_ATTRIBUTES,
- HTML_TAGS,
- isUnknownNamespace,
-} = require("./utils.js");
+const HTML_TAGS = require("./utils/html-tag-names.js");
+const HTML_ELEMENT_ATTRIBUTES = require("./utils/html-elements-attributes.js");
+const isUnknownNamespace = require("./utils/is-unknown-namespace.js");
const { hasPragma } = require("./pragma.js");
const { Node } = require("./ast.js");
const { parseIeConditionalComment } = require("./conditional-comment.js");
diff --git a/src/language-html/print-preprocess.js b/src/language-html/print-preprocess.js
index a9c01d006..0add77b63 100644
--- a/src/language-html/print-preprocess.js
+++ b/src/language-html/print-preprocess.js
@@ -14,7 +14,7 @@ const {
isLeadingSpaceSensitiveNode,
isTrailingSpaceSensitiveNode,
isWhitespaceSensitiveNode,
-} = require("./utils.js");
+} = require("./utils/index.js");
const PREPROCESS_PIPELINE = [
removeIgnorableFirstLf,
diff --git a/src/language-html/print/children.js b/src/language-html/print/children.js
index 02d97a54a..ee8d36e15 100644
--- a/src/language-html/print/children.js
+++ b/src/language-html/print/children.js
@@ -11,7 +11,7 @@ const {
isTextLikeNode,
hasPrettierIgnore,
preferHardlineAsLeadingSpaces,
-} = require("../utils.js");
+} = require("../utils/index.js");
const {
printOpeningTagPrefix,
needsToBorrowNextOpeningTagStartMarker,
diff --git a/src/language-html/print/element.js b/src/language-html/print/element.js
index 98f63c05a..a00d4e3f5 100644
--- a/src/language-html/print/element.js
+++ b/src/language-html/print/element.js
@@ -20,7 +20,7 @@ const {
isVueCustomBlock,
countParents,
forceBreakContent,
-} = require("../utils.js");
+} = require("../utils/index.js");
const {
printOpeningTagPrefix,
printOpeningTag,
diff --git a/src/language-html/print/tag.js b/src/language-html/print/tag.js
index 63d982137..7d97ec0fd 100644
--- a/src/language-html/print/tag.js
+++ b/src/language-html/print/tag.js
@@ -17,7 +17,7 @@ const {
isPreLikeNode,
hasPrettierIgnore,
shouldPreserveContent,
-} = require("../utils.js");
+} = require("../utils/index.js");
function printClosingTag(node, options) {
return [
diff --git a/src/language-html/printer-html.js b/src/language-html/printer-html.js
index 2bb142548..67301b657 100644
--- a/src/language-html/printer-html.js
+++ b/src/language-html/printer-html.js
@@ -13,7 +13,7 @@ const {
countChars,
unescapeQuoteEntities,
getTextValueParts,
-} = require("./utils.js");
+} = require("./utils/index.js");
const preprocess = require("./print-preprocess.js");
const { insertPragma } = require("./pragma.js");
const { locStart, locEnd } = require("./loc.js");
diff --git a/src/language-html/syntax-vue.js b/src/language-html/syntax-vue.js
index 4bad8ceb3..d26e89c99 100644
--- a/src/language-html/syntax-vue.js
+++ b/src/language-html/syntax-vue.js
@@ -40,8 +40,13 @@ function parseVueFor(value) {
if (!inMatch) {
return;
}
+
const res = {};
res.for = inMatch[3].trim();
+ if (!res.for) {
+ return;
+ }
+
const alias = inMatch[1].trim().replace(stripParensRE, "");
const iteratorMatch = alias.match(forIteratorRE);
if (iteratorMatch) {
@@ -54,10 +59,18 @@ function parseVueFor(value) {
res.alias = alias;
}
+ const left = [res.alias, res.iterator1, res.iterator2];
+ if (
+ left.some(
+ (part, index) =>
+ !part && (index === 0 || left.slice(index + 1).some(Boolean))
+ )
+ ) {
+ return;
+ }
+
return {
- left: `${[res.alias, res.iterator1, res.iterator2]
- .filter(Boolean)
- .join(",")}`,
+ left: left.filter(Boolean).join(","),
operator: inMatch[2],
right: res.for,
};
diff --git a/src/language-html/utils/array-to-map.js b/src/language-html/utils/array-to-map.js
new file mode 100644
index 000000000..7326daba6
--- /dev/null
+++ b/src/language-html/utils/array-to-map.js
@@ -0,0 +1,11 @@
+"use strict";
+
+function arrayToMap(array) {
+ const map = Object.create(null);
+ for (const value of array) {
+ map[value] = true;
+ }
+ return map;
+}
+
+module.exports = arrayToMap;
diff --git a/src/language-html/utils/html-elements-attributes.js b/src/language-html/utils/html-elements-attributes.js
new file mode 100644
index 000000000..c62a07632
--- /dev/null
+++ b/src/language-html/utils/html-elements-attributes.js
@@ -0,0 +1,9 @@
+"use strict";
+
+const htmlElementAttributes = require("html-element-attributes");
+const mapObject = require("./map-object.js");
+const arrayToMap = require("./array-to-map.js");
+
+const HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes, arrayToMap);
+
+module.exports = HTML_ELEMENT_ATTRIBUTES;
diff --git a/src/language-html/utils/html-tag-names.js b/src/language-html/utils/html-tag-names.js
new file mode 100644
index 000000000..286e4e23b
--- /dev/null
+++ b/src/language-html/utils/html-tag-names.js
@@ -0,0 +1,8 @@
+"use strict";
+
+const htmlTagNames = require("html-tag-names");
+const arrayToMap = require("./array-to-map.js");
+
+const HTML_TAGS = arrayToMap(htmlTagNames);
+
+module.exports = HTML_TAGS;
diff --git a/src/language-html/utils.js b/src/language-html/utils/index.js
similarity index 94%
rename from src/language-html/utils.js
rename to src/language-html/utils/index.js
index 4696285d5..18b46cedf 100644
--- a/src/language-html/utils.js
+++ b/src/language-html/utils/index.js
@@ -1,28 +1,24 @@
"use strict";
/**
- * @typedef {import("../common/ast-path")} AstPath
+ * @typedef {import("../../common/ast-path")} AstPath
*/
-const htmlTagNames = require("html-tag-names");
-const htmlElementAttributes = require("html-element-attributes");
const {
inferParserByLanguage,
isFrontMatterNode,
-} = require("../common/util.js");
+} = require("../../common/util.js");
const {
builders: { line, hardline, join },
utils: { getDocParts, replaceTextEndOfLine },
-} = require("../document/index.js");
+} = require("../../document/index.js");
const {
CSS_DISPLAY_TAGS,
CSS_DISPLAY_DEFAULT,
CSS_WHITE_SPACE_TAGS,
CSS_WHITE_SPACE_DEFAULT,
-} = require("./constants.evaluate.js");
-
-const HTML_TAGS = arrayToMap(htmlTagNames);
-const HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes, arrayToMap);
+} = require("../constants.evaluate.js");
+const isUnknownNamespace = require("./is-unknown-namespace.js");
// https://infra.spec.whatwg.org/#ascii-whitespace
const HTML_WHITESPACE = new Set(["\t", "\n", "\f", "\r", " "]);
@@ -47,22 +43,6 @@ const getLeadingAndTrailingHtmlWhitespace = (string) => {
};
const hasHtmlWhitespace = (string) => /[\t\n\f\r ]/.test(string);
-function arrayToMap(array) {
- const map = Object.create(null);
- for (const value of array) {
- map[value] = true;
- }
- return map;
-}
-
-function mapObject(object, fn) {
- const newObject = Object.create(null);
- for (const [key, value] of Object.entries(object)) {
- newObject[key] = fn(value, key);
- }
- return newObject;
-}
-
function shouldPreserveContent(node, options) {
// unterminated node in ie conditional comment
// e.g.
@@ -539,14 +519,6 @@ function getNodeCssStyleDisplay(node, options) {
}
}
-function isUnknownNamespace(node) {
- return (
- node.type === "element" &&
- !node.hasExplicitNamespace &&
- !["html", "svg"].includes(node.namespace)
- );
-}
-
function getNodeCssStyleWhiteSpace(node) {
return (
(node.type === "element" &&
@@ -667,8 +639,6 @@ function getTextValueParts(node, value = node.value) {
}
module.exports = {
- HTML_ELEMENT_ATTRIBUTES,
- HTML_TAGS,
htmlTrim,
htmlTrimPreserveIndentation,
hasHtmlWhitespace,
diff --git a/src/language-html/utils/is-unknown-namespace.js b/src/language-html/utils/is-unknown-namespace.js
new file mode 100644
index 000000000..594df3445
--- /dev/null
+++ b/src/language-html/utils/is-unknown-namespace.js
@@ -0,0 +1,11 @@
+"use strict";
+
+function isUnknownNamespace(node) {
+ return (
+ node.type === "element" &&
+ !node.hasExplicitNamespace &&
+ !["html", "svg"].includes(node.namespace)
+ );
+}
+
+module.exports = isUnknownNamespace;
diff --git a/src/language-html/utils/map-object.js b/src/language-html/utils/map-object.js
new file mode 100644
index 000000000..030b9870a
--- /dev/null
+++ b/src/language-html/utils/map-object.js
@@ -0,0 +1,11 @@
+"use strict";
+
+function mapObject(object, fn) {
+ const newObject = Object.create(null);
+ for (const [key, value] of Object.entries(object)) {
+ newObject[key] = fn(value, key);
+ }
+ return newObject;
+}
+
+module.exports = mapObject;
diff --git a/src/language-js/clean.js b/src/language-js/clean.js
index 00d13a482..fa706ef35 100644
--- a/src/language-js/clean.js
+++ b/src/language-js/clean.js
@@ -1,6 +1,6 @@
"use strict";
-const { isBlockComment } = require("./utils.js");
+const isBlockComment = require("./utils/is-block-comment.js");
const ignoredProperties = new Set([
"range",
diff --git a/src/language-js/comments.js b/src/language-js/comments.js
index f908647ac..483563adc 100644
--- a/src/language-js/comments.js
+++ b/src/language-js/comments.js
@@ -13,7 +13,6 @@ const {
isNonEmptyArray,
} = require("../common/util.js");
const {
- isBlockComment,
getFunctionParameters,
isPrettierIgnoreComment,
isJsxNode,
@@ -25,11 +24,13 @@ const {
isCallExpression,
isMemberExpression,
isObjectProperty,
+ isLineComment,
getComments,
CommentCheckFlags,
markerForIfWithoutBlockAndSameLineComment,
-} = require("./utils.js");
+} = require("./utils/index.js");
const { locStart, locEnd } = require("./loc.js");
+const isBlockComment = require("./utils/is-block-comment.js");
/**
* @typedef {import("./types/estree").Node} Node
@@ -68,6 +69,7 @@ function handleOwnLineComment(context) {
handleAssignmentPatternComments,
handleMethodNameComments,
handleLabeledStatementComments,
+ handleBreakAndContinueStatementComments,
].some((fn) => fn(context));
}
@@ -91,6 +93,8 @@ function handleEndOfLineComment(context) {
handleOnlyComments,
handleTypeAliasComments,
handleVariableDeclaratorComments,
+ handleBreakAndContinueStatementComments,
+ handleSwitchDefaultCaseComments,
].some((fn) => fn(context));
}
@@ -423,6 +427,17 @@ function handleClassComments({
// Don't add leading comments to `implements`, `extends`, `mixins` to
// avoid printing the comment after the keyword.
if (followingNode) {
+ if (
+ enclosingNode.superClass &&
+ followingNode === enclosingNode.superClass &&
+ precedingNode &&
+ (precedingNode === enclosingNode.id ||
+ precedingNode === enclosingNode.typeParameters)
+ ) {
+ addTrailingComment(precedingNode, comment);
+ return true;
+ }
+
for (const prop of ["implements", "extends", "mixins"]) {
if (enclosingNode[prop] && followingNode === enclosingNode[prop][0]) {
if (
@@ -455,6 +470,7 @@ function handleMethodNameComments({
if (
enclosingNode &&
precedingNode &&
+ getNextNonSpaceNonCommentCharacter(text, comment, locEnd) === "(" &&
// "MethodDefinition" is handled in getCommentChildNodes
(enclosingNode.type === "Property" ||
enclosingNode.type === "TSDeclareMethod" ||
@@ -895,6 +911,28 @@ function handleTSMappedTypeComments({
return false;
}
+function handleSwitchDefaultCaseComments({
+ comment,
+ enclosingNode,
+ followingNode,
+}) {
+ if (
+ !enclosingNode ||
+ enclosingNode.type !== "SwitchCase" ||
+ enclosingNode.test
+ ) {
+ return false;
+ }
+
+ if (followingNode.type === "BlockStatement" && isLineComment(comment)) {
+ addBlockStatementFirstComment(followingNode, comment);
+ } else {
+ addDanglingComment(enclosingNode, comment);
+ }
+
+ return true;
+}
+
/**
* @param {Node} node
* @returns {boolean}
@@ -931,6 +969,7 @@ function getCommentChildNodes(node, options) {
if (
(options.parser === "typescript" ||
options.parser === "flow" ||
+ options.parser === "acorn" ||
options.parser === "espree" ||
options.parser === "meriyah" ||
options.parser === "__babel_estree") &&
diff --git a/src/language-js/embed.js b/src/language-js/embed.js
index 23dfc2c7f..8703ad928 100644
--- a/src/language-js/embed.js
+++ b/src/language-js/embed.js
@@ -4,7 +4,7 @@ const {
hasComment,
CommentCheckFlags,
isObjectProperty,
-} = require("./utils.js");
+} = require("./utils/index.js");
const formatMarkdown = require("./embed/markdown.js");
const formatCss = require("./embed/css.js");
const formatGraphql = require("./embed/graphql.js");
diff --git a/src/language-js/index.js b/src/language-js/index.js
index ad2c2f0d2..407b49a6f 100644
--- a/src/language-js/index.js
+++ b/src/language-js/index.js
@@ -13,6 +13,7 @@ const languages = [
since: "0.0.0",
parsers: [
"babel",
+ "acorn",
"espree",
"meriyah",
"babel-flow",
diff --git a/src/language-js/loc.js b/src/language-js/loc.js
index 7c94dab01..15f07e8d9 100644
--- a/src/language-js/loc.js
+++ b/src/language-js/loc.js
@@ -1,6 +1,6 @@
"use strict";
-const { isNonEmptyArray } = require("../common/util.js");
+const isNonEmptyArray = require("../utils/is-non-empty-array.js");
/**
* @typedef {import("./types/estree").Node} Node
diff --git a/src/language-js/needs-parens.js b/src/language-js/needs-parens.js
index c4ca50ca9..0695e9731 100644
--- a/src/language-js/needs-parens.js
+++ b/src/language-js/needs-parens.js
@@ -1,6 +1,7 @@
"use strict";
const getLast = require("../utils/get-last.js");
+const isNonEmptyArray = require("../utils/is-non-empty-array.js");
const {
getFunctionParameters,
getLeftSidePathName,
@@ -14,7 +15,7 @@ const {
isCallExpression,
isMemberExpression,
isObjectProperty,
-} = require("./utils.js");
+} = require("./utils/index.js");
function needsParens(path, options) {
const parent = path.getParentNode();
@@ -95,7 +96,6 @@ function needsParens(path, options) {
node.type === "LogicalExpression" ||
node.type === "NewExpression" ||
node.type === "ObjectExpression" ||
- node.type === "ParenthesizedExpression" ||
node.type === "SequenceExpression" ||
node.type === "TaggedTemplateExpression" ||
node.type === "UnaryExpression" ||
@@ -668,6 +668,10 @@ function needsParens(path, options) {
}
case "ClassExpression":
+ if (isNonEmptyArray(node.decorators)) {
+ return true;
+ }
+
switch (parent.type) {
case "NewExpression":
return name === "callee";
diff --git a/src/language-js/parse/acorn-and-espree.js b/src/language-js/parse/acorn-and-espree.js
new file mode 100644
index 000000000..6c5f505fd
--- /dev/null
+++ b/src/language-js/parse/acorn-and-espree.js
@@ -0,0 +1,11 @@
+"use strict";
+
+const acorn = require("./acorn.js");
+const espree = require("./espree.js");
+
+module.exports = {
+ parsers: {
+ acorn,
+ espree,
+ },
+};
diff --git a/src/language-js/parse/acorn.js b/src/language-js/parse/acorn.js
new file mode 100644
index 000000000..900454ba8
--- /dev/null
+++ b/src/language-js/parse/acorn.js
@@ -0,0 +1,81 @@
+"use strict";
+
+const createError = require("../../common/parser-create-error.js");
+const tryCombinations = require("../../utils/try-combinations.js");
+const createParser = require("./utils/create-parser.js");
+const postprocess = require("./postprocess/index.js");
+
+/** @type {import("acorn").Options} */
+const parseOptions = {
+ ecmaVersion: "latest",
+ sourceType: "module",
+ allowReserved: true,
+ allowReturnOutsideFunction: true,
+ allowImportExportEverywhere: true,
+ allowAwaitOutsideFunction: true,
+ allowSuperOutsideMethod: true,
+ allowHashBang: true,
+ locations: true,
+ ranges: true,
+};
+
+function createParseError(error) {
+ const { message, loc } = error;
+
+ /* istanbul ignore next */
+ if (!loc) {
+ return error;
+ }
+
+ const { line, column } = loc;
+
+ return createError(message.replace(/ \(\d+:\d+\)$/, ""), {
+ start: { line, column: column + 1 },
+ });
+}
+
+let parser;
+const getParser = () => {
+ if (!parser) {
+ const { Parser: AcornParser } = require("acorn");
+ const acornJsx = require("acorn-jsx");
+ parser = AcornParser.extend(acornJsx());
+ }
+ return parser;
+};
+
+function parseWithOptions(text, sourceType) {
+ const parser = getParser();
+
+ const comments = [];
+ const tokens = [];
+
+ /** @type {any} */
+ const ast = parser.parse(text, {
+ ...parseOptions,
+ sourceType,
+ onComment: comments,
+ onToken: tokens,
+ });
+ ast.comments = comments;
+ ast.tokens = tokens;
+
+ return ast;
+}
+
+function parse(text, parsers, options = {}) {
+ const { result: ast, error: moduleParseError } = tryCombinations(
+ () => parseWithOptions(text, /* sourceType */ "module"),
+ () => parseWithOptions(text, /* sourceType */ "script")
+ );
+
+ if (!ast) {
+ // throw the error for `module` parsing
+ throw createParseError(moduleParseError);
+ }
+
+ options.originalText = text;
+ return postprocess(ast, options);
+}
+
+module.exports = createParser(parse);
diff --git a/src/language-js/parse/babel.js b/src/language-js/parse/babel.js
index 1b2492fe7..5f3e92d64 100644
--- a/src/language-js/parse/babel.js
+++ b/src/language-js/parse/babel.js
@@ -1,10 +1,8 @@
"use strict";
const tryCombinations = require("../../utils/try-combinations.js");
-const {
- getNextNonSpaceNonCommentCharacterIndexWithStartIndex,
- getShebang,
-} = require("../../common/util.js");
+const getShebang = require("../utils/get-shebang.js");
+const getNextNonSpaceNonCommentCharacterIndexWithStartIndex = require("../../utils/text/get-next-non-space-non-comment-character-index-with-start-index.js");
const createParser = require("./utils/create-parser.js");
const createBabelParseError = require("./utils/create-babel-parse-error.js");
const postprocess = require("./postprocess/index.js");
@@ -39,6 +37,7 @@ const parseOptions = {
"decimal",
"moduleBlocks",
"asyncDoExpressions",
+ "regexpUnicodeSets",
],
tokens: true,
ranges: true,
diff --git a/src/language-js/parse/espree.js b/src/language-js/parse/espree.js
index d3b95793c..d9b03572b 100644
--- a/src/language-js/parse/espree.js
+++ b/src/language-js/parse/espree.js
@@ -50,8 +50,4 @@ function parse(originalText, parsers, options = {}) {
return postprocess(ast, options);
}
-module.exports = {
- parsers: {
- espree: createParser(parse),
- },
-};
+module.exports = createParser(parse);
diff --git a/src/language-js/parse/flow.js b/src/language-js/parse/flow.js
index c43218b29..43ed092c0 100644
--- a/src/language-js/parse/flow.js
+++ b/src/language-js/parse/flow.js
@@ -5,7 +5,8 @@ const createParser = require("./utils/create-parser.js");
const replaceHashbang = require("./utils/replace-hashbang.js");
const postprocess = require("./postprocess/index.js");
-// https://github.com/facebook/flow/tree/master/packages/flow-parser#options
+// https://github.com/facebook/flow/tree/main/packages/flow-parser#options
+// Keep this sync with `/scripts/sync-flow-test.js`
const parseOptions = {
// `all_comments` (boolean, default `true`) - include a list of all comments from the whole program
// all_comments: true,
@@ -13,23 +14,15 @@ const parseOptions = {
comments: false,
// `enums` (boolean, default `false`) - enable parsing of Flow enums
enums: true,
- // `esproposal_class_instance_fields` (boolean, default `false`) - enable parsing of class instance fields
- esproposal_class_instance_fields: true,
- // `esproposal_class_static_fields` (boolean, default `false`) - enable parsing of class static fields
- esproposal_class_static_fields: true,
// `esproposal_decorators` (boolean, default `false`) - enable parsing of decorators
esproposal_decorators: true,
// `esproposal_export_star_as` (boolean, default `false`) - enable parsing of `export * as` syntax
esproposal_export_star_as: true,
- // `esproposal_nullish_coalescing` (boolean, default `false`) - enable parsing of nullish coalescing (`??`)
- esproposal_nullish_coalescing: true,
- // `esproposal_optional_chaining` (boolean, default `false`) - enable parsing of optional chaining (`?.`)
- esproposal_optional_chaining: true,
// `types` (boolean, default `true`) - enable parsing of Flow types
// types: true,
// `use_strict` (boolean, default `false`) - treat the file as strict, without needing a "use strict" directive
// use_strict: false,
- // Not documented
+ // `tokens` (boolean, default `false`) - include a list of all parsed tokens in a top-level `tokens` property
tokens: true,
};
diff --git a/src/language-js/parse/json.js b/src/language-js/parse/json.js
index bae06d5be..e69e3796b 100644
--- a/src/language-js/parse/json.js
+++ b/src/language-js/parse/json.js
@@ -1,6 +1,6 @@
"use strict";
-const { isNonEmptyArray } = require("../../common/util.js");
+const isNonEmptyArray = require("../../utils/is-non-empty-array.js");
const createError = require("../../common/parser-create-error.js");
const createParser = require("./utils/create-parser.js");
const createBabelParseError = require("./utils/create-babel-parse-error.js");
diff --git a/src/language-js/parse/parsers.js b/src/language-js/parse/parsers.js
index 0d06399d1..eef5cddeb 100644
--- a/src/language-js/parse/parsers.js
+++ b/src/language-js/parse/parsers.js
@@ -53,9 +53,13 @@ module.exports = {
get __ng_directive() {
return require("./angular.js").parsers.__ng_directive;
},
+ // JS - acorn
+ get acorn() {
+ return require("./acorn-and-espree.js").parsers.acorn;
+ },
// JS - espree
get espree() {
- return require("./espree.js").parsers.espree;
+ return require("./acorn-and-espree.js").parsers.espree;
},
// JS - meriyah
get meriyah() {
diff --git a/src/language-js/parse/postprocess/index.js b/src/language-js/parse/postprocess/index.js
index 97c543a38..cbd197dc8 100644
--- a/src/language-js/parse/postprocess/index.js
+++ b/src/language-js/parse/postprocess/index.js
@@ -1,9 +1,9 @@
"use strict";
-const { getLast } = require("../../../common/util.js");
const { locStart, locEnd } = require("../../loc.js");
-const { isTypeCastComment } = require("../../comments.js");
-const { isTsKeywordType } = require("../../utils.js");
+const isTsKeywordType = require("../../utils/is-ts-keyword-type.js");
+const isTypeCastComment = require("../../utils/is-type-cast-comment.js");
+const getLast = require("../../../utils/get-last.js");
const visitNode = require("./visitNode.js");
const { throwErrorForInvalidNodes } = require("./typescript.js");
@@ -20,6 +20,7 @@ function postprocess(ast, options) {
if (
options.parser !== "typescript" &&
options.parser !== "flow" &&
+ options.parser !== "acorn" &&
options.parser !== "espree" &&
options.parser !== "meriyah"
) {
@@ -114,6 +115,29 @@ function postprocess(ast, options) {
case "TopicReference":
options.__isUsingHackPipeline = true;
break;
+ // TODO: Remove this when https://github.com/meriyah/meriyah/issues/200 get fixed
+ case "ExportAllDeclaration": {
+ const { exported } = node;
+ if (
+ options.parser === "meriyah" &&
+ exported &&
+ exported.type === "Identifier"
+ ) {
+ const raw = options.originalText.slice(
+ locStart(exported),
+ locEnd(exported)
+ );
+ if (raw.startsWith('"') || raw.startsWith("'")) {
+ node.exported = {
+ ...node.exported,
+ type: "Literal",
+ value: node.exported.name,
+ raw,
+ };
+ }
+ }
+ break;
+ }
}
});
@@ -134,8 +158,8 @@ function postprocess(ast, options) {
}
}
-// This is a workaround to transform `ChainExpression` from `espree`, `meriyah`,
-// and `typescript` into `babel` shape AST, we should do the opposite,
+// This is a workaround to transform `ChainExpression` from `acorn`, `espree`,
+// `meriyah`, and `typescript` into `babel` shape AST, we should do the opposite,
// since `ChainExpression` is the standard `estree` AST for `optional chaining`
// https://github.com/estree/estree/blob/master/es2020.md
function transformChainExpression(node) {
diff --git a/src/language-js/parse/postprocess/typescript.js b/src/language-js/parse/postprocess/typescript.js
index a90422a73..329280a70 100644
--- a/src/language-js/parse/postprocess/typescript.js
+++ b/src/language-js/parse/postprocess/typescript.js
@@ -63,7 +63,8 @@ function throwErrorForInvalidAbstractProperty(tsNode, esTreeNode) {
function throwErrorForInvalidNodes(ast, options) {
const { esTreeNodeToTSNodeMap, tsNodeToESTreeNodeMap } =
options.tsParseResult;
- ast = visitNode(ast, (node) => {
+
+ visitNode(ast, (node) => {
const tsNode = esTreeNodeToTSNodeMap.get(node);
if (!tsNode) {
return;
diff --git a/src/language-js/pragma.js b/src/language-js/pragma.js
index c243fe5c6..0cef020fc 100644
--- a/src/language-js/pragma.js
+++ b/src/language-js/pragma.js
@@ -1,8 +1,8 @@
"use strict";
const { parseWithComments, strip, extract, print } = require("jest-docblock");
-const { getShebang } = require("../common/util.js");
const { normalizeEndOfLine } = require("../common/end-of-line.js");
+const getShebang = require("./utils/get-shebang.js");
function parseDocBlock(text) {
const shebang = getShebang(text);
diff --git a/src/language-js/print/angular.js b/src/language-js/print/angular.js
index 9474eb55d..005692b0a 100644
--- a/src/language-js/print/angular.js
+++ b/src/language-js/print/angular.js
@@ -3,7 +3,7 @@
const {
builders: { join, line, group },
} = require("../../document/index.js");
-const { hasNode, hasComment, getComments } = require("../utils.js");
+const { hasNode, hasComment, getComments } = require("../utils/index.js");
const { printBinaryishExpression } = require("./binaryish.js");
/** @typedef {import("../../common/ast-path")} AstPath */
diff --git a/src/language-js/print/array.js b/src/language-js/print/array.js
index 632ea7b67..551f675da 100644
--- a/src/language-js/print/array.js
+++ b/src/language-js/print/array.js
@@ -12,7 +12,7 @@ const {
isNextLineEmpty,
isNumericLiteral,
isSignedNumericLiteral,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locStart } = require("../loc.js");
const { printOptionalToken, printTypeAnnotation } = require("./misc.js");
diff --git a/src/language-js/print/assignment.js b/src/language-js/print/assignment.js
index a448e5169..1cb8bc81c 100644
--- a/src/language-js/print/assignment.js
+++ b/src/language-js/print/assignment.js
@@ -18,7 +18,7 @@ const {
hasComment,
isSignedNumericLiteral,
isObjectProperty,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { shouldInlineLogicalExpression } = require("./binaryish.js");
const { printCallExpression } = require("./call-expression.js");
diff --git a/src/language-js/print/binaryish.js b/src/language-js/print/binaryish.js
index 1b71976c6..813a76931 100644
--- a/src/language-js/print/binaryish.js
+++ b/src/language-js/print/binaryish.js
@@ -26,7 +26,7 @@ const {
isMemberExpression,
isObjectProperty,
isEnabledHackPipeline,
-} = require("../utils.js");
+} = require("../utils/index.js");
/** @typedef {import("../../document").Doc} Doc */
diff --git a/src/language-js/print/block.js b/src/language-js/print/block.js
index af3445cd2..0e5bc02d1 100644
--- a/src/language-js/print/block.js
+++ b/src/language-js/print/block.js
@@ -9,7 +9,7 @@ const {
hasComment,
CommentCheckFlags,
isNextLineEmpty,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { printHardlineAfterHeritage } = require("./class.js");
const { printBody } = require("./statement.js");
diff --git a/src/language-js/print/call-arguments.js b/src/language-js/print/call-arguments.js
index e99cdf8d2..187521a04 100644
--- a/src/language-js/print/call-arguments.js
+++ b/src/language-js/print/call-arguments.js
@@ -16,7 +16,7 @@ const {
isCallExpression,
isStringLiteral,
isObjectProperty,
-} = require("../utils.js");
+} = require("../utils/index.js");
const {
builders: {
diff --git a/src/language-js/print/call-expression.js b/src/language-js/print/call-expression.js
index 071291ee8..bbc586439 100644
--- a/src/language-js/print/call-expression.js
+++ b/src/language-js/print/call-expression.js
@@ -13,7 +13,7 @@ const {
isTemplateOnItsOwnLine,
isTestCall,
iterateCallArgumentsPath,
-} = require("../utils.js");
+} = require("../utils/index.js");
const printMemberChain = require("./member-chain.js");
const printCallArguments = require("./call-arguments.js");
const {
diff --git a/src/language-js/print/class.js b/src/language-js/print/class.js
index 66ad25052..88644595e 100644
--- a/src/language-js/print/class.js
+++ b/src/language-js/print/class.js
@@ -11,7 +11,7 @@ const {
const {
builders: { join, line, hardline, softline, group, indent, ifBreak },
} = require("../../document/index.js");
-const { hasComment, CommentCheckFlags } = require("../utils.js");
+const { hasComment, CommentCheckFlags } = require("../utils/index.js");
const { getTypeParametersGroupId } = require("./type-parameters.js");
const { printMethod } = require("./function.js");
const { printOptionalToken, printTypeAnnotation } = require("./misc.js");
@@ -37,6 +37,8 @@ function printClass(path, options, print) {
// If there is only on extends and there are not comments
const groupMode =
(node.id && hasComment(node.id, CommentCheckFlags.Trailing)) ||
+ (node.typeParameters &&
+ hasComment(node.typeParameters, CommentCheckFlags.Trailing)) ||
(node.superClass && hasComment(node.superClass)) ||
isNonEmptyArray(node.extends) || // DeclareClass
isNonEmptyArray(node.mixins) ||
@@ -53,12 +55,11 @@ function printClass(path, options, print) {
if (node.superClass) {
const printed = [
- "extends ",
printSuperClass(path, options, print),
print("superTypeParameters"),
];
const printedWithComments = path.call(
- (superClass) => printComments(superClass, printed, options),
+ (superClass) => ["extends ", printComments(superClass, printed, options)],
"superClass"
);
if (groupMode) {
diff --git a/src/language-js/print/comment.js b/src/language-js/print/comment.js
index c94c6427f..a43c10453 100644
--- a/src/language-js/print/comment.js
+++ b/src/language-js/print/comment.js
@@ -6,8 +6,9 @@ const {
utils: { replaceTextEndOfLine },
} = require("../../document/index.js");
-const { isLineComment, isBlockComment } = require("../utils.js");
+const { isLineComment } = require("../utils/index.js");
const { locStart, locEnd } = require("../loc.js");
+const isBlockComment = require("../utils/is-block-comment.js");
function printComment(commentPath, options) {
const comment = commentPath.getValue();
diff --git a/src/language-js/print/decorators.js b/src/language-js/print/decorators.js
index 393cc38b3..2b679b4d5 100644
--- a/src/language-js/print/decorators.js
+++ b/src/language-js/print/decorators.js
@@ -5,7 +5,7 @@ const {
builders: { line, hardline, join, breakParent, group },
} = require("../../document/index.js");
const { locStart, locEnd } = require("../loc.js");
-const { getParentExportDeclaration } = require("../utils.js");
+const { getParentExportDeclaration } = require("../utils/index.js");
function printClassMemberDecorators(path, options, print) {
const node = path.getValue();
diff --git a/src/language-js/print/flow.js b/src/language-js/print/flow.js
index e80466530..47ffce034 100644
--- a/src/language-js/print/flow.js
+++ b/src/language-js/print/flow.js
@@ -14,7 +14,7 @@ const {
isGetterOrSetter,
rawText,
shouldPrintComma,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locStart, locEnd } = require("../loc.js");
const { printClass } = require("./class.js");
const {
diff --git a/src/language-js/print/function-parameters.js b/src/language-js/print/function-parameters.js
index 1d9a29a16..12f0af2d7 100644
--- a/src/language-js/print/function-parameters.js
+++ b/src/language-js/print/function-parameters.js
@@ -18,7 +18,7 @@ const {
shouldPrintComma,
hasComment,
isNextLineEmpty,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locEnd } = require("../loc.js");
const { ArgExpansionBailout } = require("../../common/errors.js");
const { printFunctionTypeParameters } = require("./misc.js");
diff --git a/src/language-js/print/function.js b/src/language-js/print/function.js
index 8cca12406..8263a11f0 100644
--- a/src/language-js/print/function.js
+++ b/src/language-js/print/function.js
@@ -43,7 +43,7 @@ const {
getCallArguments,
hasNakedLeftSide,
getLeftSide,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locEnd } = require("../loc.js");
const {
printFunctionParameters,
diff --git a/src/language-js/print/interface.js b/src/language-js/print/interface.js
index 9b422e4b7..3bcaa5394 100644
--- a/src/language-js/print/interface.js
+++ b/src/language-js/print/interface.js
@@ -4,7 +4,11 @@ const { isNonEmptyArray } = require("../../common/util.js");
const {
builders: { join, line, group, indent, ifBreak },
} = require("../../document/index.js");
-const { hasComment, identity, CommentCheckFlags } = require("../utils.js");
+const {
+ hasComment,
+ identity,
+ CommentCheckFlags,
+} = require("../utils/index.js");
const { getTypeParametersGroupId } = require("./type-parameters.js");
const { printTypeScriptModifiers } = require("./misc.js");
diff --git a/src/language-js/print/jsx.js b/src/language-js/print/jsx.js
index 42fcc570f..cb307e43e 100644
--- a/src/language-js/print/jsx.js
+++ b/src/language-js/print/jsx.js
@@ -31,7 +31,7 @@ const {
hasComment,
CommentCheckFlags,
hasNodeIgnoreComment,
-} = require("../utils.js");
+} = require("../utils/index.js");
const pathNeedsParens = require("../needs-parens.js");
const { willPrintOwnComments } = require("../comments.js");
@@ -502,24 +502,25 @@ function printJsxAttribute(path, options, print) {
function printJsxExpressionContainer(path, options, print) {
const node = path.getValue();
- const parent = path.getParentNode(0);
- const shouldInline =
- node.expression.type === "JSXEmptyExpression" ||
- (!hasComment(node.expression) &&
- (node.expression.type === "ArrayExpression" ||
- node.expression.type === "ObjectExpression" ||
- node.expression.type === "ArrowFunctionExpression" ||
- isCallExpression(node.expression) ||
- node.expression.type === "FunctionExpression" ||
- node.expression.type === "TemplateLiteral" ||
- node.expression.type === "TaggedTemplateExpression" ||
- node.expression.type === "DoExpression" ||
+ const shouldInline = (node, parent) =>
+ node.type === "JSXEmptyExpression" ||
+ (!hasComment(node) &&
+ (node.type === "ArrayExpression" ||
+ node.type === "ObjectExpression" ||
+ node.type === "ArrowFunctionExpression" ||
+ (node.type === "AwaitExpression" &&
+ (shouldInline(node.argument, node) ||
+ node.argument.type === "JSXElement")) ||
+ isCallExpression(node) ||
+ node.type === "FunctionExpression" ||
+ node.type === "TemplateLiteral" ||
+ node.type === "TaggedTemplateExpression" ||
+ node.type === "DoExpression" ||
(isJsxNode(parent) &&
- (node.expression.type === "ConditionalExpression" ||
- isBinaryish(node.expression)))));
+ (node.type === "ConditionalExpression" || isBinaryish(node)))));
- if (shouldInline) {
+ if (shouldInline(node.expression, path.getParentNode(0))) {
return group(["{", print("expression"), lineSuffixBoundary, "}"]);
}
diff --git a/src/language-js/print/member-chain.js b/src/language-js/print/member-chain.js
index 3a3d761bc..984b31cbc 100644
--- a/src/language-js/print/member-chain.js
+++ b/src/language-js/print/member-chain.js
@@ -18,7 +18,7 @@ const {
hasComment,
CommentCheckFlags,
isNextLineEmpty,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locEnd } = require("../loc.js");
const {
diff --git a/src/language-js/print/member.js b/src/language-js/print/member.js
index b594f332c..ddbdd8615 100644
--- a/src/language-js/print/member.js
+++ b/src/language-js/print/member.js
@@ -7,7 +7,7 @@ const {
isNumericLiteral,
isMemberExpression,
isCallExpression,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { printOptionalToken } = require("./misc.js");
function printMemberExpression(path, options, print) {
diff --git a/src/language-js/print/misc.js b/src/language-js/print/misc.js
index b40d076a2..66616e8dd 100644
--- a/src/language-js/print/misc.js
+++ b/src/language-js/print/misc.js
@@ -4,7 +4,7 @@ const { isNonEmptyArray } = require("../../common/util.js");
const {
builders: { indent, join, line },
} = require("../../document/index.js");
-const { isFlowAnnotationComment } = require("../utils.js");
+const { isFlowAnnotationComment } = require("../utils/index.js");
function printOptionalToken(path) {
const node = path.getValue();
diff --git a/src/language-js/print/module.js b/src/language-js/print/module.js
index 11282ada8..9637e0389 100644
--- a/src/language-js/print/module.js
+++ b/src/language-js/print/module.js
@@ -13,7 +13,7 @@ const {
needsHardlineAfterDanglingComment,
isStringLiteral,
rawText,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locStart, hasSameLoc } = require("../loc.js");
const {
hasDecoratorsBeforeExport,
diff --git a/src/language-js/print/object.js b/src/language-js/print/object.js
index bce115b51..f1c789a28 100644
--- a/src/language-js/print/object.js
+++ b/src/language-js/print/object.js
@@ -16,7 +16,7 @@ const {
getComments,
CommentCheckFlags,
isNextLineEmpty,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locStart, locEnd } = require("../loc.js");
const { printOptionalToken, printTypeAnnotation } = require("./misc.js");
diff --git a/src/language-js/print/property.js b/src/language-js/print/property.js
index ca85bd9d5..2a6b05c05 100644
--- a/src/language-js/print/property.js
+++ b/src/language-js/print/property.js
@@ -8,7 +8,7 @@ const {
isStringLiteral,
isStringPropSafeToUnquote,
rawText,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { printAssignment } = require("./assignment.js");
const needsQuoteProps = new WeakMap();
diff --git a/src/language-js/print/statement.js b/src/language-js/print/statement.js
index a5527760b..b8575744f 100644
--- a/src/language-js/print/statement.js
+++ b/src/language-js/print/statement.js
@@ -12,7 +12,7 @@ const {
hasComment,
CommentCheckFlags,
isNextLineEmpty,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { shouldPrintParamsWithoutParens } = require("./function.js");
/**
diff --git a/src/language-js/print/template-literal.js b/src/language-js/print/template-literal.js
index 02ca550ff..c7bd21195 100644
--- a/src/language-js/print/template-literal.js
+++ b/src/language-js/print/template-literal.js
@@ -22,7 +22,7 @@ const {
isSimpleTemplateLiteral,
hasComment,
isMemberExpression,
-} = require("../utils.js");
+} = require("../utils/index.js");
function printTemplateLiteral(path, print, options) {
const node = path.getValue();
diff --git a/src/language-js/print/ternary.js b/src/language-js/print/ternary.js
index aeb94dd1b..18c9c8d15 100644
--- a/src/language-js/print/ternary.js
+++ b/src/language-js/print/ternary.js
@@ -3,12 +3,12 @@
const { hasNewlineInRange } = require("../../common/util.js");
const {
isJsxNode,
- isBlockComment,
getComments,
isCallExpression,
isMemberExpression,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { locStart, locEnd } = require("../loc.js");
+const isBlockComment = require("../utils/is-block-comment.js");
const {
builders: {
line,
diff --git a/src/language-js/print/type-annotation.js b/src/language-js/print/type-annotation.js
index c1e2d6497..88f4c78cf 100644
--- a/src/language-js/print/type-annotation.js
+++ b/src/language-js/print/type-annotation.js
@@ -16,7 +16,7 @@ const {
hasLeadingOwnLineComment,
isObjectTypePropertyAFunction,
shouldPrintComma,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { printAssignment } = require("./assignment.js");
const {
printFunctionParameters,
diff --git a/src/language-js/print/type-parameters.js b/src/language-js/print/type-parameters.js
index c6a21670f..ba4c3c26d 100644
--- a/src/language-js/print/type-parameters.js
+++ b/src/language-js/print/type-parameters.js
@@ -12,7 +12,7 @@ const {
shouldPrintComma,
getFunctionParameters,
isObjectType,
-} = require("../utils.js");
+} = require("../utils/index.js");
const { createGroupIdMapper } = require("../../common/util.js");
const { shouldHugType } = require("./type-annotation.js");
const { isArrowFunctionVariableDeclarator } = require("./assignment.js");
diff --git a/src/language-js/print/typescript.js b/src/language-js/print/typescript.js
index 693ffcd8a..ea7c79f94 100644
--- a/src/language-js/print/typescript.js
+++ b/src/language-js/print/typescript.js
@@ -20,8 +20,8 @@ const {
shouldPrintComma,
isCallExpression,
isMemberExpression,
- isTsKeywordType,
-} = require("../utils.js");
+} = require("../utils/index.js");
+const isTsKeywordType = require("../utils/is-ts-keyword-type.js");
const { locStart, locEnd } = require("../loc.js");
const { printOptionalToken, printTypeScriptModifiers } = require("./misc.js");
diff --git a/src/language-js/printer-estree.js b/src/language-js/printer-estree.js
index db10d65ac..4321e9691 100644
--- a/src/language-js/printer-estree.js
+++ b/src/language-js/printer-estree.js
@@ -20,7 +20,6 @@ const {
hasComment,
CommentCheckFlags,
isTheOnlyJsxElementInMarkdown,
- isBlockComment,
isLineComment,
isNextLineEmpty,
needsHardlineAfterDanglingComment,
@@ -29,8 +28,9 @@ const {
isCallExpression,
isMemberExpression,
markerForIfWithoutBlockAndSameLineComment,
-} = require("./utils.js");
+} = require("./utils/index.js");
const { locStart, locEnd } = require("./loc.js");
+const isBlockComment = require("./utils/is-block-comment.js");
const {
printHtmlBinding,
@@ -106,19 +106,44 @@ function genericPrint(path, options, print, args) {
return printed;
}
+ let parts = [printed];
+
const printedDecorators = printDecorators(path, options, print);
- // Nodes with decorators can't have parentheses and don't need leading semicolons
+ const isClassExpressionWithDecorators =
+ node.type === "ClassExpression" && printedDecorators;
+ // Nodes (except `ClassExpression`) with decorators can't have parentheses and don't need leading semicolons
if (printedDecorators) {
- return group([...printedDecorators, printed]);
+ parts = [...printedDecorators, printed];
+
+ if (!isClassExpressionWithDecorators) {
+ return group(parts);
+ }
}
const needsParens = pathNeedsParens(path, options);
if (!needsParens) {
- return args && args.needsSemi ? [";", printed] : printed;
+ if (args && args.needsSemi) {
+ parts.unshift(";");
+ }
+
+ // In member-chain print, it add `label` to the doc, if we return array here it will be broken
+ if (parts.length === 1 && parts[0] === printed) {
+ return printed;
+ }
+
+ return parts;
}
- const parts = [args && args.needsSemi ? ";(" : "(", printed];
+ if (isClassExpressionWithDecorators) {
+ parts = [indent([line, ...parts])];
+ }
+
+ parts.unshift("(");
+
+ if (args && args.needsSemi) {
+ parts.unshift(";");
+ }
if (hasFlowShorthandAnnotationComment(node)) {
const [comment] = node.trailingComments;
@@ -126,6 +151,10 @@ function genericPrint(path, options, print, args) {
comment.printed = true;
}
+ if (isClassExpressionWithDecorators) {
+ parts.push(line);
+ }
+
parts.push(")");
return parts;
@@ -696,6 +725,10 @@ function printPathNoParens(path, options, print, args) {
parts.push("default:");
}
+ if (hasComment(node, CommentCheckFlags.Dangling)) {
+ parts.push(" ", printDanglingComments(path, options, true));
+ }
+
const consequent = node.consequent.filter(
(node) => node.type !== "EmptyStatement"
);
diff --git a/src/language-js/utils/get-shebang.js b/src/language-js/utils/get-shebang.js
new file mode 100644
index 000000000..540844dc7
--- /dev/null
+++ b/src/language-js/utils/get-shebang.js
@@ -0,0 +1,14 @@
+"use strict";
+
+function getShebang(text) {
+ if (!text.startsWith("#!")) {
+ return "";
+ }
+ const index = text.indexOf("\n");
+ if (index === -1) {
+ return text;
+ }
+ return text.slice(0, index);
+}
+
+module.exports = getShebang;
diff --git a/src/language-js/utils.js b/src/language-js/utils/index.js
similarity index 96%
rename from src/language-js/utils.js
rename to src/language-js/utils/index.js
index ccb5f4add..b005897e4 100644
--- a/src/language-js/utils.js
+++ b/src/language-js/utils/index.js
@@ -8,24 +8,25 @@ const {
isNonEmptyArray,
isNextLineEmptyAfterIndex,
getStringWidth,
-} = require("../common/util.js");
-const { locStart, locEnd, hasSameLocStart } = require("./loc.js");
+} = require("../../common/util.js");
+const { locStart, locEnd, hasSameLocStart } = require("../loc.js");
+const isBlockComment = require("./is-block-comment.js");
/**
- * @typedef {import("./types/estree").Node} Node
- * @typedef {import("./types/estree").TemplateLiteral} TemplateLiteral
- * @typedef {import("./types/estree").Comment} Comment
- * @typedef {import("./types/estree").MemberExpression} MemberExpression
- * @typedef {import("./types/estree").OptionalMemberExpression} OptionalMemberExpression
- * @typedef {import("./types/estree").CallExpression} CallExpression
- * @typedef {import("./types/estree").OptionalCallExpression} OptionalCallExpression
- * @typedef {import("./types/estree").Expression} Expression
- * @typedef {import("./types/estree").Property} Property
- * @typedef {import("./types/estree").ObjectTypeProperty} ObjectTypeProperty
- * @typedef {import("./types/estree").TaggedTemplateExpression} TaggedTemplateExpression
- * @typedef {import("./types/estree").Literal} Literal
+ * @typedef {import("../types/estree").Node} Node
+ * @typedef {import("../types/estree").TemplateLiteral} TemplateLiteral
+ * @typedef {import("../types/estree").Comment} Comment
+ * @typedef {import("../types/estree").MemberExpression} MemberExpression
+ * @typedef {import("../types/estree").OptionalMemberExpression} OptionalMemberExpression
+ * @typedef {import("../types/estree").CallExpression} CallExpression
+ * @typedef {import("../types/estree").OptionalCallExpression} OptionalCallExpression
+ * @typedef {import("../types/estree").Expression} Expression
+ * @typedef {import("../types/estree").Property} Property
+ * @typedef {import("../types/estree").ObjectTypeProperty} ObjectTypeProperty
+ * @typedef {import("../types/estree").TaggedTemplateExpression} TaggedTemplateExpression
+ * @typedef {import("../types/estree").Literal} Literal
*
- * @typedef {import("../common/ast-path")} AstPath
+ * @typedef {import("../../common/ast-path")} AstPath
*/
// We match any whitespace except line terminators because
@@ -155,19 +156,6 @@ function getLeftSidePathName(path, node) {
throw new Error("Unexpected node has no left side.");
}
-/**
- * @param {Comment} comment
- * @returns {boolean}
- */
-function isBlockComment(comment) {
- return (
- comment.type === "Block" ||
- comment.type === "CommentBlock" ||
- // `meriyah`
- comment.type === "MultiLine"
- );
-}
-
/**
* @param {Comment} comment
* @returns {boolean}
@@ -715,6 +703,7 @@ function isStringPropSafeToUnquote(node, options) {
(isSimpleNumber(node.key.value) &&
String(Number(node.key.value)) === node.key.value &&
(options.parser === "babel" ||
+ options.parser === "acorn" ||
options.parser === "espree" ||
options.parser === "meriyah" ||
options.parser === "__babel_estree")))
@@ -1322,10 +1311,6 @@ const markerForIfWithoutBlockAndSameLineComment = Symbol(
"ifWithoutBlockAndSameLineComment"
);
-function isTsKeywordType({ type }) {
- return type.startsWith("TS") && type.endsWith("Keyword");
-}
-
module.exports = {
getFunctionParameters,
iterateFunctionParametersPath,
@@ -1345,7 +1330,6 @@ module.exports = {
hasNodeIgnoreComment,
identity,
isBinaryish,
- isBlockComment,
isCallLikeExpression,
isEnabledHackPipeline,
isLineComment,
@@ -1391,5 +1375,4 @@ module.exports = {
getComments,
CommentCheckFlags,
markerForIfWithoutBlockAndSameLineComment,
- isTsKeywordType,
};
diff --git a/src/language-js/utils/is-block-comment.js b/src/language-js/utils/is-block-comment.js
new file mode 100644
index 000000000..00a1c122c
--- /dev/null
+++ b/src/language-js/utils/is-block-comment.js
@@ -0,0 +1,20 @@
+"use strict";
+
+/**
+ * @typedef {import("../types/estree").Comment} Comment
+ */
+
+/**
+ * @param {Comment} comment
+ * @returns {boolean}
+ */
+function isBlockComment(comment) {
+ return (
+ comment.type === "Block" ||
+ comment.type === "CommentBlock" ||
+ // `meriyah`
+ comment.type === "MultiLine"
+ );
+}
+
+module.exports = isBlockComment;
diff --git a/src/language-js/utils/is-ts-keyword-type.js b/src/language-js/utils/is-ts-keyword-type.js
new file mode 100644
index 000000000..24fe68a6a
--- /dev/null
+++ b/src/language-js/utils/is-ts-keyword-type.js
@@ -0,0 +1,9 @@
+"use strict";
+/**
+ * @returns {boolean}
+ */
+function isTsKeywordType({ type }) {
+ return type.startsWith("TS") && type.endsWith("Keyword");
+}
+
+module.exports = isTsKeywordType;
diff --git a/src/language-js/utils/is-type-cast-comment.js b/src/language-js/utils/is-type-cast-comment.js
new file mode 100644
index 000000000..4f0ad4dcf
--- /dev/null
+++ b/src/language-js/utils/is-type-cast-comment.js
@@ -0,0 +1,24 @@
+"use strict";
+
+const isBlockComment = require("./is-block-comment.js");
+
+/**
+ * @typedef {import("../types/estree").Comment} Comment
+ */
+
+/**
+ * @param {Comment} comment
+ * @returns {boolean}
+ */
+function isTypeCastComment(comment) {
+ return (
+ isBlockComment(comment) &&
+ comment.value[0] === "*" &&
+ // TypeScript expects the type to be enclosed in curly brackets, however
+ // Closure Compiler accepts types in parens and even without any delimiters at all.
+ // That's why we just search for "@type".
+ /@type\b/.test(comment.value)
+ );
+}
+
+module.exports = isTypeCastComment;
diff --git a/src/main/core-options.js b/src/main/core-options.js
index e8356a8c1..5992da931 100644
--- a/src/main/core-options.js
+++ b/src/main/core-options.js
@@ -129,6 +129,7 @@ const options = {
{ value: "babel-flow", since: "1.16.0", description: "Flow" },
{ value: "babel-ts", since: "2.0.0", description: "TypeScript" },
{ value: "typescript", since: "1.4.0", description: "TypeScript" },
+ { value: "acorn", since: "2.6.0", description: "JavaScript" },
{ value: "espree", since: "2.2.0", description: "JavaScript" },
{ value: "meriyah", since: "2.2.0", description: "JavaScript" },
{ value: "css", since: "1.7.1", description: "CSS" },
diff --git a/src/main/core.js b/src/main/core.js
index 63c40594a..07e40624f 100644
--- a/src/main/core.js
+++ b/src/main/core.js
@@ -1,6 +1,7 @@
"use strict";
-const diff = require("diff");
+// Use `diff/lib/diff/array.js` instead of `diff` to reduce bundle size
+const { diffArrays } = require("diff/lib/diff/array.js");
const {
printer: { printDocToString },
@@ -118,7 +119,7 @@ function coreFormat(originalText, opts, addAlignmentSize = 0) {
const newCursorNodeCharArray = [...newCursorNodeText];
- const cursorNodeDiff = diff.diffArrays(
+ const cursorNodeDiff = diffArrays(
oldCursorNodeCharArray,
newCursorNodeCharArray
);
diff --git a/src/main/options-normalizer.js b/src/main/options-normalizer.js
index 3240a083c..9dc55eeab 100644
--- a/src/main/options-normalizer.js
+++ b/src/main/options-normalizer.js
@@ -2,7 +2,6 @@
const vnopts = require("vnopts");
const leven = require("leven");
-const chalk = require("chalk");
const getLast = require("../utils/get-last.js");
const cliDescriptor = {
@@ -18,41 +17,48 @@ const cliDescriptor = {
: `${cliDescriptor.key(key)}=${value}`,
};
-class FlagSchema extends vnopts.ChoiceSchema {
- constructor({ name, flags }) {
- super({ name, choices: flags });
- this._flags = [...flags].sort();
- }
- preprocess(value, utils) {
- if (
- typeof value === "string" &&
- value.length > 0 &&
- !this._flags.includes(value)
- ) {
- const suggestion = this._flags.find((flag) => leven(flag, value) < 3);
- if (suggestion) {
- utils.logger.warn(
- [
- `Unknown flag ${chalk.yellow(utils.descriptor.value(value))},`,
- `did you mean ${chalk.blue(utils.descriptor.value(suggestion))}?`,
- ].join(" ")
- );
- return suggestion;
- }
+// To prevent `chalk` module from being included in the `standalone.js` bundle,
+// it will take that as an argument if needed.
+const getFlagSchema = (colorsModule) =>
+ class FlagSchema extends vnopts.ChoiceSchema {
+ constructor({ name, flags }) {
+ super({ name, choices: flags });
+ this._flags = [...flags].sort();
}
- return value;
- }
- expected() {
- return "a flag";
- }
-}
+ preprocess(value, utils) {
+ if (
+ typeof value === "string" &&
+ value.length > 0 &&
+ !this._flags.includes(value)
+ ) {
+ const suggestion = this._flags.find((flag) => leven(flag, value) < 3);
+ if (suggestion) {
+ utils.logger.warn(
+ [
+ `Unknown flag ${colorsModule.yellow(
+ utils.descriptor.value(value)
+ )},`,
+ `did you mean ${colorsModule.blue(
+ utils.descriptor.value(suggestion)
+ )}?`,
+ ].join(" ")
+ );
+ return suggestion;
+ }
+ }
+ return value;
+ }
+ expected() {
+ return "a flag";
+ }
+ };
let hasDeprecationWarned;
function normalizeOptions(
options,
optionInfos,
- { logger, isCLI = false, passThrough = false } = {}
+ { logger, isCLI = false, passThrough = false, colorsModule } = {}
) {
const unknown = !passThrough
? (key, value, options) => {
@@ -69,7 +75,7 @@ function normalizeOptions(
: (key, value) => ({ [key]: value });
const descriptor = isCLI ? cliDescriptor : vnopts.apiDescriptor;
- const schemas = optionInfosToSchemas(optionInfos, { isCLI });
+ const schemas = optionInfosToSchemas(optionInfos, { isCLI, colorsModule });
const normalizer = new vnopts.Normalizer(schemas, {
logger,
unknown,
@@ -91,7 +97,7 @@ function normalizeOptions(
return normalized;
}
-function optionInfosToSchemas(optionInfos, { isCLI }) {
+function optionInfosToSchemas(optionInfos, { isCLI, colorsModule }) {
const schemas = [];
if (isCLI) {
@@ -99,7 +105,9 @@ function optionInfosToSchemas(optionInfos, { isCLI }) {
}
for (const optionInfo of optionInfos) {
- schemas.push(optionInfoToSchema(optionInfo, { isCLI, optionInfos }));
+ schemas.push(
+ optionInfoToSchema(optionInfo, { isCLI, optionInfos, colorsModule })
+ );
if (optionInfo.alias && isCLI) {
schemas.push(
@@ -114,7 +122,7 @@ function optionInfosToSchemas(optionInfos, { isCLI }) {
return schemas;
}
-function optionInfoToSchema(optionInfo, { isCLI, optionInfos }) {
+function optionInfoToSchema(optionInfo, { isCLI, optionInfos, colorsModule }) {
let SchemaConstructor;
const parameters = { name: optionInfo.name };
const handlers = {};
@@ -146,7 +154,7 @@ function optionInfoToSchema(optionInfo, { isCLI, optionInfos }) {
SchemaConstructor = vnopts.BooleanSchema;
break;
case "flag":
- SchemaConstructor = FlagSchema;
+ SchemaConstructor = getFlagSchema(colorsModule);
parameters.flags = optionInfos.flatMap((optionInfo) =>
[
optionInfo.alias,
@@ -213,6 +221,11 @@ function normalizeApiOptions(options, optionInfos, opts) {
}
function normalizeCliOptions(options, optionInfos, opts) {
+ /* istanbul ignore next */
+ if (process.env.NODE_ENV !== "production" && !opts.colorsModule) {
+ throw new Error("'colorsModule' option is required.");
+ }
+
return normalizeOptions(options, optionInfos, { isCLI: true, ...opts });
}
diff --git a/src/main/options.js b/src/main/options.js
index e6fe2be29..27f21f7b7 100644
--- a/src/main/options.js
+++ b/src/main/options.js
@@ -1,8 +1,6 @@
"use strict";
-const fs = require("fs");
const path = require("path");
-const readlines = require("n-readlines");
const { UndefinedParserError } = require("../common/errors.js");
const { getSupportInfo } = require("../main/support.js");
const normalizer = require("./options-normalizer.js");
@@ -118,52 +116,6 @@ function getPlugin(options) {
return printerPlugin;
}
-function getInterpreter(filepath) {
- /* istanbul ignore next */
- if (typeof filepath !== "string") {
- return "";
- }
-
- let fd;
- try {
- fd = fs.openSync(filepath, "r");
- } catch {
- // istanbul ignore next
- return "";
- }
-
- try {
- const liner = new readlines(fd);
- const firstLine = liner.next().toString("utf8");
-
- // #!/bin/env node, #!/usr/bin/env node
- const m1 = firstLine.match(/^#!\/(?:usr\/)?bin\/env\s+(\S+)/);
- if (m1) {
- return m1[1];
- }
-
- // #!/bin/node, #!/usr/bin/node, #!/usr/local/bin/node
- const m2 = firstLine.match(/^#!\/(?:usr\/(?:local\/)?)?bin\/(\S+)/);
- if (m2) {
- return m2[1];
- }
- return "";
- } catch {
- // There are some weird cases where paths are missing, causing Jest
- // failures. It's unclear what these correspond to in the real world.
- /* istanbul ignore next */
- return "";
- } finally {
- try {
- // There are some weird cases where paths are missing, causing Jest
- // failures. It's unclear what these correspond to in the real world.
- fs.closeSync(fd);
- } catch {
- // nop
- }
- }
-}
-
function inferParser(filepath, plugins) {
const filename = path.basename(filepath).toLowerCase();
const languages = getSupportInfo({ plugins }).languages.filter(
@@ -183,7 +135,14 @@ function inferParser(filepath, plugins) {
language.filenames.some((name) => name.toLowerCase() === filename))
);
- if (!language && !filename.includes(".")) {
+ if (
+ process.env.PRETTIER_TARGET !== "universal" &&
+ !language &&
+ !filename.includes(".")
+ ) {
+ // `getInterpreter` requires file access, put `require()` in the `if` block,
+ // So we can easily remove this part during build
+ const getInterpreter = require("../utils/get-interpreter.js");
const interpreter = getInterpreter(filepath);
language = languages.find(
(language) =>
diff --git a/src/main/range-util.js b/src/main/range-util.js
index 0570a0bfb..ecb396ef1 100644
--- a/src/main/range-util.js
+++ b/src/main/range-util.js
@@ -169,6 +169,7 @@ function isSourceElement(opts, node, parentNode) {
case "babel-flow":
case "babel-ts":
case "typescript":
+ case "acorn":
case "espree":
case "meriyah":
case "__babel_estree":
diff --git a/src/utils/get-interpreter.js b/src/utils/get-interpreter.js
new file mode 100644
index 000000000..c67fe6324
--- /dev/null
+++ b/src/utils/get-interpreter.js
@@ -0,0 +1,52 @@
+"use strict";
+
+const fs = require("fs");
+const readlines = require("n-readlines");
+
+function getInterpreter(filepath) {
+ /* istanbul ignore next */
+ if (typeof filepath !== "string") {
+ return "";
+ }
+
+ let fd;
+ try {
+ fd = fs.openSync(filepath, "r");
+ } catch {
+ // istanbul ignore next
+ return "";
+ }
+
+ try {
+ const liner = new readlines(fd);
+ const firstLine = liner.next().toString("utf8");
+
+ // #!/bin/env node, #!/usr/bin/env node
+ const m1 = firstLine.match(/^#!\/(?:usr\/)?bin\/env\s+(\S+)/);
+ if (m1) {
+ return m1[1];
+ }
+
+ // #!/bin/node, #!/usr/bin/node, #!/usr/local/bin/node
+ const m2 = firstLine.match(/^#!\/(?:usr\/(?:local\/)?)?bin\/(\S+)/);
+ if (m2) {
+ return m2[1];
+ }
+ return "";
+ } catch {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ /* istanbul ignore next */
+ return "";
+ } finally {
+ try {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ fs.closeSync(fd);
+ } catch {
+ // nop
+ }
+ }
+}
+
+module.exports = getInterpreter;
diff --git a/src/utils/get-string-width.js b/src/utils/get-string-width.js
new file mode 100644
index 000000000..d96612d3d
--- /dev/null
+++ b/src/utils/get-string-width.js
@@ -0,0 +1,24 @@
+"use strict";
+
+const stringWidth = require("../../vendors/string-width.js").default;
+
+const notAsciiRegex = /[^\x20-\x7F]/;
+
+/**
+ * @param {string} text
+ * @returns {number}
+ */
+function getStringWidth(text) {
+ if (!text) {
+ return 0;
+ }
+
+ // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width`
+ if (!notAsciiRegex.test(text)) {
+ return text.length;
+ }
+
+ return stringWidth(text);
+}
+
+module.exports = getStringWidth;
diff --git a/src/utils/is-non-empty-array.js b/src/utils/is-non-empty-array.js
new file mode 100644
index 000000000..0456053bd
--- /dev/null
+++ b/src/utils/is-non-empty-array.js
@@ -0,0 +1,11 @@
+"use strict";
+
+/**
+ * @param {any} object
+ * @returns {object is Array}
+ */
+function isNonEmptyArray(object) {
+ return Array.isArray(object) && object.length > 0;
+}
+
+module.exports = isNonEmptyArray;
diff --git a/src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js b/src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js
new file mode 100644
index 000000000..237b629a9
--- /dev/null
+++ b/src/utils/text/get-next-non-space-non-comment-character-index-with-start-index.js
@@ -0,0 +1,28 @@
+"use strict";
+
+const skipInlineComment = require("./skip-inline-comment.js");
+const skipNewline = require("./skip-newline.js");
+const skipTrailingComment = require("./skip-trailing-comment.js");
+const { skipSpaces } = require("./skip.js");
+
+/**
+ * @param {string} text
+ * @param {number} idx
+ * @returns {number | false}
+ */
+function getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, idx) {
+ /** @type {number | false} */
+ let oldIdx = null;
+ /** @type {number | false} */
+ let nextIdx = idx;
+ while (nextIdx !== oldIdx) {
+ oldIdx = nextIdx;
+ nextIdx = skipSpaces(text, nextIdx);
+ nextIdx = skipInlineComment(text, nextIdx);
+ nextIdx = skipTrailingComment(text, nextIdx);
+ nextIdx = skipNewline(text, nextIdx);
+ }
+ return nextIdx;
+}
+
+module.exports = getNextNonSpaceNonCommentCharacterIndexWithStartIndex;
diff --git a/src/utils/text/skip-inline-comment.js b/src/utils/text/skip-inline-comment.js
new file mode 100644
index 000000000..1b47494d0
--- /dev/null
+++ b/src/utils/text/skip-inline-comment.js
@@ -0,0 +1,24 @@
+"use strict";
+
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+function skipInlineComment(text, index) {
+ /* istanbul ignore next */
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") {
+ for (let i = index + 2; i < text.length; ++i) {
+ if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") {
+ return i + 2;
+ }
+ }
+ }
+ return index;
+}
+
+module.exports = skipInlineComment;
diff --git a/src/utils/text/skip-newline.js b/src/utils/text/skip-newline.js
new file mode 100644
index 000000000..d1d674086
--- /dev/null
+++ b/src/utils/text/skip-newline.js
@@ -0,0 +1,54 @@
+"use strict";
+
+/** @typedef {import("./skip").SkipOptions} SkipOptions */
+
+// This one doesn't use the above helper function because it wants to
+// test \r\n in order and `skip` doesn't support ordering and we only
+// want to skip one newline. It's simple to implement.
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @param {SkipOptions=} opts
+ * @returns {number | false}
+ */
+function skipNewline(text, index, opts) {
+ const backwards = opts && opts.backwards;
+ if (index === false) {
+ return false;
+ }
+
+ const atIndex = text.charAt(index);
+ if (backwards) {
+ // We already replace `\r\n` with `\n` before parsing
+ /* istanbul ignore next */
+ if (text.charAt(index - 1) === "\r" && atIndex === "\n") {
+ return index - 2;
+ }
+ if (
+ atIndex === "\n" ||
+ atIndex === "\r" ||
+ atIndex === "\u2028" ||
+ atIndex === "\u2029"
+ ) {
+ return index - 1;
+ }
+ } else {
+ // We already replace `\r\n` with `\n` before parsing
+ /* istanbul ignore next */
+ if (atIndex === "\r" && text.charAt(index + 1) === "\n") {
+ return index + 2;
+ }
+ if (
+ atIndex === "\n" ||
+ atIndex === "\r" ||
+ atIndex === "\u2028" ||
+ atIndex === "\u2029"
+ ) {
+ return index + 1;
+ }
+ }
+
+ return index;
+}
+
+module.exports = skipNewline;
diff --git a/src/utils/text/skip-trailing-comment.js b/src/utils/text/skip-trailing-comment.js
new file mode 100644
index 000000000..13c74d057
--- /dev/null
+++ b/src/utils/text/skip-trailing-comment.js
@@ -0,0 +1,22 @@
+"use strict";
+
+const { skipEverythingButNewLine } = require("./skip.js");
+
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+function skipTrailingComment(text, index) {
+ /* istanbul ignore next */
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") {
+ return skipEverythingButNewLine(text, index);
+ }
+ return index;
+}
+
+module.exports = skipTrailingComment;
diff --git a/src/utils/text/skip.js b/src/utils/text/skip.js
new file mode 100644
index 000000000..0e37e474e
--- /dev/null
+++ b/src/utils/text/skip.js
@@ -0,0 +1,70 @@
+"use strict";
+
+/**
+ * @typedef {{backwards?: boolean}} SkipOptions
+ */
+
+/**
+ * @param {string | RegExp} chars
+ * @returns {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+function skip(chars) {
+ return (text, index, opts) => {
+ const backwards = opts && opts.backwards;
+
+ // Allow `skip` functions to be threaded together without having
+ // to check for failures (did someone say monads?).
+ /* istanbul ignore next */
+ if (index === false) {
+ return false;
+ }
+
+ const { length } = text;
+ let cursor = index;
+ while (cursor >= 0 && cursor < length) {
+ const c = text.charAt(cursor);
+ if (chars instanceof RegExp) {
+ if (!chars.test(c)) {
+ return cursor;
+ }
+ } else if (!chars.includes(c)) {
+ return cursor;
+ }
+
+ backwards ? cursor-- : cursor++;
+ }
+
+ if (cursor === -1 || cursor === length) {
+ // If we reached the beginning or end of the file, return the
+ // out-of-bounds cursor. It's up to the caller to handle this
+ // correctly. We don't want to indicate `false` though if it
+ // actually skipped valid characters.
+ return cursor;
+ }
+ return false;
+ };
+}
+
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+const skipWhitespace = skip(/\s/);
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+const skipSpaces = skip(" \t");
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+const skipToLineEnd = skip(",; \t");
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+const skipEverythingButNewLine = skip(/[^\n\r]/);
+
+module.exports = {
+ skipWhitespace,
+ skipSpaces,
+ skipToLineEnd,
+ skipEverythingButNewLine,
+};
diff --git a/tests/config/format-test.js b/tests/config/format-test.js
index 0b84df3e5..e8c17fe2d 100644
--- a/tests/config/format-test.js
+++ b/tests/config/format-test.js
@@ -41,6 +41,7 @@ const unstableTests = new Map(
["flow/no-semi/comments.js", (options) => options.semi === false],
"typescript/prettier-ignore/mapped-types.ts",
"js/comments/html-like/comment.js",
+ "js/for/continue-and-break-comment-without-blocks.js",
].map((fixture) => {
const [file, isUnstable = () => true] = Array.isArray(fixture)
? fixture
@@ -57,6 +58,7 @@ const espreeDisabledTests = new Set(
"comments-closure-typecast",
].map((directory) => path.join(__dirname, "../format/js", directory))
);
+const acornDisabledTests = espreeDisabledTests;
const meriyahDisabledTests = espreeDisabledTests;
const isUnstable = (filename, options) => {
@@ -189,6 +191,9 @@ function runSpec(fixtures, parsers, options) {
if (!parsers.includes("meriyah") && !meriyahDisabledTests.has(dirname)) {
allParsers.push("meriyah");
}
+ if (!parsers.includes("acorn") && !acornDisabledTests.has(dirname)) {
+ allParsers.push("acorn");
+ }
}
if (parsers.includes("babel") && !parsers.includes("__babel_estree")) {
diff --git a/tests/config/require-standalone.cjs b/tests/config/require-standalone.cjs
index a7ee4e6a5..215244d67 100644
--- a/tests/config/require-standalone.cjs
+++ b/tests/config/require-standalone.cjs
@@ -2,11 +2,11 @@
const fs = require("fs");
const vm = require("vm");
-const globby = require("globby");
+const fastGlob = require("fast-glob");
const sandbox = vm.createContext();
-const source = globby
+const source = fastGlob
.sync(["standalone.js", "parser-*.js"], {
cwd: process.env.PRETTIER_DIR,
absolute: true,
diff --git a/tests/config/utils/check-parsers.js b/tests/config/utils/check-parsers.js
index d8ba2cbaf..a950db5d4 100644
--- a/tests/config/utils/check-parsers.js
+++ b/tests/config/utils/check-parsers.js
@@ -51,11 +51,12 @@ const categoryParsers = new Map([
[
"js",
{
- parsers: ["babel", "meriyah", "espree"],
+ parsers: ["babel", "acorn", "espree", "meriyah"],
verifyParsers: [
"babel",
- "meriyah",
+ "acorn",
"espree",
+ "meriyah",
"flow",
"babel-flow",
"typescript",
diff --git a/tests/format/css/atrule/__snapshots__/jsfmt.spec.js.snap b/tests/format/css/atrule/__snapshots__/jsfmt.spec.js.snap
index c53fd593c..c4a944477 100644
--- a/tests/format/css/atrule/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/css/atrule/__snapshots__/jsfmt.spec.js.snap
@@ -1203,7 +1203,16 @@ h3
}
@each $element, $size in (h1: 20px, h2: 16px, h3: 14px) {
}
-@each $element, $size in (h1: 20px, h2: 16px, h3: 14px) {
+@each $element,
+ $size
+ in (
+ h1: 20px,
+
+ h2: 16px,
+
+ h3: 14px
+ )
+{
}
================================================================================
@@ -1917,7 +1926,13 @@ $args
@function func($arg, $arg1, $arg2: 10, $args...) {
@return "Func";
}
-@function func($arg, $arg1, $arg2: 10, $args...) {
+@function func(
+ $arg,
+ $arg1,
+ $arg2: 10,
+
+ $args...
+) {
@return "Func";
}
@function func(
@@ -2510,7 +2525,13 @@ border-color: $very-very-very-very-very-very-very-very-very-very-very-very-very-
@include mix(1px, 2px, $arg2: 10, 2px 4px 6px);
@include mix(1px, 2px, $arg2: 10, 2px 4px 6px);
@include mix(1px, 2px, $arg2: 10, 2px 4px 6px);
-@include mix(1px, 2px, $arg2: 10, 2px 4px 6px);
+@include mix(
+ 1px,
+ 2px,
+ $arg2: 10,
+
+ 2px 4px 6px
+);
@include mix(
$very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-arg:
1px,
@@ -3416,6 +3437,8 @@ $background
@mixin button-variant($foo: " ... ") {}
@mixin sexy-border($color, $width, $foo: (color: red)) {}
+@mixin selector($param: "value") {}
+
=====================================output=====================================
@mixin clearfix {
}
@@ -3446,7 +3469,13 @@ $background
}
@mixin mix($arg, $arg1, $arg2: 10, $args...) {
}
-@mixin mix($arg, $arg1, $arg2: 10, $args...) {
+@mixin mix(
+ $arg,
+ $arg1,
+ $arg2: 10,
+
+ $args...
+) {
}
@mixin mix(
$very-very-very-very-very-very-very-very-very-very-very-very-very-very-long-arg,
@@ -3479,6 +3508,9 @@ $background
@mixin sexy-border($color, $width, $foo: (color: red)) {
}
+@mixin selector($param: "value") {
+}
+
================================================================================
`;
diff --git a/tests/format/css/atrule/mixin.css b/tests/format/css/atrule/mixin.css
index 24c175e0b..0e7c610ea 100644
--- a/tests/format/css/atrule/mixin.css
+++ b/tests/format/css/atrule/mixin.css
@@ -105,3 +105,5 @@ $background
@mixin button-variant($foo: " ... ") {}
@mixin button-variant($foo: " ... ") {}
@mixin sexy-border($color, $width, $foo: (color: red)) {}
+
+@mixin selector($param: "value") {}
diff --git a/tests/format/css/parens/__snapshots__/jsfmt.spec.js.snap b/tests/format/css/parens/__snapshots__/jsfmt.spec.js.snap
index 2c6880867..7014d37dc 100644
--- a/tests/format/css/parens/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/css/parens/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,36 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`empty-lines.css format 1`] = `
+====================================options=====================================
+parsers: ["css"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+$colours: (
+ "text": $light-100,
+ "background-primary": $dark-300,
+
+
+
+
+
+
+ "background-secondary": $dark-200,
+ "background-tertiary": $dark-100
+);
+
+=====================================output=====================================
+$colours: (
+ "text": $light-100,
+ "background-primary": $dark-300,
+
+ "background-secondary": $dark-200,
+ "background-tertiary": $dark-100
+);
+
+================================================================================
+`;
+
exports[`parens.css format 1`] = `
====================================options=====================================
parsers: ["css"]
diff --git a/tests/format/css/parens/empty-lines.css b/tests/format/css/parens/empty-lines.css
new file mode 100644
index 000000000..46893d8b7
--- /dev/null
+++ b/tests/format/css/parens/empty-lines.css
@@ -0,0 +1,12 @@
+$colours: (
+ "text": $light-100,
+ "background-primary": $dark-300,
+
+
+
+
+
+
+ "background-secondary": $dark-200,
+ "background-tertiary": $dark-100
+);
diff --git a/tests/format/js/arrows-bind/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/arrows-bind/__snapshots__/jsfmt.spec.js.snap
index 6e78ef4d3..b025b057a 100644
--- a/tests/format/js/arrows-bind/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/arrows-bind/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`arrows-bind.js [acorn] format 1`] = `
+"Unexpected token (1:9)
+> 1 | a => ({}::b()\`\`[''].c++ && 0 ? 0 : 0);
+ | ^
+ 2 | (a => b)::c;
+ 3 | a::(b => c);
+ 4 |"
+`;
+
exports[`arrows-bind.js [espree] format 1`] = `
"Unexpected token : (1:9)
> 1 | a => ({}::b()\`\`[''].c++ && 0 ? 0 : 0);
diff --git a/tests/format/js/arrows-bind/jsfmt.spec.js b/tests/format/js/arrows-bind/jsfmt.spec.js
index 7cc47ec6a..0f3563b8d 100644
--- a/tests/format/js/arrows-bind/jsfmt.spec.js
+++ b/tests/format/js/arrows-bind/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(import.meta, ["babel"], { errors: { acorn: true, espree: true, meriyah: true } });
diff --git a/tests/format/js/arrows/newline-before-arrow/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/arrows/newline-before-arrow/__snapshots__/jsfmt.spec.js.snap
index cb22f4f14..336e5ebb9 100644
--- a/tests/format/js/arrows/newline-before-arrow/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/arrows/newline-before-arrow/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,13 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`newline-before-arrow.js [acorn] format 1`] = `
+"Unexpected token (2:1)
+ 1 | async x
+> 2 | => x
+ | ^
+ 3 |"
+`;
+
exports[`newline-before-arrow.js [espree] format 1`] = `
"Unexpected token => (2:1)
1 | async x
diff --git a/tests/format/js/arrows/newline-before-arrow/jsfmt.spec.js b/tests/format/js/arrows/newline-before-arrow/jsfmt.spec.js
index 620b8b4ec..c475eb6bd 100644
--- a/tests/format/js/arrows/newline-before-arrow/jsfmt.spec.js
+++ b/tests/format/js/arrows/newline-before-arrow/jsfmt.spec.js
@@ -1,5 +1,6 @@
run_spec(import.meta, ["babel"], {
errors: {
+ acorn: ["newline-before-arrow.js"],
espree: ["newline-before-arrow.js"],
meriyah: ["newline-before-arrow.js"],
},
diff --git a/tests/format/js/async-do-expressions/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/async-do-expressions/__snapshots__/jsfmt.spec.js.snap
index 1e44c20a3..020cd53d1 100644
--- a/tests/format/js/async-do-expressions/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/async-do-expressions/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`async-do-expressions.js [acorn] format 1`] = `
+"Unexpected token (1:7)
+> 1 | async do {
+ | ^
+ 2 | 1;
+ 3 | };
+ 4 |"
+`;
+
exports[`async-do-expressions.js [espree] format 1`] = `
"Unexpected token do (1:7)
> 1 | async do {
diff --git a/tests/format/js/async-do-expressions/jsfmt.spec.js b/tests/format/js/async-do-expressions/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/async-do-expressions/jsfmt.spec.js
+++ b/tests/format/js/async-do-expressions/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap
index 65b5d1388..fea551ccc 100644
--- a/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`async-do-expressions.js [acorn] format 1`] = `
+"Unexpected token (1:7)
+> 1 | async do { await requestAPI().json() };
+ | ^
+ 2 |"
+`;
+
exports[`async-do-expressions.js [espree] format 1`] = `
"Unexpected token do (1:7)
> 1 | async do { await requestAPI().json() };
@@ -431,6 +438,17 @@ class C {
================================================================================
`;
+exports[`decimal.js [acorn] format 1`] = `
+"Identifier directly after number (3:4)
+ 1 | // https://github.com/babel/babel/pull/11640
+ 2 |
+> 3 | 100m;
+ | ^
+ 4 | 9223372036854775807m;
+ 5 | 0.m;
+ 6 | 3.1415926535897932m;"
+`;
+
exports[`decimal.js [espree] format 1`] = `
"Identifier directly after number (3:4)
1 | // https://github.com/babel/babel/pull/11640
@@ -516,6 +534,17 @@ typeof 1m === "decimal128";
================================================================================
`;
+exports[`decorators.js [acorn] format 1`] = `
+"Unexpected character '@' (3:1)
+ 1 | // https://babeljs.io/docs/en/babel-plugin-proposal-decorators
+ 2 |
+> 3 | @annotation
+ | ^
+ 4 | class MyClass { }
+ 5 |
+ 6 | function annotation(target) {"
+`;
+
exports[`decorators.js [espree] format 1`] = `
"Unexpected character '@' (3:1)
1 | // https://babeljs.io/docs/en/babel-plugin-proposal-decorators
@@ -597,6 +626,17 @@ function enumerable(value) {
================================================================================
`;
+exports[`do-expressions.js [acorn] format 1`] = `
+"Unexpected token (3:9)
+ 1 | // https://babeljs.io/docs/en/babel-plugin-proposal-do-expressions
+ 2 |
+> 3 | let a = do {
+ | ^
+ 4 | if(x > 10) {
+ 5 | 'big';
+ 6 | } else {"
+`;
+
exports[`do-expressions.js [espree] format 1`] = `
"Unexpected token do (3:9)
1 | // https://babeljs.io/docs/en/babel-plugin-proposal-do-expressions
@@ -681,6 +721,15 @@ import(prettier).then((module) => console.log(module));
================================================================================
`;
+exports[`export-default-from.js [acorn] format 1`] = `
+"Unexpected token (4:8)
+ 2 |
+ 3 |
+> 4 | export v from 'mod';
+ | ^
+ 5 |"
+`;
+
exports[`export-default-from.js [espree] format 1`] = `
"Unexpected token v (4:8)
2 |
@@ -736,6 +785,15 @@ export * as ns from "mod";
================================================================================
`;
+exports[`flow.js [acorn] format 1`] = `
+"Unexpected token (3:17)
+ 1 | // https://babeljs.io/docs/en/babel-preset-flow
+ 2 |
+> 3 | function foo(one: any, two: number, three?): string {}
+ | ^
+ 4 |"
+`;
+
exports[`flow.js [espree] format 1`] = `
"Unexpected token : (3:17)
1 | // https://babeljs.io/docs/en/babel-preset-flow
@@ -772,6 +830,17 @@ function foo(one: any, two: number, three?): string {}
================================================================================
`;
+exports[`function-bind.js [acorn] format 1`] = `
+"Unexpected token (3:5)
+ 1 | // https://babeljs.io/docs/en/babel-plugin-proposal-function-bind
+ 2 |
+> 3 | obj::func
+ | ^
+ 4 | // is equivalent to:
+ 5 | func.bind(obj)
+ 6 |"
+`;
+
exports[`function-bind.js [espree] format 1`] = `
"Unexpected token : (3:5)
1 | // https://babeljs.io/docs/en/babel-plugin-proposal-function-bind
@@ -839,6 +908,17 @@ obj.func.call(obj, val);
================================================================================
`;
+exports[`function-sent.js [acorn] format 1`] = `
+"Unexpected token (4:33)
+ 2 |
+ 3 | function* generator() {
+> 4 | console.log(\\"Sent\\", function.sent);
+ | ^
+ 5 | console.log(\\"Yield\\", yield);
+ 6 | }
+ 7 |"
+`;
+
exports[`function-sent.js [espree] format 1`] = `
"Unexpected token . (4:33)
2 |
@@ -893,6 +973,13 @@ iterator.next(2); // Logs "Yield 2"
================================================================================
`;
+exports[`import-assertions-dynamic.js [acorn] format 1`] = `
+"Unexpected token (1:20)
+> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
+ | ^
+ 2 |"
+`;
+
exports[`import-assertions-dynamic.js [espree] format 1`] = `
"Unexpected token , (1:20)
> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
@@ -921,6 +1008,13 @@ import("./foo.json", { assert: { type: "json" } });
================================================================================
`;
+exports[`import-assertions-static.js [acorn] format 1`] = `
+"Unexpected token (1:31)
+> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\" };
+ | ^
+ 2 |"
+`;
+
exports[`import-assertions-static.js [espree] format 1`] = `
"Unexpected token assert (1:31)
> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\" };
@@ -1049,6 +1143,15 @@ obj.a.b &&= c;
================================================================================
`;
+exports[`module-blocks.js [acorn] format 1`] = `
+"Unexpected token (1:16)
+> 1 | let m = module {
+ | ^
+ 2 | export let m = 2;
+ 3 | export let n = 3;
+ 4 | };"
+`;
+
exports[`module-blocks.js [espree] format 1`] = `
"Unexpected token { (1:16)
> 1 | let m = module {
@@ -1420,6 +1523,17 @@ const ret = delete obj?.foo?.bar?.baz; // true
================================================================================
`;
+exports[`partial-application.js [acorn] format 1`] = `
+"Unexpected token (5:23)
+ 3 | function add(x, y) { return x + y; }
+ 4 |
+> 5 | const addOne = add(1, ?); // apply from the left
+ | ^
+ 6 | addOne(2); // 3
+ 7 |
+ 8 | const addTen = add(?, 10); // apply from the right"
+`;
+
exports[`partial-application.js [espree] format 1`] = `
"Unexpected token ? (5:23)
3 | function add(x, y) { return x + y; }
@@ -1496,6 +1610,17 @@ super.f(?); // partial application allowed for call on |SuperProperty|
================================================================================
`;
+exports[`pipeline-operator-fsharp.js [acorn] format 1`] = `
+"Unexpected token (5:4)
+ 3 |
+ 4 | promise
+> 5 | |> await
+ | ^
+ 6 | |> x => doubleSay(x, ', ')
+ 7 | |> capitalize
+ 8 | |> x => x + '!'"
+`;
+
exports[`pipeline-operator-fsharp.js [espree] format 1`] = `
"Unexpected token > (5:4)
3 |
@@ -1593,6 +1718,17 @@ let newScore = boundScore(0, 100, add(7, double(person.score)));
================================================================================
`;
+exports[`pipeline-operator-hack.js [acorn] format 1`] = `
+"Unexpected token (5:3)
+ 3 |
+ 4 | return list
+> 5 | |> take(prefix.length, %)
+ | ^
+ 6 | |> equals(%, prefix);
+ 7 |
+ 8 | // (The % token isn't final; it might instead be @ or ? or #.)"
+`;
+
exports[`pipeline-operator-hack.js [espree] format 1`] = `
"Unexpected token > (5:3)
3 |
@@ -1641,6 +1777,17 @@ return list |> take(prefix.length, %) |> equals(%, prefix);
================================================================================
`;
+exports[`pipeline-operator-minimal.js [acorn] format 1`] = `
+"Identifier 'result' has already been declared (7:5)
+ 5 | result //=> \\"Hello, hello!\\"
+ 6 |
+> 7 | let result = \\"hello\\"
+ | ^
+ 8 | |> doubleSay
+ 9 | |> capitalize
+ 10 | |> exclaim;"
+`;
+
exports[`pipeline-operator-minimal.js [espree] format 1`] = `
"Identifier 'result' has already been declared (7:5)
5 | result //=> \\"Hello, hello!\\"
@@ -1869,6 +2016,15 @@ class Counter extends HTMLElement {
================================================================================
`;
+exports[`record-tuple-record.js [acorn] format 1`] = `
+"Unexpected character '{' (1:18)
+> 1 | const record1 = #{
+ | ^
+ 2 | a: 1,
+ 3 | b: 2,
+ 4 | c: 3,"
+`;
+
exports[`record-tuple-record.js [espree] format 1`] = `
"Unexpected character '{' (1:18)
> 1 | const record1 = #{
@@ -1913,6 +2069,13 @@ const record2 = #{ ...record1, b: 5 };
================================================================================
`;
+exports[`record-tuple-tuple.js [acorn] format 1`] = `
+"Unexpected character '[' (1:17)
+> 1 | const tuple1 = #[1, 2, 3];
+ | ^
+ 2 |"
+`;
+
exports[`record-tuple-tuple.js [espree] format 1`] = `
"Unexpected character '[' (1:17)
> 1 | const tuple1 = #[1, 2, 3];
@@ -1941,6 +2104,52 @@ const tuple1 = #[1, 2, 3];
================================================================================
`;
+exports[`regex-v-flag.js [acorn] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/v;
+ | ^
+ 2 |"
+`;
+
+exports[`regex-v-flag.js [espree] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/v;
+ | ^
+ 2 |"
+`;
+
+exports[`regex-v-flag.js [meriyah] format 1`] = `
+"[1:3]: Unexpected regular expression flag (1:3)
+> 1 | /a/v;
+ | ^
+ 2 |"
+`;
+
+exports[`regex-v-flag.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "babel-ts", "babel-flow"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+/a/v;
+
+=====================================output=====================================
+/a/v;
+
+================================================================================
+`;
+
+exports[`throw-expressions.js [acorn] format 1`] = `
+"Unexpected token (3:23)
+ 1 | // https://babeljs.io/docs/en/babel-plugin-proposal-throw-expressions
+ 2 |
+> 3 | function test(param = throw new Error('required!')) {
+ | ^
+ 4 | const test = param === true || throw new Error('Falsy!');
+ 5 | }
+ 6 |"
+`;
+
exports[`throw-expressions.js [espree] format 1`] = `
"Unexpected token throw (3:23)
1 | // https://babeljs.io/docs/en/babel-plugin-proposal-throw-expressions
@@ -1985,6 +2194,15 @@ function test(param = throw new Error("required!")) {
================================================================================
`;
+exports[`typescript.js [acorn] format 1`] = `
+"Unexpected token (3:8)
+ 1 | // https://babeljs.io/docs/en/babel-preset-typescript
+ 2 |
+> 3 | const x: number = 0;
+ | ^
+ 4 |"
+`;
+
exports[`typescript.js [espree] format 1`] = `
"Unexpected token : (3:8)
1 | // https://babeljs.io/docs/en/babel-preset-typescript
@@ -2021,6 +2239,17 @@ const x: number = 0;
================================================================================
`;
+exports[`v8intrinsic.js [acorn] format 1`] = `
+"Unexpected token (3:1)
+ 1 | // https://github.com/babel/babel/pull/10148
+ 2 |
+> 3 | %DebugPrint(foo);
+ | ^
+ 4 |
+ 5 |
+ 6 | // Invalid code https://github.com/JLHwung/babel/blob/c1a3cbfd65e08b7013fd6f8c62add8cb10b4b169/packages/babel-parser/test/fixtures/v8intrinsic/_errors/in-bind-expression/options.json"
+`;
+
exports[`v8intrinsic.js [espree] format 1`] = `
"Unexpected token % (3:1)
1 | // https://github.com/babel/babel/pull/10148
diff --git a/tests/format/js/babel-plugins/jsfmt.spec.js b/tests/format/js/babel-plugins/jsfmt.spec.js
index 29d1999d7..32c175f67 100644
--- a/tests/format/js/babel-plugins/jsfmt.spec.js
+++ b/tests/format/js/babel-plugins/jsfmt.spec.js
@@ -3,6 +3,29 @@
run_spec(import.meta, ["babel", "babel-ts", "babel-flow"], {
errors: {
+ acorn: [
+ "decimal.js",
+ "decorators.js",
+ "do-expressions.js",
+ "export-default-from.js",
+ "flow.js",
+ "function-bind.js",
+ "function-sent.js",
+ "import-assertions-dynamic.js",
+ "import-assertions-static.js",
+ "partial-application.js",
+ "pipeline-operator-fsharp.js",
+ "pipeline-operator-minimal.js",
+ "pipeline-operator-hack.js",
+ "record-tuple-record.js",
+ "record-tuple-tuple.js",
+ "throw-expressions.js",
+ "typescript.js",
+ "v8intrinsic.js",
+ "module-blocks.js",
+ "async-do-expressions.js",
+ "regex-v-flag.js",
+ ],
espree: [
"decimal.js",
"decorators.js",
@@ -24,6 +47,7 @@ run_spec(import.meta, ["babel", "babel-ts", "babel-flow"], {
"v8intrinsic.js",
"module-blocks.js",
"async-do-expressions.js",
+ "regex-v-flag.js",
],
meriyah: [
"decimal.js",
@@ -49,6 +73,7 @@ run_spec(import.meta, ["babel", "babel-ts", "babel-flow"], {
"module-string-names.js",
"module-blocks.js",
"async-do-expressions.js",
+ "regex-v-flag.js",
],
},
});
diff --git a/tests/format/js/babel-plugins/regex-v-flag.js b/tests/format/js/babel-plugins/regex-v-flag.js
new file mode 100644
index 000000000..04ee6ccf7
--- /dev/null
+++ b/tests/format/js/babel-plugins/regex-v-flag.js
@@ -0,0 +1 @@
+/a/v;
diff --git a/tests/format/js/bind-expressions/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/bind-expressions/__snapshots__/jsfmt.spec.js.snap
index c5580b524..d05d09d70 100644
--- a/tests/format/js/bind-expressions/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/bind-expressions/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`await.js [acorn] format 1`] = `
+"Unexpected token (3:27)
+ 1 | const doBothThings = async () => {
+ 2 | const request = doAsyncThing();
+> 3 | return (await request)::doSyncThing();
+ | ^
+ 4 | };
+ 5 |"
+`;
+
exports[`await.js [espree] format 1`] = `
"Unexpected token : (3:27)
1 | const doBothThings = async () => {
@@ -20,6 +30,16 @@ exports[`await.js [meriyah] format 1`] = `
5 |"
`;
+exports[`await.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected token (3:27)
+ 1 | const doBothThings = async () => {
+ 2 | const request = doAsyncThing();
+> 3 | return (await request)::doSyncThing();
+ | ^
+ 4 | };
+ 5 |"
+`;
+
exports[`await.js - {"semi":false} [espree] format 1`] = `
"Unexpected token : (3:27)
1 | const doBothThings = async () => {
@@ -81,6 +101,15 @@ const doBothThings = async () => {
================================================================================
`;
+exports[`bind_parens.js [acorn] format 1`] = `
+"Unexpected token (1:9)
+> 1 | (a || b)::c;
+ | ^
+ 2 | a || (b::c);
+ 3 | ::obj.prop;
+ 4 | (void 0)::func();"
+`;
+
exports[`bind_parens.js [espree] format 1`] = `
"Unexpected token : (1:9)
> 1 | (a || b)::c;
@@ -99,6 +128,15 @@ exports[`bind_parens.js [meriyah] format 1`] = `
4 | (void 0)::func();"
`;
+exports[`bind_parens.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected token (1:9)
+> 1 | (a || b)::c;
+ | ^
+ 2 | a || (b::c);
+ 3 | ::obj.prop;
+ 4 | (void 0)::func();"
+`;
+
exports[`bind_parens.js - {"semi":false} [espree] format 1`] = `
"Unexpected token : (1:9)
> 1 | (a || b)::c;
@@ -278,6 +316,17 @@ f[a::b()];
================================================================================
`;
+exports[`long_name_method.js [acorn] format 1`] = `
+"Unexpected token (3:54)
+ 1 | class X {
+ 2 | constructor() {
+> 3 | this.testLongNameMethodAndSomethingElseLallala = ::this.testLongNameMethodAndSomethingElseLallala;
+ | ^
+ 4 | }
+ 5 |
+ 6 | testLongNameMethodAndSomethingElseLallala() {"
+`;
+
exports[`long_name_method.js [espree] format 1`] = `
"Unexpected token : (3:54)
1 | class X {
@@ -300,6 +349,17 @@ exports[`long_name_method.js [meriyah] format 1`] = `
6 | testLongNameMethodAndSomethingElseLallala() {"
`;
+exports[`long_name_method.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected token (3:54)
+ 1 | class X {
+ 2 | constructor() {
+> 3 | this.testLongNameMethodAndSomethingElseLallala = ::this.testLongNameMethodAndSomethingElseLallala;
+ | ^
+ 4 | }
+ 5 |
+ 6 | testLongNameMethodAndSomethingElseLallala() {"
+`;
+
exports[`long_name_method.js - {"semi":false} [espree] format 1`] = `
"Unexpected token : (3:54)
1 | class X {
@@ -383,6 +443,17 @@ class X {
================================================================================
`;
+exports[`method_chain.js [acorn] format 1`] = `
+"Unexpected token (10:9)
+ 8 | function test(observable) {
+ 9 | return observable
+> 10 | ::filter(data => data.someTest)
+ | ^
+ 11 | ::throttle(() =>
+ 12 | interval(10)
+ 13 | ::take(1)"
+`;
+
exports[`method_chain.js [espree] format 1`] = `
"Unexpected token : (10:9)
8 | function test(observable) {
@@ -405,6 +476,17 @@ exports[`method_chain.js [meriyah] format 1`] = `
13 | ::take(1)"
`;
+exports[`method_chain.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected token (10:9)
+ 8 | function test(observable) {
+ 9 | return observable
+> 10 | ::filter(data => data.someTest)
+ | ^
+ 11 | ::throttle(() =>
+ 12 | interval(10)
+ 13 | ::take(1)"
+`;
+
exports[`method_chain.js - {"semi":false} [espree] format 1`] = `
"Unexpected token : (10:9)
8 | function test(observable) {
@@ -520,6 +602,17 @@ function test(observable) {
================================================================================
`;
+exports[`short_name_method.js [acorn] format 1`] = `
+"Unexpected token (3:24)
+ 1 | class X {
+ 2 | constructor() {
+> 3 | this.shortMethod = ::this.shortMethod;
+ | ^
+ 4 | }
+ 5 |
+ 6 | shortMethod() {"
+`;
+
exports[`short_name_method.js [espree] format 1`] = `
"Unexpected token : (3:24)
1 | class X {
@@ -542,6 +635,17 @@ exports[`short_name_method.js [meriyah] format 1`] = `
6 | shortMethod() {"
`;
+exports[`short_name_method.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected token (3:24)
+ 1 | class X {
+ 2 | constructor() {
+> 3 | this.shortMethod = ::this.shortMethod;
+ | ^
+ 4 | }
+ 5 |
+ 6 | shortMethod() {"
+`;
+
exports[`short_name_method.js - {"semi":false} [espree] format 1`] = `
"Unexpected token : (3:24)
1 | class X {
@@ -623,6 +727,15 @@ class X {
================================================================================
`;
+exports[`unary.js [acorn] format 1`] = `
+"Unexpected token (1:3)
+> 1 | !x::y;
+ | ^
+ 2 | !(x::y /* foo */);
+ 3 | !(/* foo */ x::y);
+ 4 | !("
+`;
+
exports[`unary.js [espree] format 1`] = `
"Unexpected token : (1:3)
> 1 | !x::y;
@@ -641,6 +754,15 @@ exports[`unary.js [meriyah] format 1`] = `
4 | !("
`;
+exports[`unary.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected token (1:3)
+> 1 | !x::y;
+ | ^
+ 2 | !(x::y /* foo */);
+ 3 | !(/* foo */ x::y);
+ 4 | !("
+`;
+
exports[`unary.js - {"semi":false} [espree] format 1`] = `
"Unexpected token : (1:3)
> 1 | !x::y;
diff --git a/tests/format/js/bind-expressions/jsfmt.spec.js b/tests/format/js/bind-expressions/jsfmt.spec.js
index 9b66df6e2..7b852963c 100644
--- a/tests/format/js/bind-expressions/jsfmt.spec.js
+++ b/tests/format/js/bind-expressions/jsfmt.spec.js
@@ -1,5 +1,7 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
-run_spec(import.meta, ["babel"], {
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
+run_spec(__dirname, ["babel"], {
semi: false,
- errors: { espree: true, meriyah: true },
+ errors: { acorn: true, espree: true, meriyah: true },
});
diff --git a/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap
index bcc88f818..01db1d544 100644
--- a/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap
@@ -9,6 +9,15 @@ exports[`null-arguments-item.js [__babel_estree] format 1`] = `
4 | //1"
`;
+exports[`null-arguments-item.js [acorn] format 1`] = `
+"Unexpected token (1:11)
+> 1 | foor('a', , 'b');
+ | ^
+ 2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong');
+ 3 | foo(\\"a\\",
+ 4 | //1"
+`;
+
exports[`null-arguments-item.js [babel] format 1`] = `
"Unexpected token ','. (1:12)
> 1 | foor('a', , 'b');
diff --git a/tests/format/js/call/invalid/jsfmt.spec.js b/tests/format/js/call/invalid/jsfmt.spec.js
index e99df9559..01adf3c1b 100644
--- a/tests/format/js/call/invalid/jsfmt.spec.js
+++ b/tests/format/js/call/invalid/jsfmt.spec.js
@@ -2,6 +2,7 @@ run_spec(import.meta, ["babel"], {
errors: {
babel: true,
__babel_estree: true,
+ acorn: true,
espree: true,
meriyah: true,
},
diff --git a/tests/format/js/class-comment/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/class-comment/__snapshots__/jsfmt.spec.js.snap
index cddf25eca..20458ecd7 100644
--- a/tests/format/js/class-comment/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/class-comment/__snapshots__/jsfmt.spec.js.snap
@@ -109,7 +109,7 @@ class A1 extends B {
class A2 /* a */ extends B {}
class A3 extends B /* a */ {}
-class A4 /* a */ extends B {}
+class A4 extends /* a */ B {}
(class A5 // comment 1
// comment 2
@@ -123,7 +123,7 @@ class A4 /* a */ extends B {}
(class A7 /* a */ extends B {});
(class A8 extends B /* a */ {});
-(class A9 /* a */ extends B {});
+(class A9 extends /* a */ B {});
class a extends b {
// comment
diff --git a/tests/format/js/classes-private-fields/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/classes-private-fields/__snapshots__/jsfmt.spec.js.snap
index cc26e61e9..327a88c6b 100644
--- a/tests/format/js/classes-private-fields/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/classes-private-fields/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`optional-chaining.js [acorn] format 1`] = `
+"Private field '#x' must be declared in an enclosing class (3:13)
+ 1 | // https://github.com/babel/babel/pull/11669
+ 2 |
+> 3 | delete obj?.#x.a
+ | ^
+ 4 |"
+`;
+
exports[`optional-chaining.js [espree] format 1`] = `
"Private field '#x' must be declared in an enclosing class (3:13)
1 | // https://github.com/babel/babel/pull/11669
@@ -18,6 +27,15 @@ exports[`optional-chaining.js [meriyah] format 1`] = `
4 |"
`;
+exports[`optional-chaining.js - {"semi":false} [acorn] format 1`] = `
+"Private field '#x' must be declared in an enclosing class (3:13)
+ 1 | // https://github.com/babel/babel/pull/11669
+ 2 |
+> 3 | delete obj?.#x.a
+ | ^
+ 4 |"
+`;
+
exports[`optional-chaining.js - {"semi":false} [espree] format 1`] = `
"Private field '#x' must be declared in an enclosing class (3:13)
1 | // https://github.com/babel/babel/pull/11669
diff --git a/tests/format/js/classes-private-fields/jsfmt.spec.js b/tests/format/js/classes-private-fields/jsfmt.spec.js
index 81ced1cba..9e5e4b3c5 100644
--- a/tests/format/js/classes-private-fields/jsfmt.spec.js
+++ b/tests/format/js/classes-private-fields/jsfmt.spec.js
@@ -1,6 +1,7 @@
const errors = {
- meriyah: ["optional-chaining.js"],
+ acorn: ["optional-chaining.js"],
espree: ["optional-chaining.js"],
+ meriyah: ["optional-chaining.js"],
};
run_spec(import.meta, ["babel"], {
errors,
diff --git a/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap
index a6c33b7dc..fbcbf12d7 100644
--- a/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/classes/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,26 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`asi.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+// https://github.com/facebook/flow/commit/78f657e8da014e16ff509ad34f8178b158c47af7
+class C {
+ foo
+ () {}
+}
+
+=====================================output=====================================
+// https://github.com/facebook/flow/commit/78f657e8da014e16ff509ad34f8178b158c47af7
+class C {
+ foo() {}
+}
+
+================================================================================
+`;
+
exports[`assignment.js format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
diff --git a/tests/format/js/classes/asi.js b/tests/format/js/classes/asi.js
new file mode 100644
index 000000000..e75fcf1b1
--- /dev/null
+++ b/tests/format/js/classes/asi.js
@@ -0,0 +1,5 @@
+// https://github.com/facebook/flow/commit/78f657e8da014e16ff509ad34f8178b158c47af7
+class C {
+ foo
+ () {}
+}
diff --git a/tests/format/js/classes/top-level-super/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/classes/top-level-super/__snapshots__/jsfmt.spec.js.snap
index b0ab6e9d7..e3060ae46 100644
--- a/tests/format/js/classes/top-level-super/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/classes/top-level-super/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`example.js [acorn] format 1`] = `
+"super() call outside constructor of a subclass (1:1)
+> 1 | super();
+ | ^
+ 2 |"
+`;
+
exports[`example.js [espree] format 1`] = `
"'super' keyword outside a method (1:1)
> 1 | super();
diff --git a/tests/format/js/classes/top-level-super/jsfmt.spec.js b/tests/format/js/classes/top-level-super/jsfmt.spec.js
index 25658be58..8caf42e44 100644
--- a/tests/format/js/classes/top-level-super/jsfmt.spec.js
+++ b/tests/format/js/classes/top-level-super/jsfmt.spec.js
@@ -1,3 +1,3 @@
-run_spec(import.meta, ["babel", "typescript"], {
- errors: { espree: true, meriyah: true },
+run_spec(__dirname, ["babel", "typescript"], {
+ errors: { acorn: true, espree: true, meriyah: true },
});
diff --git a/tests/format/js/comments-closure-typecast/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/comments-closure-typecast/__snapshots__/jsfmt.spec.js.snap
index 9aa8734ed..722445bec 100644
--- a/tests/format/js/comments-closure-typecast/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/comments-closure-typecast/__snapshots__/jsfmt.spec.js.snap
@@ -603,6 +603,20 @@ const OverlapWrapper =
================================================================================
`;
+exports[`superclass.js format 1`] = `
+====================================options=====================================
+parsers: ["babel"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+class Foo extends /** @type {string} */ (Bar) {}
+
+=====================================output=====================================
+class Foo extends /** @type {string} */ (Bar) {}
+
+================================================================================
+`;
+
exports[`ways-to-specify-type.js format 1`] = `
====================================options=====================================
parsers: ["babel"]
diff --git a/tests/format/js/comments-closure-typecast/superclass.js b/tests/format/js/comments-closure-typecast/superclass.js
new file mode 100644
index 000000000..0f5ad0587
--- /dev/null
+++ b/tests/format/js/comments-closure-typecast/superclass.js
@@ -0,0 +1 @@
+class Foo extends /** @type {string} */ (Bar) {}
diff --git a/tests/format/js/comments-pipeline-own-line/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/comments-pipeline-own-line/__snapshots__/jsfmt.spec.js.snap
index ab3787427..773828743 100644
--- a/tests/format/js/comments-pipeline-own-line/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/comments-pipeline-own-line/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,16 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`pipeline_own_line.js [acorn] format 1`] = `
+"Unexpected token (4:3)
+ 2 | 0
+ 3 | // Comment
+> 4 | |> x
+ | ^
+ 5 | }
+ 6 |
+ 7 | bifornCringerMoshedPerplexSawder("
+`;
+
exports[`pipeline_own_line.js [espree] format 1`] = `
"Unexpected token > (4:3)
2 | 0
diff --git a/tests/format/js/comments-pipeline-own-line/jsfmt.spec.js b/tests/format/js/comments-pipeline-own-line/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/comments-pipeline-own-line/jsfmt.spec.js
+++ b/tests/format/js/comments-pipeline-own-line/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/decorator-comments/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/decorator-comments/__snapshots__/jsfmt.spec.js.snap
index d28627f51..ce6d7d0cd 100644
--- a/tests/format/js/decorator-comments/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/decorator-comments/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`comments.js [acorn] format 1`] = `
+"Unexpected character '@' (2:5)
+ 1 | class Something {
+> 2 | @Annotateme()
+ | ^
+ 3 | // comment
+ 4 | static property: Array;
+ 5 | }"
+`;
+
exports[`comments.js [espree] format 1`] = `
"Unexpected character '@' (2:5)
1 | class Something {
diff --git a/tests/format/js/decorator-comments/jsfmt.spec.js b/tests/format/js/decorator-comments/jsfmt.spec.js
index 25658be58..8caf42e44 100644
--- a/tests/format/js/decorator-comments/jsfmt.spec.js
+++ b/tests/format/js/decorator-comments/jsfmt.spec.js
@@ -1,3 +1,3 @@
-run_spec(import.meta, ["babel", "typescript"], {
- errors: { espree: true, meriyah: true },
+run_spec(__dirname, ["babel", "typescript"], {
+ errors: { acorn: true, espree: true, meriyah: true },
});
diff --git a/tests/format/js/decorators-export/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/decorators-export/__snapshots__/jsfmt.spec.js.snap
index eabe686e0..81881da32 100644
--- a/tests/format/js/decorators-export/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/decorators-export/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`after_export.js [acorn] format 1`] = `
+"Unexpected character '@' (1:8)
+> 1 | export @decorator class Foo {}
+ | ^
+ 2 |
+ 3 | export default @decorator class {}
+ 4 |"
+`;
+
exports[`after_export.js [espree] format 1`] = `
"Unexpected character '@' (1:8)
> 1 | export @decorator class Foo {}
@@ -40,6 +49,15 @@ class {}
================================================================================
`;
+exports[`before_export.js [acorn] format 1`] = `
+"Unexpected character '@' (1:1)
+> 1 | @decorator
+ | ^
+ 2 | export class Foo {}
+ 3 |
+ 4 | @decorator"
+`;
+
exports[`before_export.js [espree] format 1`] = `
"Unexpected character '@' (1:1)
> 1 | @decorator
diff --git a/tests/format/js/decorators-export/jsfmt.spec.js b/tests/format/js/decorators-export/jsfmt.spec.js
index 80d8526ae..8a6b2e905 100644
--- a/tests/format/js/decorators-export/jsfmt.spec.js
+++ b/tests/format/js/decorators-export/jsfmt.spec.js
@@ -1,4 +1,4 @@
// TypeScript and Flow don't accept decorator after export
-run_spec(import.meta, ["babel"], {
- errors: { espree: true, meriyah: ["after_export.js"] },
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: ["after_export.js"] },
});
diff --git a/tests/format/js/decorators/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/decorators/__snapshots__/jsfmt.spec.js.snap
index 81851e921..091a9620b 100644
--- a/tests/format/js/decorators/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/decorators/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`classes.js [acorn] format 1`] = `
+"Unexpected character '@' (1:1)
+> 1 | @deco class Foo {}
+ | ^
+ 2 |
+ 3 | @deco export class Bar {}
+ 4 |"
+`;
+
exports[`classes.js [espree] format 1`] = `
"Unexpected character '@' (1:1)
> 1 | @deco class Foo {}
@@ -42,20 +51,35 @@ export class Bar {}
export default class Baz {}
const foo =
- @deco
- class {
- //
- };
+ (
+ @deco
+ class {
+ //
+ }
+ );
const bar =
- @deco
- class {
- //
- };
+ (
+ @deco
+ class {
+ //
+ }
+ );
================================================================================
`;
+exports[`comments.js [acorn] format 1`] = `
+"Unexpected character '@' (3:1)
+ 1 | var x = 100
+ 2 |
+> 3 | @Hello({
+ | ^
+ 4 | a: 'a', // Comment is in the wrong place
+ 5 | // test
+ 6 | b: '2'"
+`;
+
exports[`comments.js [espree] format 1`] = `
"Unexpected character '@' (3:1)
1 | var x = 100
@@ -138,6 +162,17 @@ export class Bar {}
================================================================================
`;
+exports[`methods.js [acorn] format 1`] = `
+"Unexpected character '@' (3:3)
+ 1 |
+ 2 | class Yo {
+> 3 | @foo(\\"hello\\")
+ | ^
+ 4 | async plop() {}
+ 5 |
+ 6 | @anotherDecoratorWithALongName(\\"and a very long string as a first argument\\")"
+`;
+
exports[`methods.js [espree] format 1`] = `
"Unexpected character '@' (3:3)
1 |
@@ -181,6 +216,17 @@ class Yo {
================================================================================
`;
+exports[`mixed.js [acorn] format 1`] = `
+"Unexpected character '@' (3:1)
+ 1 | // https://github.com/prettier/prettier/issues/6747
+ 2 |
+> 3 | @foo
+ | ^
+ 4 | export default class MyComponent {
+ 5 | @task
+ 6 | *foo() {"
+`;
+
exports[`mixed.js [espree] format 1`] = `
"Unexpected character '@' (3:1)
1 | // https://github.com/prettier/prettier/issues/6747
@@ -218,6 +264,17 @@ export default class MyComponent {
================================================================================
`;
+exports[`mobx.js [acorn] format 1`] = `
+"Unexpected character '@' (3:1)
+ 1 | import {observable} from \\"mobx\\";
+ 2 |
+> 3 | @observer class OrderLine {
+ | ^
+ 4 | @observable price:number = 0;
+ 5 | @observable amount:number = 1;
+ 6 |"
+`;
+
exports[`mobx.js [espree] format 1`] = `
"Unexpected character '@' (3:1)
1 | import {observable} from \\"mobx\\";
@@ -334,6 +391,16 @@ class OrderLine {
================================================================================
`;
+exports[`multiline.js [acorn] format 1`] = `
+"Unexpected character '@' (2:3)
+ 1 | class Foo {
+> 2 | @deco([
+ | ^
+ 3 | foo,
+ 4 | bar
+ 5 | ]) prop = value;"
+`;
+
exports[`multiline.js [espree] format 1`] = `
"Unexpected character '@' (2:3)
1 | class Foo {
@@ -383,6 +450,16 @@ class Foo {
================================================================================
`;
+exports[`multiple.js [acorn] format 1`] = `
+"Unexpected character '@' (2:3)
+ 1 | const dog = {
+> 2 | @readonly
+ | ^
+ 3 | @nonenumerable
+ 4 | @doubledValue
+ 5 | legs: 4,"
+`;
+
exports[`multiple.js [espree] format 1`] = `
"Unexpected character '@' (2:3)
1 | const dog = {
@@ -448,6 +525,16 @@ const foo = {
================================================================================
`;
+exports[`parens.js [acorn] format 1`] = `
+"Unexpected character '@' (2:3)
+ 1 | class X {
+> 2 | @(computed().volatile())
+ | ^
+ 3 | x
+ 4 | }
+ 5 |"
+`;
+
exports[`parens.js [espree] format 1`] = `
"Unexpected character '@' (2:3)
1 | class X {
@@ -478,6 +565,15 @@ class X {
================================================================================
`;
+exports[`redux.js [acorn] format 1`] = `
+"Unexpected character '@' (1:1)
+> 1 | @connect(mapStateToProps, mapDispatchToProps)
+ | ^
+ 2 | export class MyApp extends React.Component {}
+ 3 |
+ 4 | @connect(state => ({ todos: state.todos }))"
+`;
+
exports[`redux.js [espree] format 1`] = `
"Unexpected character '@' (1:1)
> 1 | @connect(mapStateToProps, mapDispatchToProps)
diff --git a/tests/format/js/decorators/class-expression/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/decorators/class-expression/__snapshots__/jsfmt.spec.js.snap
new file mode 100644
index 000000000..b92b25fad
--- /dev/null
+++ b/tests/format/js/decorators/class-expression/__snapshots__/jsfmt.spec.js.snap
@@ -0,0 +1,543 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`arguments.js [acorn] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js [espree] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js [flow] format 1`] = `
+"Unexpected token \`@\` (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js [typescript] format 1`] = `
+"Argument expression expected. (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js - {"semi":false} [espree] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js - {"semi":false} [flow] format 1`] = `
+"Unexpected token \`@\` (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js - {"semi":false} [typescript] format 1`] = `
+"Argument expression expected. (1:13)
+> 1 | console.log(@deco class Foo {})
+ | ^
+ 2 | console.log(@deco class {})
+ 3 |"
+`;
+
+exports[`arguments.js - {"semi":false} format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+semi: false
+ | printWidth
+=====================================input======================================
+console.log(@deco class Foo {})
+console.log(@deco class {})
+
+=====================================output=====================================
+console.log(
+ (
+ @deco
+ class Foo {}
+ )
+)
+console.log(
+ (
+ @deco
+ class {}
+ )
+)
+
+================================================================================
+`;
+
+exports[`arguments.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+console.log(@deco class Foo {})
+console.log(@deco class {})
+
+=====================================output=====================================
+console.log(
+ (
+ @deco
+ class Foo {}
+ )
+);
+console.log(
+ (
+ @deco
+ class {}
+ )
+);
+
+================================================================================
+`;
+
+exports[`class-expression.js [acorn] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js [espree] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js [flow] format 1`] = `
+"Unexpected token \`@\` (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js [typescript] format 1`] = `
+"Expression expected. (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js - {"semi":false} [espree] format 1`] = `
+"Unexpected character '@' (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js - {"semi":false} [flow] format 1`] = `
+"Unexpected token \`@\` (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js - {"semi":false} [typescript] format 1`] = `
+"Expression expected. (1:13)
+> 1 | const a1 = (@deco class Foo {});
+ | ^
+ 2 | const a2 = (@deco class {});
+ 3 |
+ 4 | (@deco class Foo {});"
+`;
+
+exports[`class-expression.js - {"semi":false} format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+semi: false
+ | printWidth
+=====================================input======================================
+const a1 = (@deco class Foo {});
+const a2 = (@deco class {});
+
+(@deco class Foo {});
+(@deco class {});
+
+const b1 = []
+;(@deco class Foo {})
+
+const b2 = []
+;(@deco class {})
+
+// This is not a \`ClassExpression\` but \`ClassDeclaration\`
+@deco class Foo {}
+
+=====================================output=====================================
+const a1 =
+ (
+ @deco
+ class Foo {}
+ )
+const a2 =
+ (
+ @deco
+ class {}
+ )
+
+;(
+ @deco
+ class Foo {}
+)
+;(
+ @deco
+ class {}
+)
+
+const b1 = []
+;(
+ @deco
+ class Foo {}
+)
+
+const b2 = []
+;(
+ @deco
+ class {}
+)
+
+// This is not a \`ClassExpression\` but \`ClassDeclaration\`
+@deco
+class Foo {}
+
+================================================================================
+`;
+
+exports[`class-expression.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+const a1 = (@deco class Foo {});
+const a2 = (@deco class {});
+
+(@deco class Foo {});
+(@deco class {});
+
+const b1 = []
+;(@deco class Foo {})
+
+const b2 = []
+;(@deco class {})
+
+// This is not a \`ClassExpression\` but \`ClassDeclaration\`
+@deco class Foo {}
+
+=====================================output=====================================
+const a1 =
+ (
+ @deco
+ class Foo {}
+ );
+const a2 =
+ (
+ @deco
+ class {}
+ );
+
+(
+ @deco
+ class Foo {}
+);
+(
+ @deco
+ class {}
+);
+
+const b1 = [];
+(
+ @deco
+ class Foo {}
+);
+
+const b2 = [];
+(
+ @deco
+ class {}
+);
+
+// This is not a \`ClassExpression\` but \`ClassDeclaration\`
+@deco
+class Foo {}
+
+================================================================================
+`;
+
+exports[`member-expression.js [acorn] format 1`] = `
+"Unexpected character '@' (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js [espree] format 1`] = `
+"Unexpected character '@' (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js [flow] format 1`] = `
+"Unexpected token \`@\` (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js [typescript] format 1`] = `
+"Expression expected. (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected character '@' (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js - {"semi":false} [espree] format 1`] = `
+"Unexpected character '@' (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js - {"semi":false} [flow] format 1`] = `
+"Unexpected token \`@\` (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js - {"semi":false} [typescript] format 1`] = `
+"Expression expected. (1:2)
+> 1 | (@deco class Foo {}).name;
+ | ^
+ 2 | (@deco class {}).name;
+ 3 |"
+`;
+
+exports[`member-expression.js - {"semi":false} format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+semi: false
+ | printWidth
+=====================================input======================================
+(@deco class Foo {}).name;
+(@deco class {}).name;
+
+=====================================output=====================================
+;((
+ @deco
+ class Foo {}
+).name)
+;((
+ @deco
+ class {}
+).name)
+
+================================================================================
+`;
+
+exports[`member-expression.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+(@deco class Foo {}).name;
+(@deco class {}).name;
+
+=====================================output=====================================
+((
+ @deco
+ class Foo {}
+).name);
+((
+ @deco
+ class {}
+).name);
+
+================================================================================
+`;
+
+exports[`super-class.js [acorn] format 1`] = `
+"Unexpected character '@' (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js [espree] format 1`] = `
+"Unexpected character '@' (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js [flow] format 1`] = `
+"Unexpected token \`@\` (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js [typescript] format 1`] = `
+"Expression expected. (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected character '@' (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js - {"semi":false} [espree] format 1`] = `
+"Unexpected character '@' (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js - {"semi":false} [flow] format 1`] = `
+"Unexpected token \`@\` (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js - {"semi":false} [typescript] format 1`] = `
+"Expression expected. (1:20)
+> 1 | class Foo extends (@deco class Foo {}){}
+ | ^
+ 2 |
+ 3 | class Foo extends (@deco class {}){}
+ 4 |"
+`;
+
+exports[`super-class.js - {"semi":false} format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+semi: false
+ | printWidth
+=====================================input======================================
+class Foo extends (@deco class Foo {}){}
+
+class Foo extends (@deco class {}){}
+
+=====================================output=====================================
+class Foo extends (
+ @deco
+ class Foo {}
+) {}
+
+class Foo extends (
+ @deco
+ class {}
+) {}
+
+================================================================================
+`;
+
+exports[`super-class.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+class Foo extends (@deco class Foo {}){}
+
+class Foo extends (@deco class {}){}
+
+=====================================output=====================================
+class Foo extends (
+ @deco
+ class Foo {}
+) {}
+
+class Foo extends (
+ @deco
+ class {}
+) {}
+
+================================================================================
+`;
diff --git a/tests/format/js/decorators/class-expression/arguments.js b/tests/format/js/decorators/class-expression/arguments.js
new file mode 100644
index 000000000..4248b3a8f
--- /dev/null
+++ b/tests/format/js/decorators/class-expression/arguments.js
@@ -0,0 +1,2 @@
+console.log(@deco class Foo {})
+console.log(@deco class {})
diff --git a/tests/format/js/decorators/class-expression/class-expression.js b/tests/format/js/decorators/class-expression/class-expression.js
new file mode 100644
index 000000000..29aa9e0ae
--- /dev/null
+++ b/tests/format/js/decorators/class-expression/class-expression.js
@@ -0,0 +1,14 @@
+const a1 = (@deco class Foo {});
+const a2 = (@deco class {});
+
+(@deco class Foo {});
+(@deco class {});
+
+const b1 = []
+;(@deco class Foo {})
+
+const b2 = []
+;(@deco class {})
+
+// This is not a `ClassExpression` but `ClassDeclaration`
+@deco class Foo {}
diff --git a/tests/format/js/decorators/class-expression/jsfmt.spec.js b/tests/format/js/decorators/class-expression/jsfmt.spec.js
new file mode 100644
index 000000000..b7c768416
--- /dev/null
+++ b/tests/format/js/decorators/class-expression/jsfmt.spec.js
@@ -0,0 +1,9 @@
+const errors = {
+ flow: true,
+ typescript: true,
+ acorn: true,
+ espree: true,
+};
+
+run_spec(__dirname, ["babel", "flow", "typescript"], { errors });
+run_spec(__dirname, ["babel", "flow", "typescript"], { semi: false, errors });
diff --git a/tests/format/js/decorators/class-expression/member-expression.js b/tests/format/js/decorators/class-expression/member-expression.js
new file mode 100644
index 000000000..701f661d7
--- /dev/null
+++ b/tests/format/js/decorators/class-expression/member-expression.js
@@ -0,0 +1,2 @@
+(@deco class Foo {}).name;
+(@deco class {}).name;
diff --git a/tests/format/js/decorators/class-expression/super-class.js b/tests/format/js/decorators/class-expression/super-class.js
new file mode 100644
index 000000000..a51cc69ec
--- /dev/null
+++ b/tests/format/js/decorators/class-expression/super-class.js
@@ -0,0 +1,3 @@
+class Foo extends (@deco class Foo {}){}
+
+class Foo extends (@deco class {}){}
diff --git a/tests/format/js/decorators/jsfmt.spec.js b/tests/format/js/decorators/jsfmt.spec.js
index 1d4378e6f..f49386480 100644
--- a/tests/format/js/decorators/jsfmt.spec.js
+++ b/tests/format/js/decorators/jsfmt.spec.js
@@ -1,3 +1,3 @@
-run_spec(import.meta, ["babel"], {
- errors: { espree: true, meriyah: ["multiple.js", "mobx.js"] },
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: ["multiple.js", "mobx.js"] },
});
diff --git a/tests/format/js/do/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/do/__snapshots__/jsfmt.spec.js.snap
index 454b5bb47..27c4eb490 100644
--- a/tests/format/js/do/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/do/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,16 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`call-arguments.js [acorn] format 1`] = `
+"Unexpected token (3:3)
+ 1 | // from https://github.com/babel/babel/pull/13122/
+ 2 | expect(
+> 3 | do {
+ | ^
+ 4 | var bar = \\"foo\\";
+ 5 | if (!bar) throw new Error(
+ 6 | \\"unreachable\\""
+`;
+
exports[`call-arguments.js [espree] format 1`] = `
"Unexpected token do (3:3)
1 | // from https://github.com/babel/babel/pull/13122/
@@ -108,6 +119,17 @@ expect(
================================================================================
`;
+exports[`do.js [acorn] format 1`] = `
+"Unexpected token (3:5)
+ 1 | const envSpecific = {
+ 2 | domain:
+> 3 | do {
+ | ^
+ 4 | if(env === 'production') 'https://abc.mno.com/';
+ 5 | else if(env === 'development') 'http://localhost:4000';
+ 6 | }"
+`;
+
exports[`do.js [espree] format 1`] = `
"Unexpected token do (3:5)
1 | const envSpecific = {
diff --git a/tests/format/js/do/jsfmt.spec.js b/tests/format/js/do/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/do/jsfmt.spec.js
+++ b/tests/format/js/do/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/dynamic-import/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/dynamic-import/__snapshots__/jsfmt.spec.js.snap
index 75c07691c..162cb7350 100644
--- a/tests/format/js/dynamic-import/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/dynamic-import/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`assertions.js [acorn] format 1`] = `
+"Unexpected token (1:20)
+> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
+ | ^
+ 2 |"
+`;
+
exports[`assertions.js [espree] format 1`] = `
"Unexpected token , (1:20)
> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
diff --git a/tests/format/js/dynamic-import/jsfmt.spec.js b/tests/format/js/dynamic-import/jsfmt.spec.js
index b15b7218c..f0541ea68 100644
--- a/tests/format/js/dynamic-import/jsfmt.spec.js
+++ b/tests/format/js/dynamic-import/jsfmt.spec.js
@@ -1,6 +1,7 @@
run_spec(import.meta, ["babel", "flow", "typescript"], {
errors: {
flow: ["assertions.js"],
+ acorn: ["assertions.js"],
espree: ["assertions.js"],
meriyah: ["assertions.js"],
},
diff --git a/tests/format/js/export-default/escaped/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/export-default/escaped/__snapshots__/jsfmt.spec.js.snap
index cec2b389d..33fd57a7d 100644
--- a/tests/format/js/export-default/escaped/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/export-default/escaped/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`default-escaped.js [acorn] format 1`] = `
+"Unexpected token (2:8)
+ 1 | // export asyn\\\\u{63} from \\"async\\";
+> 2 | export n\\\\u{63} from \\"async\\";
+ | ^"
+`;
+
exports[`default-escaped.js [espree] format 1`] = `
"Unexpected token n\\\\u{63} (2:8)
1 | // export asyn\\\\u{63} from \\"async\\";
diff --git a/tests/format/js/export-default/escaped/jsfmt.spec.js b/tests/format/js/export-default/escaped/jsfmt.spec.js
index cd8167dc8..8ec1e5a27 100644
--- a/tests/format/js/export-default/escaped/jsfmt.spec.js
+++ b/tests/format/js/export-default/escaped/jsfmt.spec.js
@@ -1,3 +1,3 @@
-run_spec(import.meta, ["babel"], {
- errors: { espree: true, meriyah: true },
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
});
diff --git a/tests/format/js/export-extension/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/export-extension/__snapshots__/jsfmt.spec.js.snap
index 60144ebbd..07d57957e 100644
--- a/tests/format/js/export-extension/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/export-extension/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`export.js [acorn] format 1`] = `
+"Unexpected token (2:8)
+ 1 | export * as ns from 'mod';
+> 2 | export v from 'mod';
+ | ^
+ 3 | export a, * as b from 'mod';
+ 4 | export c, { foo } from 'mod';
+ 5 | export * as d, { bar } from 'mod';"
+`;
+
exports[`export.js [espree] format 1`] = `
"Unexpected token v (2:8)
1 | export * as ns from 'mod';
diff --git a/tests/format/js/export-extension/jsfmt.spec.js b/tests/format/js/export-extension/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/export-extension/jsfmt.spec.js
+++ b/tests/format/js/export-extension/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/export-star/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/export-star/__snapshots__/jsfmt.spec.js.snap
index b255a5970..9562c0d9d 100644
--- a/tests/format/js/export-star/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/export-star/__snapshots__/jsfmt.spec.js.snap
@@ -29,3 +29,80 @@ export * as ns from "mod";
================================================================================
`;
+
+exports[`export-star-as-default.js [flow] format 1`] = `
+"Unexpected token \`default\` (1:13)
+> 1 | export * as default from 'foo'
+ | ^^^^^^^
+ 2 |"
+`;
+
+exports[`export-star-as-default.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+export * as default from 'foo'
+
+=====================================output=====================================
+export * as default from "foo";
+
+================================================================================
+`;
+
+exports[`export-star-as-string.js [flow] format 1`] = `
+"Unexpected string, expected an identifier (1:13)
+> 1 | export * as 'foo' from 'foo'
+ | ^^^^^
+ 2 |"
+`;
+
+exports[`export-star-as-string.js [typescript] format 1`] = `
+"Identifier expected. (1:13)
+> 1 | export * as 'foo' from 'foo'
+ | ^
+ 2 |"
+`;
+
+exports[`export-star-as-string.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+export * as 'foo' from 'foo'
+
+=====================================output=====================================
+export * as "foo" from "foo";
+
+================================================================================
+`;
+
+exports[`export-star-as-string2.js [flow] format 1`] = `
+"Unexpected string, expected an identifier (1:13)
+> 1 | export * as \\"foo\\" from 'foo'
+ | ^^^^^
+ 2 |"
+`;
+
+exports[`export-star-as-string2.js [typescript] format 1`] = `
+"Identifier expected. (1:13)
+> 1 | export * as \\"foo\\" from 'foo'
+ | ^
+ 2 |"
+`;
+
+exports[`export-star-as-string2.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+export * as "foo" from 'foo'
+
+=====================================output=====================================
+export * as "foo" from "foo";
+
+================================================================================
+`;
diff --git a/tests/format/js/export-star/export-star-as-default.js b/tests/format/js/export-star/export-star-as-default.js
new file mode 100644
index 000000000..f2319d057
--- /dev/null
+++ b/tests/format/js/export-star/export-star-as-default.js
@@ -0,0 +1 @@
+export * as default from 'foo'
diff --git a/tests/format/js/export-star/export-star-as-string.js b/tests/format/js/export-star/export-star-as-string.js
new file mode 100644
index 000000000..92850a845
--- /dev/null
+++ b/tests/format/js/export-star/export-star-as-string.js
@@ -0,0 +1 @@
+export * as 'foo' from 'foo'
diff --git a/tests/format/js/export-star/export-star-as-string2.js b/tests/format/js/export-star/export-star-as-string2.js
new file mode 100644
index 000000000..d5e11caf3
--- /dev/null
+++ b/tests/format/js/export-star/export-star-as-string2.js
@@ -0,0 +1 @@
+export * as "foo" from 'foo'
diff --git a/tests/format/js/export-star/jsfmt.spec.js b/tests/format/js/export-star/jsfmt.spec.js
index 628d261a5..64f60bb69 100644
--- a/tests/format/js/export-star/jsfmt.spec.js
+++ b/tests/format/js/export-star/jsfmt.spec.js
@@ -1 +1,10 @@
-run_spec(import.meta, ["babel", "flow", "typescript"]);
+run_spec(__dirname, ["babel", "flow", "typescript"], {
+ errors: {
+ flow: [
+ "export-star-as-default.js",
+ "export-star-as-string.js",
+ "export-star-as-string2.js",
+ ],
+ typescript: ["export-star-as-string.js", "export-star-as-string2.js"],
+ },
+});
diff --git a/tests/format/js/exports/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/exports/__snapshots__/jsfmt.spec.js.snap
index 9366302a9..6956f8507 100644
--- a/tests/format/js/exports/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/exports/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,16 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`test.js [acorn] format 1`] = `
+"Unexpected token (3:8)
+ 1 | export { value1, value2 as value2_renamed, value3, value4 as value4_renamed, value5 } from \\"exports\\";
+ 2 |
+> 3 | export a,{b} from \\"./baz\\";
+ | ^
+ 4 |
+ 5 | export * as ns from \\"mod\\";
+ 6 |"
+`;
+
exports[`test.js [espree] format 1`] = `
"Unexpected token a (3:8)
1 | export { value1, value2 as value2_renamed, value3, value4 as value4_renamed, value5 } from \\"exports\\";
diff --git a/tests/format/js/exports/jsfmt.spec.js b/tests/format/js/exports/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/exports/jsfmt.spec.js
+++ b/tests/format/js/exports/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/for/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/for/__snapshots__/jsfmt.spec.js.snap
index 376878d65..69f2556fe 100644
--- a/tests/format/js/for/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/for/__snapshots__/jsfmt.spec.js.snap
@@ -74,6 +74,709 @@ for (x of y);
================================================================================
`;
+exports[`continue-and-break-comment-1.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+for(;;) {
+ continue // comment
+ ;
+}
+
+for (;;) {
+ break // comment
+ ;
+}
+
+for (const f of []) {
+ continue // comment
+ ;
+}
+
+for (const f of []) {
+ break // comment
+ ;
+}
+
+for (const f in {}) {
+ continue // comment
+ ;
+}
+
+for (const f in {}) {
+ break // comment
+ ;
+}
+
+while(true) {
+ continue // comment
+ ;
+}
+
+while (true) {
+ break // comment
+ ;
+}
+
+do {
+ continue // comment
+ ;
+} while(true);
+
+
+do {
+ break // comment
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1 // comment
+ ;
+}
+
+label2: {
+ break label2 // comment
+ ;
+};
+
+for(;;) {
+ continue /* comment */
+ ;
+}
+
+for (;;) {
+ break /* comment */
+ ;
+}
+
+for (const f of []) {
+ continue /* comment */
+ ;
+}
+
+for (const f of []) {
+ break /* comment */
+ ;
+}
+
+for (const f in {}) {
+ continue /* comment */
+ ;
+}
+
+for (const f in {}) {
+ break /* comment */
+ ;
+}
+
+while(true) {
+ continue /* comment */
+ ;
+}
+
+while (true) {
+ break /* comment */
+ ;
+}
+
+do {
+ continue /* comment */
+ ;
+} while(true);
+
+
+do {
+ break /* comment */
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1 /* comment */
+ ;
+}
+
+label2: {
+ break label2 /* comment */
+ ;
+};
+
+=====================================output=====================================
+for (;;) {
+ continue; // comment
+}
+
+for (;;) {
+ break; // comment
+}
+
+for (const f of []) {
+ continue; // comment
+}
+
+for (const f of []) {
+ break; // comment
+}
+
+for (const f in {}) {
+ continue; // comment
+}
+
+for (const f in {}) {
+ break; // comment
+}
+
+while (true) {
+ continue; // comment
+}
+
+while (true) {
+ break; // comment
+}
+
+do {
+ continue; // comment
+} while (true);
+
+do {
+ break; // comment
+} while (true);
+
+label1: for (;;) {
+ continue label1; // comment
+}
+
+label2: {
+ break label2; // comment
+}
+
+for (;;) {
+ continue; /* comment */
+}
+
+for (;;) {
+ break; /* comment */
+}
+
+for (const f of []) {
+ continue; /* comment */
+}
+
+for (const f of []) {
+ break; /* comment */
+}
+
+for (const f in {}) {
+ continue; /* comment */
+}
+
+for (const f in {}) {
+ break; /* comment */
+}
+
+while (true) {
+ continue; /* comment */
+}
+
+while (true) {
+ break; /* comment */
+}
+
+do {
+ continue; /* comment */
+} while (true);
+
+do {
+ break; /* comment */
+} while (true);
+
+label1: for (;;) {
+ continue label1 /* comment */;
+}
+
+label2: {
+ break label2 /* comment */;
+}
+
+================================================================================
+`;
+
+exports[`continue-and-break-comment-2.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+for(;;) {
+ continue
+ // comment
+ ;
+}
+
+for (;;) {
+ break
+ // comment
+ ;
+}
+
+for (const f of []) {
+ continue
+ // comment
+ ;
+}
+
+for (const f of []) {
+ break
+ // comment
+ ;
+}
+
+for (const f in {}) {
+ continue
+ // comment
+ ;
+}
+
+for (const f in {}) {
+ break
+ // comment
+ ;
+}
+
+while(true) {
+ continue
+ // comment
+ ;
+}
+
+while (true) {
+ break
+ // comment
+ ;
+}
+
+do {
+ continue
+ // comment
+ ;
+} while(true);
+
+
+do {
+ break
+ // comment
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1
+ // comment
+ ;
+}
+
+label2: {
+ break label2
+ // comment
+ ;
+};
+
+for(;;) {
+ continue
+ /* comment */
+ ;
+}
+
+for (;;) {
+ break
+ /* comment */
+ ;
+}
+
+for (const f of []) {
+ continue
+ /* comment */
+ ;
+}
+
+for (const f of []) {
+ break
+ /* comment */
+ ;
+}
+
+for (const f in {}) {
+ continue
+ /* comment */
+ ;
+}
+
+for (const f in {}) {
+ break
+ /* comment */
+ ;
+}
+
+while(true) {
+ continue
+ /* comment */
+ ;
+}
+
+while (true) {
+ break
+ /* comment */
+ ;
+}
+
+do {
+ continue
+ /* comment */
+ ;
+} while(true);
+
+
+do {
+ break
+ /* comment */
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1
+ /* comment */
+ ;
+}
+
+label2: {
+ break label2
+ /* comment */
+ ;
+};
+
+=====================================output=====================================
+for (;;) {
+ continue;
+ // comment
+}
+
+for (;;) {
+ break;
+ // comment
+}
+
+for (const f of []) {
+ continue;
+ // comment
+}
+
+for (const f of []) {
+ break;
+ // comment
+}
+
+for (const f in {}) {
+ continue;
+ // comment
+}
+
+for (const f in {}) {
+ break;
+ // comment
+}
+
+while (true) {
+ continue;
+ // comment
+}
+
+while (true) {
+ break;
+ // comment
+}
+
+do {
+ continue;
+ // comment
+} while (true);
+
+do {
+ break;
+ // comment
+} while (true);
+
+label1: for (;;) {
+ continue label1;
+ // comment
+}
+
+label2: {
+ break label2;
+ // comment
+}
+
+for (;;) {
+ continue;
+ /* comment */
+}
+
+for (;;) {
+ break;
+ /* comment */
+}
+
+for (const f of []) {
+ continue;
+ /* comment */
+}
+
+for (const f of []) {
+ break;
+ /* comment */
+}
+
+for (const f in {}) {
+ continue;
+ /* comment */
+}
+
+for (const f in {}) {
+ break;
+ /* comment */
+}
+
+while (true) {
+ continue;
+ /* comment */
+}
+
+while (true) {
+ break;
+ /* comment */
+}
+
+do {
+ continue;
+ /* comment */
+} while (true);
+
+do {
+ break;
+ /* comment */
+} while (true);
+
+label1: for (;;) {
+ continue label1;
+ /* comment */
+}
+
+label2: {
+ break label2;
+ /* comment */
+}
+
+================================================================================
+`;
+
+exports[`continue-and-break-comment-without-blocks.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+for(;;) continue
+// comment
+;
+
+for (;;) break
+// comment
+;
+
+for (const f of []) continue
+// comment
+;
+
+for (const f of []) break
+// comment
+;
+
+for (const f in {}) continue
+// comment
+;
+
+for (const f in {}) break
+// comment
+;
+
+for(;;) continue // comment
+;
+
+for (;;) break // comment
+;
+
+for (const f of []) continue // comment
+;
+
+for (const f of []) break // comment
+;
+
+for (const f in {}) continue // comment
+;
+
+for (const f in {}) break // comment
+;
+
+for(;;) continue /* comment */
+;
+
+for (;;) break /* comment */
+;
+
+for (const f of []) continue /* comment */
+;
+
+for (const f of []) break /* comment */
+;
+
+for (const f in {}) continue /* comment */
+;
+
+for (const f in {}) break /* comment */
+;
+
+for(;;) continue
+/* comment */
+;
+
+for (;;) break
+/* comment */
+;
+
+for (const f of []) continue
+/* comment */
+;
+
+for (const f of []) break
+/* comment */
+;
+
+for (const f in {}) continue
+/* comment */
+;
+
+for (const f in {}) break
+/* comment */
+;
+
+label1: for (;;) continue label1 /* comment */
+;
+
+label1: for (;;) continue label1
+/* comment */
+;
+
+label1: for (;;) continue label1 // comment
+;
+
+label1: for (;;) continue label1
+// comment
+;
+
+=====================================output=====================================
+for (;;)
+ continue;
+ // comment
+
+for (;;)
+ break;
+ // comment
+
+for (const f of [])
+ continue;
+ // comment
+
+for (const f of [])
+ break;
+ // comment
+
+for (const f in {})
+ continue;
+ // comment
+
+for (const f in {})
+ break;
+ // comment
+
+for (;;)
+ continue; // comment
+
+for (;;)
+ break; // comment
+
+for (const f of [])
+ continue; // comment
+
+for (const f of [])
+ break; // comment
+
+for (const f in {})
+ continue; // comment
+
+for (const f in {})
+ break; // comment
+
+for (;;) continue; /* comment */
+
+for (;;) break; /* comment */
+
+for (const f of []) continue; /* comment */
+
+for (const f of []) break; /* comment */
+
+for (const f in {}) continue; /* comment */
+
+for (const f in {}) break; /* comment */
+
+for (;;)
+ continue;
+ /* comment */
+
+for (;;)
+ break;
+ /* comment */
+
+for (const f of [])
+ continue;
+ /* comment */
+
+for (const f of [])
+ break;
+ /* comment */
+
+for (const f in {})
+ continue;
+ /* comment */
+
+for (const f in {})
+ break;
+ /* comment */
+
+label1: for (;;) continue label1 /* comment */;
+
+label1: for (;;)
+ continue label1;
+ /* comment */
+
+label1: for (;;)
+ continue label1; // comment
+
+label1: for (;;)
+ continue label1;
+ // comment
+
+================================================================================
+`;
+
exports[`for.js format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
diff --git a/tests/format/js/for/continue-and-break-comment-1.js b/tests/format/js/for/continue-and-break-comment-1.js
new file mode 100644
index 000000000..bd83a9f64
--- /dev/null
+++ b/tests/format/js/for/continue-and-break-comment-1.js
@@ -0,0 +1,121 @@
+for(;;) {
+ continue // comment
+ ;
+}
+
+for (;;) {
+ break // comment
+ ;
+}
+
+for (const f of []) {
+ continue // comment
+ ;
+}
+
+for (const f of []) {
+ break // comment
+ ;
+}
+
+for (const f in {}) {
+ continue // comment
+ ;
+}
+
+for (const f in {}) {
+ break // comment
+ ;
+}
+
+while(true) {
+ continue // comment
+ ;
+}
+
+while (true) {
+ break // comment
+ ;
+}
+
+do {
+ continue // comment
+ ;
+} while(true);
+
+
+do {
+ break // comment
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1 // comment
+ ;
+}
+
+label2: {
+ break label2 // comment
+ ;
+};
+
+for(;;) {
+ continue /* comment */
+ ;
+}
+
+for (;;) {
+ break /* comment */
+ ;
+}
+
+for (const f of []) {
+ continue /* comment */
+ ;
+}
+
+for (const f of []) {
+ break /* comment */
+ ;
+}
+
+for (const f in {}) {
+ continue /* comment */
+ ;
+}
+
+for (const f in {}) {
+ break /* comment */
+ ;
+}
+
+while(true) {
+ continue /* comment */
+ ;
+}
+
+while (true) {
+ break /* comment */
+ ;
+}
+
+do {
+ continue /* comment */
+ ;
+} while(true);
+
+
+do {
+ break /* comment */
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1 /* comment */
+ ;
+}
+
+label2: {
+ break label2 /* comment */
+ ;
+};
diff --git a/tests/format/js/for/continue-and-break-comment-2.js b/tests/format/js/for/continue-and-break-comment-2.js
new file mode 100644
index 000000000..49d46016f
--- /dev/null
+++ b/tests/format/js/for/continue-and-break-comment-2.js
@@ -0,0 +1,145 @@
+for(;;) {
+ continue
+ // comment
+ ;
+}
+
+for (;;) {
+ break
+ // comment
+ ;
+}
+
+for (const f of []) {
+ continue
+ // comment
+ ;
+}
+
+for (const f of []) {
+ break
+ // comment
+ ;
+}
+
+for (const f in {}) {
+ continue
+ // comment
+ ;
+}
+
+for (const f in {}) {
+ break
+ // comment
+ ;
+}
+
+while(true) {
+ continue
+ // comment
+ ;
+}
+
+while (true) {
+ break
+ // comment
+ ;
+}
+
+do {
+ continue
+ // comment
+ ;
+} while(true);
+
+
+do {
+ break
+ // comment
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1
+ // comment
+ ;
+}
+
+label2: {
+ break label2
+ // comment
+ ;
+};
+
+for(;;) {
+ continue
+ /* comment */
+ ;
+}
+
+for (;;) {
+ break
+ /* comment */
+ ;
+}
+
+for (const f of []) {
+ continue
+ /* comment */
+ ;
+}
+
+for (const f of []) {
+ break
+ /* comment */
+ ;
+}
+
+for (const f in {}) {
+ continue
+ /* comment */
+ ;
+}
+
+for (const f in {}) {
+ break
+ /* comment */
+ ;
+}
+
+while(true) {
+ continue
+ /* comment */
+ ;
+}
+
+while (true) {
+ break
+ /* comment */
+ ;
+}
+
+do {
+ continue
+ /* comment */
+ ;
+} while(true);
+
+
+do {
+ break
+ /* comment */
+ ;
+} while(true);
+
+label1: for (;;) {
+ continue label1
+ /* comment */
+ ;
+}
+
+label2: {
+ break label2
+ /* comment */
+ ;
+};
diff --git a/tests/format/js/for/continue-and-break-comment-without-blocks.js b/tests/format/js/for/continue-and-break-comment-without-blocks.js
new file mode 100644
index 000000000..d68bba16e
--- /dev/null
+++ b/tests/format/js/for/continue-and-break-comment-without-blocks.js
@@ -0,0 +1,97 @@
+for(;;) continue
+// comment
+;
+
+for (;;) break
+// comment
+;
+
+for (const f of []) continue
+// comment
+;
+
+for (const f of []) break
+// comment
+;
+
+for (const f in {}) continue
+// comment
+;
+
+for (const f in {}) break
+// comment
+;
+
+for(;;) continue // comment
+;
+
+for (;;) break // comment
+;
+
+for (const f of []) continue // comment
+;
+
+for (const f of []) break // comment
+;
+
+for (const f in {}) continue // comment
+;
+
+for (const f in {}) break // comment
+;
+
+for(;;) continue /* comment */
+;
+
+for (;;) break /* comment */
+;
+
+for (const f of []) continue /* comment */
+;
+
+for (const f of []) break /* comment */
+;
+
+for (const f in {}) continue /* comment */
+;
+
+for (const f in {}) break /* comment */
+;
+
+for(;;) continue
+/* comment */
+;
+
+for (;;) break
+/* comment */
+;
+
+for (const f of []) continue
+/* comment */
+;
+
+for (const f of []) break
+/* comment */
+;
+
+for (const f in {}) continue
+/* comment */
+;
+
+for (const f in {}) break
+/* comment */
+;
+
+label1: for (;;) continue label1 /* comment */
+;
+
+label1: for (;;) continue label1
+/* comment */
+;
+
+label1: for (;;) continue label1 // comment
+;
+
+label1: for (;;) continue label1
+// comment
+;
diff --git a/tests/format/js/functional-composition/jsfmt.spec.js b/tests/format/js/functional-composition/jsfmt.spec.js
index 43bd2ba7b..152b14f34 100644
--- a/tests/format/js/functional-composition/jsfmt.spec.js
+++ b/tests/format/js/functional-composition/jsfmt.spec.js
@@ -1,5 +1,6 @@
run_spec(import.meta, ["babel", "flow", "typescript"], {
errors: {
+ acorn: [],
espree: [],
},
});
diff --git a/tests/format/js/import-assertions/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/import-assertions/__snapshots__/jsfmt.spec.js.snap
index 82047193a..62c0be91c 100644
--- a/tests/format/js/import-assertions/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/import-assertions/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`dynamic-import.js [acorn] format 1`] = `
+"Unexpected token (1:20)
+> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
+ | ^
+ 2 |"
+`;
+
exports[`dynamic-import.js [espree] format 1`] = `
"Unexpected token , (1:20)
> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
@@ -28,6 +35,16 @@ import("./foo.json", { assert: { type: "json" } });
================================================================================
`;
+exports[`empty.js [acorn] format 1`] = `
+"Unexpected token (2:33)
+ 1 | export * as foo from \\"foo.json\\"
+> 2 | export * as bar from \\"bar.json\\" assert { }
+ | ^
+ 3 | export * as baz from \\"baz.json\\" assert { /* comment */ }
+ 4 |
+ 5 | import * as foo from \\"foo.json\\""
+`;
+
exports[`empty.js [espree] format 1`] = `
"Unexpected token assert (2:33)
1 | export * as foo from \\"foo.json\\"
@@ -73,6 +90,13 @@ import * as baz from "baz.json" /* comment */;
================================================================================
`;
+exports[`multi-types.js [acorn] format 1`] = `
+"Unexpected token (1:31)
+> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\", type: \\"bar\\" };
+ | ^
+ 2 |"
+`;
+
exports[`multi-types.js [espree] format 1`] = `
"Unexpected token assert (1:31)
> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\", type: \\"bar\\" };
@@ -101,6 +125,13 @@ import json from "./foo.json" assert { type: "json", type: "bar" };
================================================================================
`;
+exports[`non-type.js [acorn] format 1`] = `
+"Unexpected token (1:28)
+> 1 | import foo from \\"foo.json\\" assert { lazy: \\"true\\" };
+ | ^
+ 2 |"
+`;
+
exports[`non-type.js [espree] format 1`] = `
"Unexpected token assert (1:28)
> 1 | import foo from \\"foo.json\\" assert { lazy: \\"true\\" };
@@ -145,6 +176,15 @@ assert({ type: "json" });
================================================================================
`;
+exports[`re-export.js [acorn] format 1`] = `
+"Unexpected token (1:33)
+> 1 | export { foo2 } from \\"foo.json\\" assert { type: \\"json\\" };
+ | ^
+ 2 | export * from \\"foo.json\\" assert { type: \\"json\\" };
+ 3 | export * as foo3 from \\"foo.json\\" assert { type: \\"json\\" };
+ 4 |"
+`;
+
exports[`re-export.js [espree] format 1`] = `
"Unexpected token assert (1:33)
> 1 | export { foo2 } from \\"foo.json\\" assert { type: \\"json\\" };
@@ -181,6 +221,13 @@ export * as foo3 from "foo.json" assert { type: "json" };
================================================================================
`;
+exports[`static-import.js [acorn] format 1`] = `
+"Unexpected token (1:31)
+> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\" };
+ | ^
+ 2 |"
+`;
+
exports[`static-import.js [espree] format 1`] = `
"Unexpected token assert (1:31)
> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\" };
@@ -209,6 +256,13 @@ import json from "./foo.json" assert { type: "json" };
================================================================================
`;
+exports[`without-from.js [acorn] format 1`] = `
+"Unexpected token (1:14)
+> 1 | import \\"foo\\" assert { type: \\"json\\" }
+ | ^
+ 2 |"
+`;
+
exports[`without-from.js [espree] format 1`] = `
"Unexpected token assert (1:14)
> 1 | import \\"foo\\" assert { type: \\"json\\" }
diff --git a/tests/format/js/import-assertions/bracket-spacing/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/import-assertions/bracket-spacing/__snapshots__/jsfmt.spec.js.snap
index 96bf68213..53f15c841 100644
--- a/tests/format/js/import-assertions/bracket-spacing/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/import-assertions/bracket-spacing/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`dynamic-import.js - {"bracketSpacing":false} [acorn] format 1`] = `
+"Unexpected token (1:20)
+> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
+ | ^
+ 2 |"
+`;
+
exports[`dynamic-import.js - {"bracketSpacing":false} [espree] format 1`] = `
"Unexpected token , (1:20)
> 1 | import(\\"./foo.json\\", { assert: { type: \\"json\\" } });
@@ -29,6 +36,12 @@ import("./foo.json", {assert: {type: "json"}});
================================================================================
`;
+exports[`empty.js - {"bracketSpacing":false} [acorn] format 1`] = `
+"Unexpected token (1:33)
+> 1 | export * as bar from \\"bar.json\\" assert { }
+ | ^"
+`;
+
exports[`empty.js - {"bracketSpacing":false} [espree] format 1`] = `
"Unexpected token assert (1:33)
> 1 | export * as bar from \\"bar.json\\" assert { }
@@ -55,6 +68,13 @@ export * as bar from "bar.json";
================================================================================
`;
+exports[`re-export.js - {"bracketSpacing":false} [acorn] format 1`] = `
+"Unexpected token (1:33)
+> 1 | export { foo2 } from \\"foo.json\\" assert { type: \\"json\\" };
+ | ^
+ 2 |"
+`;
+
exports[`re-export.js - {"bracketSpacing":false} [espree] format 1`] = `
"Unexpected token assert (1:33)
> 1 | export { foo2 } from \\"foo.json\\" assert { type: \\"json\\" };
@@ -84,6 +104,13 @@ export {foo2} from "foo.json" assert {type: "json"};
================================================================================
`;
+exports[`static-import.js - {"bracketSpacing":false} [acorn] format 1`] = `
+"Unexpected token (1:31)
+> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\" };
+ | ^
+ 2 |"
+`;
+
exports[`static-import.js - {"bracketSpacing":false} [espree] format 1`] = `
"Unexpected token assert (1:31)
> 1 | import json from \\"./foo.json\\" assert { type: \\"json\\" };
diff --git a/tests/format/js/import-assertions/bracket-spacing/jsfmt.spec.js b/tests/format/js/import-assertions/bracket-spacing/jsfmt.spec.js
index 1eaba5b14..404ff2cc7 100644
--- a/tests/format/js/import-assertions/bracket-spacing/jsfmt.spec.js
+++ b/tests/format/js/import-assertions/bracket-spacing/jsfmt.spec.js
@@ -1,6 +1,12 @@
run_spec(import.meta, ["babel"], {
bracketSpacing: false,
errors: {
+ acorn: [
+ "dynamic-import.js",
+ "static-import.js",
+ "re-export.js",
+ "empty.js",
+ ],
espree: [
"dynamic-import.js",
"static-import.js",
diff --git a/tests/format/js/import-assertions/jsfmt.spec.js b/tests/format/js/import-assertions/jsfmt.spec.js
index d50c206f9..d0fded8b0 100644
--- a/tests/format/js/import-assertions/jsfmt.spec.js
+++ b/tests/format/js/import-assertions/jsfmt.spec.js
@@ -1,5 +1,14 @@
run_spec(import.meta, ["babel", "typescript"], {
errors: {
+ acorn: [
+ "dynamic-import.js",
+ "empty.js",
+ "multi-types.js",
+ "static-import.js",
+ "re-export.js",
+ "without-from.js",
+ "non-type.js",
+ ],
espree: [
"dynamic-import.js",
"empty.js",
diff --git a/tests/format/js/in/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/in/__snapshots__/jsfmt.spec.js.snap
new file mode 100644
index 000000000..ca4e4ca0c
--- /dev/null
+++ b/tests/format/js/in/__snapshots__/jsfmt.spec.js.snap
@@ -0,0 +1,33 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`arrow-function.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+const x = () => [].includes(true) || "ontouchend" in document
+
+const y = () => [] in x
+
+=====================================output=====================================
+const x = () => [].includes(true) || "ontouchend" in document;
+
+const y = () => [] in x;
+
+================================================================================
+`;
+
+exports[`arrow-function-invalid.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+() => [] in x
+
+=====================================output=====================================
+() => [] in x;
+
+================================================================================
+`;
diff --git a/tests/format/js/in/arrow-function-invalid.js b/tests/format/js/in/arrow-function-invalid.js
new file mode 100644
index 000000000..bb4eca799
--- /dev/null
+++ b/tests/format/js/in/arrow-function-invalid.js
@@ -0,0 +1 @@
+() => [] in x
diff --git a/tests/format/js/in/arrow-function.js b/tests/format/js/in/arrow-function.js
new file mode 100644
index 000000000..7ba44a835
--- /dev/null
+++ b/tests/format/js/in/arrow-function.js
@@ -0,0 +1,3 @@
+const x = () => [].includes(true) || "ontouchend" in document
+
+const y = () => [] in x
diff --git a/tests/format/js/in/jsfmt.spec.js b/tests/format/js/in/jsfmt.spec.js
new file mode 100644
index 000000000..270de08db
--- /dev/null
+++ b/tests/format/js/in/jsfmt.spec.js
@@ -0,0 +1,3 @@
+run_spec(__dirname, ["babel", "flow", "typescript"], {
+ errors: ["arrow-function-invalid.js"],
+});
diff --git a/tests/format/js/invalid-code/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/invalid-code/__snapshots__/jsfmt.spec.js.snap
index dce8de945..a40691a62 100644
--- a/tests/format/js/invalid-code/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/invalid-code/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`duplicate_bindings.js [acorn] format 1`] = `
+"Identifier 'A' has already been declared (1:19)
+> 1 | class A{} class A{}
+ | ^
+ 2 |"
+`;
+
exports[`duplicate_bindings.js [espree] format 1`] = `
"Identifier 'A' has already been declared (1:19)
> 1 | class A{} class A{}
diff --git a/tests/format/js/invalid-code/jsfmt.spec.js b/tests/format/js/invalid-code/jsfmt.spec.js
index 1d614c39b..0e68cd0b8 100644
--- a/tests/format/js/invalid-code/jsfmt.spec.js
+++ b/tests/format/js/invalid-code/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true } });
+run_spec(__dirname, ["babel"], { errors: { acorn: true, espree: true } });
diff --git a/tests/format/js/logical-assignment/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/logical-assignment/__snapshots__/jsfmt.spec.js.snap
index 93320616a..cba114fc5 100644
--- a/tests/format/js/logical-assignment/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/logical-assignment/__snapshots__/jsfmt.spec.js.snap
@@ -2,7 +2,7 @@
exports[`logical-assignment.js format 1`] = `
====================================options=====================================
-parsers: ["babel", "typescript"]
+parsers: ["babel", "typescript", "flow"]
printWidth: 80
| printWidth
=====================================input======================================
diff --git a/tests/format/js/logical-assignment/jsfmt.spec.js b/tests/format/js/logical-assignment/jsfmt.spec.js
index de26a5874..61966a7d0 100644
--- a/tests/format/js/logical-assignment/jsfmt.spec.js
+++ b/tests/format/js/logical-assignment/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["babel", "typescript"]);
+run_spec(__dirname, ["babel", "typescript", "flow"]);
diff --git a/tests/format/js/module-blocks/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/module-blocks/__snapshots__/jsfmt.spec.js.snap
index 2e2f28a42..1ff2ad357 100644
--- a/tests/format/js/module-blocks/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/module-blocks/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`comments.js [acorn] format 1`] = `
+"Unexpected token (1:32)
+> 1 | const m = /*A1*/ module /*A2*/ { /*A3*/
+ | ^
+ 2 | /*A4*/
+ 3 | export const foo = \\"foo\\";
+ 4 | export { foo }; /*A5*/"
+`;
+
exports[`comments.js [espree] format 1`] = `
"Unexpected token { (1:32)
> 1 | const m = /*A1*/ module /*A2*/ { /*A3*/
@@ -52,6 +61,15 @@ const m2 = module {
================================================================================
`;
+exports[`module-blocks.js [acorn] format 1`] = `
+"Unexpected token (1:8)
+> 1 | module { await 3 };
+ | ^
+ 2 |
+ 3 | class B {
+ 4 | #p() {"
+`;
+
exports[`module-blocks.js [espree] format 1`] = `
"Unexpected token { (1:8)
> 1 | module { await 3 };
@@ -187,6 +205,15 @@ const m = module;
================================================================================
`;
+exports[`range.js [acorn] format 1`] = `
+"Unexpected token (1:26)
+> 1 | let moduleBlock = module { export let y = 1;
+ | ^
+ 2 | };
+ 3 |
+ 4 | foo(module { export let foo = \\"foo\\"; })"
+`;
+
exports[`range.js [espree] format 1`] = `
"Unexpected token { (1:26)
> 1 | let moduleBlock = module { export let y = 1;
@@ -234,6 +261,15 @@ foo(module {
================================================================================
`;
+exports[`worker.js [acorn] format 1`] = `
+"Unexpected token (1:32)
+> 1 | let worker = new Worker(module {
+ | ^
+ 2 | onmessage = function({data}) {
+ 3 | let mod = import(data);
+ 4 | postMessage(mod.fn());"
+`;
+
exports[`worker.js [espree] format 1`] = `
"Unexpected token { (1:32)
> 1 | let worker = new Worker(module {
diff --git a/tests/format/js/module-blocks/jsfmt.spec.js b/tests/format/js/module-blocks/jsfmt.spec.js
index a915ddeb4..89ccfe8ee 100644
--- a/tests/format/js/module-blocks/jsfmt.spec.js
+++ b/tests/format/js/module-blocks/jsfmt.spec.js
@@ -1,5 +1,6 @@
run_spec(import.meta, ["babel"], {
errors: {
+ acorn: ["module-blocks.js", "range.js", "comments.js", "worker.js"],
espree: ["module-blocks.js", "range.js", "comments.js", "worker.js"],
meriyah: ["module-blocks.js", "range.js", "comments.js", "worker.js"],
},
diff --git a/tests/format/js/multiparser-invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/multiparser-invalid/__snapshots__/jsfmt.spec.js.snap
index 45c5ec714..ba3febd04 100644
--- a/tests/format/js/multiparser-invalid/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/multiparser-invalid/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,16 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`text.js [acorn] format 1`] = `
+"Bad escape sequence in untagged template literal (6:18)
+ 4 | foo = markdown\`\\\\u{prettier}\\\\u{0065}\`;
+ 5 | foo = css\`\\\\u{prettier}\\\\u{0065}\`;
+> 6 | foo = /* HTML */\`\\\\u{prettier}\\\\u{0065}\`;
+ | ^
+ 7 | foo = /* GraphQL */\`\\\\u{prettier}\\\\u{0065}\`;
+ 8 |
+ 9 | foo = foo\`\\\\u{prettier}\${foo}pr\\\\u{0065}ttier\`;"
+`;
+
exports[`text.js [espree] format 1`] = `
"Bad escape sequence in untagged template literal (6:18)
4 | foo = markdown\`\\\\u{prettier}\\\\u{0065}\`;
diff --git a/tests/format/js/multiparser-invalid/jsfmt.spec.js b/tests/format/js/multiparser-invalid/jsfmt.spec.js
index e947e6d2c..0f7c244be 100644
--- a/tests/format/js/multiparser-invalid/jsfmt.spec.js
+++ b/tests/format/js/multiparser-invalid/jsfmt.spec.js
@@ -1,3 +1,9 @@
-run_spec(import.meta, ["babel", "flow", "typescript"], {
- errors: { espree: true, flow: true, typescript: true, meriyah: true },
+run_spec(__dirname, ["babel", "flow", "typescript"], {
+ errors: {
+ acorn: true,
+ espree: true,
+ flow: true,
+ typescript: true,
+ meriyah: true,
+ },
});
diff --git a/tests/format/js/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap
index 874fb43cd..cb804da2d 100644
--- a/tests/format/js/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/no-semi-babylon-extensions/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`no-semi.js [acorn] format 1`] = `
+"Unexpected token (2:2)
+ 1 | a
+> 2 | ;::b.c
+ | ^
+ 3 |
+ 4 | class A {
+ 5 | a = b;"
+`;
+
exports[`no-semi.js [espree] format 1`] = `
"Unexpected token : (2:2)
1 | a
@@ -20,6 +30,16 @@ exports[`no-semi.js [meriyah] format 1`] = `
5 | a = b;"
`;
+exports[`no-semi.js - {"semi":false} [acorn] format 1`] = `
+"Unexpected token (2:2)
+ 1 | a
+> 2 | ;::b.c
+ | ^
+ 3 |
+ 4 | class A {
+ 5 | a = b;"
+`;
+
exports[`no-semi.js - {"semi":false} [espree] format 1`] = `
"Unexpected token : (2:2)
1 | a
diff --git a/tests/format/js/no-semi-babylon-extensions/jsfmt.spec.js b/tests/format/js/no-semi-babylon-extensions/jsfmt.spec.js
index 9b66df6e2..7b852963c 100644
--- a/tests/format/js/no-semi-babylon-extensions/jsfmt.spec.js
+++ b/tests/format/js/no-semi-babylon-extensions/jsfmt.spec.js
@@ -1,5 +1,7 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
-run_spec(import.meta, ["babel"], {
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
+run_spec(__dirname, ["babel"], {
semi: false,
- errors: { espree: true, meriyah: true },
+ errors: { acorn: true, espree: true, meriyah: true },
});
diff --git a/tests/format/js/object-property-comment/jsfmt.spec.js b/tests/format/js/object-property-comment/jsfmt.spec.js
index e118fe636..127889b64 100644
--- a/tests/format/js/object-property-comment/jsfmt.spec.js
+++ b/tests/format/js/object-property-comment/jsfmt.spec.js
@@ -1,3 +1,3 @@
-run_spec(import.meta, ["babel", "flow"], {
- errors: { espree: ["comment.js"] },
+run_spec(__dirname, ["babel", "flow"], {
+ errors: { acorn: ["comment.js"], espree: ["comment.js"] },
});
diff --git a/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap
index 5a983b7a0..d7b950671 100644
--- a/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/objects/__snapshots__/jsfmt.spec.js.snap
@@ -52,6 +52,17 @@ const Component2 = ({ props }) => Test;
================================================================================
`;
+exports[`expression.js [acorn] format 1`] = `
+"Unexpected token (5:4)
+ 3 | a = () => ({}).x;
+ 4 | ({} && a, b);
+> 5 | ({}::b, 0);
+ | ^
+ 6 | ({}::b()\`\`[''].c++ && 0 ? 0 : 0, 0);
+ 7 | ({}(), 0);
+ 8 | ({} = 0);"
+`;
+
exports[`expression.js [espree] format 1`] = `
"Unexpected token : (5:4)
3 | a = () => ({}).x;
diff --git a/tests/format/js/objects/jsfmt.spec.js b/tests/format/js/objects/jsfmt.spec.js
index 6463789ff..19a2515dc 100644
--- a/tests/format/js/objects/jsfmt.spec.js
+++ b/tests/format/js/objects/jsfmt.spec.js
@@ -1,5 +1,6 @@
run_spec(import.meta, ["babel", "typescript"], {
errors: {
+ acorn: ["expression.js"],
espree: ["expression.js"],
typescript: ["expression.js"],
meriyah: ["expression.js"],
diff --git a/tests/format/js/partial-application/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/partial-application/__snapshots__/jsfmt.spec.js.snap
index 6ce064d39..13e4b5e30 100644
--- a/tests/format/js/partial-application/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/partial-application/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`test.js [acorn] format 1`] = `
+"Unexpected token (1:23)
+> 1 | const addOne = add(1, ?); // apply from the left
+ | ^
+ 2 | addOne(2); // 3
+ 3 |
+ 4 | const addTen = add(?, 10); // apply from the right"
+`;
+
exports[`test.js [espree] format 1`] = `
"Unexpected token ? (1:23)
> 1 | const addOne = add(1, ?); // apply from the left
diff --git a/tests/format/js/partial-application/jsfmt.spec.js b/tests/format/js/partial-application/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/partial-application/jsfmt.spec.js
+++ b/tests/format/js/partial-application/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/pipeline-operator/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/pipeline-operator/__snapshots__/jsfmt.spec.js.snap
index 59e96578a..eea2e3f96 100644
--- a/tests/format/js/pipeline-operator/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/pipeline-operator/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`block-comments.js [acorn] format 1`] = `
+"Unexpected token (2:2)
+ 1 | bifornCringerMoshedPerplexSawder
+> 2 | |> foo1
+ | ^
+ 3 | |> foo2 /* comment1 */
+ 4 | |> foo3 /* comment2 */
+ 5 | |> kochabCooieGameOnOboleUnweave"
+`;
+
exports[`block-comments.js [espree] format 1`] = `
"Unexpected token > (2:2)
1 | bifornCringerMoshedPerplexSawder
@@ -44,6 +54,16 @@ bifornCringerMoshedPerplexSawder
================================================================================
`;
+exports[`fsharp_style_pipeline_operator.js [acorn] format 1`] = `
+"Unexpected token (2:4)
+ 1 | promise
+> 2 | |> await
+ | ^
+ 3 | |> x => doubleSay(x, ', ')
+ 4 | |> capitalize
+ 5 | |> x => x + '!'"
+`;
+
exports[`fsharp_style_pipeline_operator.js [espree] format 1`] = `
"Unexpected token > (2:4)
1 | promise
@@ -159,6 +179,15 @@ const f = x |> (f) => f |> f;
================================================================================
`;
+exports[`hack_pipeline_operator.js [acorn] format 1`] = `
+"Unexpected token (1:4)
+> 1 | a |> await % |> % * 3;
+ | ^
+ 2 |
+ 3 | foo
+ 4 | |> await %"
+`;
+
exports[`hack_pipeline_operator.js [espree] format 1`] = `
"Unexpected token > (1:4)
> 1 | a |> await % |> % * 3;
@@ -291,6 +320,15 @@ async function* f() {
================================================================================
`;
+exports[`minimal_pipeline_operator.js [acorn] format 1`] = `
+"Unexpected token (1:4)
+> 1 | a |> b |> c;
+ | ^
+ 2 |
+ 3 | a |> (b |> c);
+ 4 |"
+`;
+
exports[`minimal_pipeline_operator.js [espree] format 1`] = `
"Unexpected token > (1:4)
> 1 | a |> b |> c;
diff --git a/tests/format/js/pipeline-operator/jsfmt.spec.js b/tests/format/js/pipeline-operator/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/pipeline-operator/jsfmt.spec.js
+++ b/tests/format/js/pipeline-operator/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/private-in/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/private-in/__snapshots__/jsfmt.spec.js.snap
index 877f0ea65..7d384bd0d 100644
--- a/tests/format/js/private-in/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/private-in/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`private-in.js [acorn] format 1`] = `
+"Unexpected token (1:5)
+> 1 | if (#prop in obj) {
+ | ^
+ 2 | }
+ 3 |
+ 4 | #prop in obj;"
+`;
+
exports[`private-in.js [espree] format 1`] = `
"Unexpected token #prop (1:5)
> 1 | if (#prop in obj) {
diff --git a/tests/format/js/private-in/jsfmt.spec.js b/tests/format/js/private-in/jsfmt.spec.js
index 1d614c39b..0e68cd0b8 100644
--- a/tests/format/js/private-in/jsfmt.spec.js
+++ b/tests/format/js/private-in/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true } });
+run_spec(__dirname, ["babel"], { errors: { acorn: true, espree: true } });
diff --git a/tests/format/js/record/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/record/__snapshots__/jsfmt.spec.js.snap
index 0c7712f19..8bfef37d2 100644
--- a/tests/format/js/record/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/record/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,15 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`computed.js [acorn] format 1`] = `
+"Unexpected character '{' (2:9)
+ 1 | const key = \\"a\\";
+> 2 | assert(#{ [key]: 1 } === #{ a: 1 })
+ | ^
+ 3 | assert(#{ [key.toUpperCase()]: 1 } === #{ A: 1 })
+ 4 |
+ 5 | assert(#{ [true]: 1 } === #{ true: 1 })"
+`;
+
exports[`computed.js [espree] format 1`] = `
"Unexpected character '{' (2:9)
1 | const key = \\"a\\";
@@ -50,6 +60,15 @@ assert(#{ [9 + 1]: "ten" } === #{ ["10"]: "ten" });
================================================================================
`;
+exports[`destructuring.js [acorn] format 1`] = `
+"Unexpected character '{' (1:19)
+> 1 | const { a, b } = #{ a: 1, b: 2 };
+ | ^
+ 2 | assert(a === 1);
+ 3 | assert(b === 2);
+ 4 |"
+`;
+
exports[`destructuring.js [espree] format 1`] = `
"Unexpected character '{' (1:19)
> 1 | const { a, b } = #{ a: 1, b: 2 };
@@ -98,6 +117,15 @@ assert(rest.c === 3);
================================================================================
`;
+exports[`record.js [acorn] format 1`] = `
+"Unexpected character '{' (1:18)
+> 1 | const record1 = #{
+ | ^
+ 2 | a: 1,
+ 3 | b: 2,
+ 4 | c: 3,"
+`;
+
exports[`record.js [espree] format 1`] = `
"Unexpected character '{' (1:18)
> 1 | const record1 = #{
@@ -160,6 +188,15 @@ assert(record1.d?.a === undefined);
================================================================================
`;
+exports[`shorthand.js [acorn] format 1`] = `
+"Unexpected character '{' (2:17)
+ 1 | const url = \\"https://github.com/tc39/proposal-record-tuple\\";
+> 2 | const record = #{ url }
+ | ^
+ 3 | console.log(record.url) // https://github.com/tc39/proposal-record-tuple
+ 4 |"
+`;
+
exports[`shorthand.js [espree] format 1`] = `
"Unexpected character '{' (2:17)
1 | const url = \\"https://github.com/tc39/proposal-record-tuple\\";
@@ -196,6 +233,15 @@ console.log(record.url); // https://github.com/tc39/proposal-record-tuple
================================================================================
`;
+exports[`spread.js [acorn] format 1`] = `
+"Unexpected character '{' (1:19)
+> 1 | const formData = #{ title: \\"Implement all the things\\" }
+ | ^
+ 2 | const taskNow = #{ id: 42, status: \\"WIP\\", ...formData }
+ 3 | const taskLater = #{ ...taskNow, status: \\"DONE\\" }
+ 4 |"
+`;
+
exports[`spread.js [espree] format 1`] = `
"Unexpected character '{' (1:19)
> 1 | const formData = #{ title: \\"Implement all the things\\" }
@@ -238,6 +284,15 @@ assert(taskLater === #{ status: "DONE", title: formData.title, id: 42 });
================================================================================
`;
+exports[`syntax.js [acorn] format 1`] = `
+"Unexpected character '{' (1:2)
+> 1 | #{}
+ | ^
+ 2 | #{ a: 1, b: 2 }
+ 3 | #{ a: 1, b: #[2, 3, #{ c: 4 }] }
+ 4 |"
+`;
+
exports[`syntax.js [espree] format 1`] = `
"Unexpected character '{' (1:2)
> 1 | #{}
diff --git a/tests/format/js/record/jsfmt.spec.js b/tests/format/js/record/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/record/jsfmt.spec.js
+++ b/tests/format/js/record/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap
index 16fca66a6..738db240d 100644
--- a/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/regex/__snapshots__/jsfmt.spec.js.snap
@@ -41,3 +41,45 @@ printWidth: 80
================================================================================
`;
+
+exports[`v-flag.js [acorn] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/v;
+ | ^
+ 2 |"
+`;
+
+exports[`v-flag.js [espree] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/v;
+ | ^
+ 2 |"
+`;
+
+exports[`v-flag.js [flow] format 1`] = `
+"Invalid flags supplied to RegExp constructor 'v' (1:5)
+> 1 | /a/v;
+ | ^
+ 2 |"
+`;
+
+exports[`v-flag.js [meriyah] format 1`] = `
+"[1:3]: Unexpected regular expression flag (1:3)
+> 1 | /a/v;
+ | ^
+ 2 |"
+`;
+
+exports[`v-flag.js format 1`] = `
+====================================options=====================================
+parsers: ["babel", "flow", "typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+/a/v;
+
+=====================================output=====================================
+/a/v;
+
+================================================================================
+`;
diff --git a/tests/format/js/regex/jsfmt.spec.js b/tests/format/js/regex/jsfmt.spec.js
index a57d63b6d..3efced8a8 100644
--- a/tests/format/js/regex/jsfmt.spec.js
+++ b/tests/format/js/regex/jsfmt.spec.js
@@ -1,6 +1,8 @@
run_spec(import.meta, ["babel", "flow", "typescript"], {
errors: {
- flow: ["d-flag.js"],
- meriyah: ["d-flag.js"],
+ flow: ["d-flag.js", "v-flag.js"],
+ acorn: ["v-flag.js"],
+ espree: ["v-flag.js"],
+ meriyah: ["d-flag.js", "v-flag.js"],
},
});
diff --git a/tests/format/js/regex/v-flag.js b/tests/format/js/regex/v-flag.js
new file mode 100644
index 000000000..04ee6ccf7
--- /dev/null
+++ b/tests/format/js/regex/v-flag.js
@@ -0,0 +1 @@
+/a/v;
diff --git a/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap
index 53dd4213b..a89729cea 100644
--- a/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap
@@ -2,7 +2,7 @@
exports[`interfaces.js format 1`] = `
====================================options=====================================
-parsers: ["espree", "meriyah", "babel"]
+parsers: ["acorn", "espree", "meriyah", "babel"]
printWidth: 80
| printWidth
=====================================input======================================
diff --git a/tests/format/js/reserved-word/jsfmt.spec.js b/tests/format/js/reserved-word/jsfmt.spec.js
index 09620456a..9128b0f44 100644
--- a/tests/format/js/reserved-word/jsfmt.spec.js
+++ b/tests/format/js/reserved-word/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["espree", "meriyah", "babel"]);
+run_spec(__dirname, ["acorn", "espree", "meriyah", "babel"]);
diff --git a/tests/format/js/rest/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/rest/__snapshots__/jsfmt.spec.js.snap
index 0c9c293cd..14bbc72c2 100644
--- a/tests/format/js/rest/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/rest/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`trailing-commas.js - {"trailingComma":"all"} [acorn] format 1`] = `
+"Unexpected token (1:9)
+> 1 | declare class C {
+ | ^
+ 2 | f(
+ 3 | superSuperSuperSuperSuperSuperSuperSuperSuperSuperSuperSuperSuperSuperLong,
+ 4 | ...args"
+`;
+
exports[`trailing-commas.js - {"trailingComma":"all"} [espree] format 1`] = `
"Unexpected token class (1:9)
> 1 | declare class C {
diff --git a/tests/format/js/rest/jsfmt.spec.js b/tests/format/js/rest/jsfmt.spec.js
index 0a437a931..a3e06af69 100644
--- a/tests/format/js/rest/jsfmt.spec.js
+++ b/tests/format/js/rest/jsfmt.spec.js
@@ -1,4 +1,4 @@
run_spec(import.meta, ["babel", "flow"], {
trailingComma: "all",
- errors: { espree: true, meriyah: true },
+ errors: { acorn: true, espree: true, meriyah: true },
});
diff --git a/tests/format/js/sloppy-mode/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/sloppy-mode/__snapshots__/jsfmt.spec.js.snap
index f803887da..4e9094e7c 100644
--- a/tests/format/js/sloppy-mode/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/sloppy-mode/__snapshots__/jsfmt.spec.js.snap
@@ -73,6 +73,13 @@ if (false) function foo() {}
================================================================================
`;
+exports[`function-declaration-in-while.js [acorn] format 1`] = `
+"Unexpected token (1:15)
+> 1 | while (false) function foo(){}
+ | ^
+ 2 |"
+`;
+
exports[`function-declaration-in-while.js [espree] format 1`] = `
"Unexpected token function (1:15)
> 1 | while (false) function foo(){}
diff --git a/tests/format/js/sloppy-mode/jsfmt.spec.js b/tests/format/js/sloppy-mode/jsfmt.spec.js
index d81a63102..f9d08b32c 100644
--- a/tests/format/js/sloppy-mode/jsfmt.spec.js
+++ b/tests/format/js/sloppy-mode/jsfmt.spec.js
@@ -1,6 +1,7 @@
run_spec(import.meta, ["babel", "flow", "typescript"], {
errors: {
flow: ["function-declaration-in-while.js"],
+ acorn: ["function-declaration-in-while.js"],
espree: ["function-declaration-in-while.js"],
meriyah: ["function-declaration-in-while.js"],
},
diff --git a/tests/format/js/strings/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/strings/__snapshots__/jsfmt.spec.js.snap
index 2628d9838..115e2a3c6 100644
--- a/tests/format/js/strings/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/strings/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,16 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`non-octal-eight-and-nine.js [acorn] format 1`] = `
+"Invalid escape sequence (3:3)
+ 1 | // https://github.com/babel/babel/pull/11852
+ 2 |
+> 3 | \\"\\\\8\\",\\"\\\\9\\";
+ | ^
+ 4 | () => {
+ 5 | \\"use strict\\";
+ 6 | \\"\\\\8\\", \\"\\\\9\\";"
+`;
+
exports[`non-octal-eight-and-nine.js [espree] format 1`] = `
"Invalid escape sequence (3:3)
1 | // https://github.com/babel/babel/pull/11852
@@ -11,6 +22,17 @@ exports[`non-octal-eight-and-nine.js [espree] format 1`] = `
6 | \\"\\\\8\\", \\"\\\\9\\";"
`;
+exports[`non-octal-eight-and-nine.js - {"trailingComma":"all"} [acorn] format 1`] = `
+"Invalid escape sequence (3:3)
+ 1 | // https://github.com/babel/babel/pull/11852
+ 2 |
+> 3 | \\"\\\\8\\",\\"\\\\9\\";
+ | ^
+ 4 | () => {
+ 5 | \\"use strict\\";
+ 6 | \\"\\\\8\\", \\"\\\\9\\";"
+`;
+
exports[`non-octal-eight-and-nine.js - {"trailingComma":"all"} [espree] format 1`] = `
"Invalid escape sequence (3:3)
1 | // https://github.com/babel/babel/pull/11852
diff --git a/tests/format/js/strings/jsfmt.spec.js b/tests/format/js/strings/jsfmt.spec.js
index 2895a2c25..d9119885f 100644
--- a/tests/format/js/strings/jsfmt.spec.js
+++ b/tests/format/js/strings/jsfmt.spec.js
@@ -1,7 +1,13 @@
-run_spec(import.meta, ["babel", "flow"], {
- errors: { espree: ["non-octal-eight-and-nine.js"] },
+run_spec(__dirname, ["babel", "flow"], {
+ errors: {
+ acorn: ["non-octal-eight-and-nine.js"],
+ espree: ["non-octal-eight-and-nine.js"],
+ },
});
-run_spec(import.meta, ["babel", "flow"], {
+run_spec(__dirname, ["babel", "flow"], {
trailingComma: "all",
- errors: { espree: ["non-octal-eight-and-nine.js"] },
+ errors: {
+ acorn: ["non-octal-eight-and-nine.js"],
+ espree: ["non-octal-eight-and-nine.js"],
+ },
});
diff --git a/tests/format/js/switch/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/switch/__snapshots__/jsfmt.spec.js.snap
index de7eb2171..9a4cf4dca 100644
--- a/tests/format/js/switch/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/switch/__snapshots__/jsfmt.spec.js.snap
@@ -30,6 +30,41 @@ switch(x) {
}
}
+switch(x) {
+ default: // comment
+ break;
+}
+
+switch(x) {
+ default: // comment
+ {break;}
+}
+
+switch(x) {
+ default: {// comment
+ break;}
+}
+
+switch(x) {
+ default: /* comment */
+ break;
+}
+
+switch(x) {
+ default: /* comment */
+ {break;}
+}
+
+switch(x) {
+ default: {/* comment */
+ break;}
+}
+
+switch(x) {
+ default: /* comment */ {
+ break;}
+}
+
=====================================output=====================================
switch (true) {
case true:
@@ -55,6 +90,49 @@ switch (x) {
}
}
+switch (x) {
+ default: // comment
+ break;
+}
+
+switch (x) {
+ default: {
+ // comment
+ break;
+ }
+}
+
+switch (x) {
+ default: {
+ // comment
+ break;
+ }
+}
+
+switch (x) {
+ default: /* comment */
+ break;
+}
+
+switch (x) {
+ default: /* comment */ {
+ break;
+ }
+}
+
+switch (x) {
+ default: {
+ /* comment */
+ break;
+ }
+}
+
+switch (x) {
+ default: /* comment */ {
+ break;
+ }
+}
+
================================================================================
`;
diff --git a/tests/format/js/switch/comments.js b/tests/format/js/switch/comments.js
index d91b1e9ed..42dceadbb 100644
--- a/tests/format/js/switch/comments.js
+++ b/tests/format/js/switch/comments.js
@@ -21,3 +21,38 @@ switch(x) {
case y: {
}
}
+
+switch(x) {
+ default: // comment
+ break;
+}
+
+switch(x) {
+ default: // comment
+ {break;}
+}
+
+switch(x) {
+ default: {// comment
+ break;}
+}
+
+switch(x) {
+ default: /* comment */
+ break;
+}
+
+switch(x) {
+ default: /* comment */
+ {break;}
+}
+
+switch(x) {
+ default: {/* comment */
+ break;}
+}
+
+switch(x) {
+ default: /* comment */ {
+ break;}
+}
diff --git a/tests/format/js/throw_expressions/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/throw_expressions/__snapshots__/jsfmt.spec.js.snap
index 755a9af74..8c9e74ea2 100644
--- a/tests/format/js/throw_expressions/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/throw_expressions/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`throw_expression.js [acorn] format 1`] = `
+"Unexpected token (1:26)
+> 1 | function save(filename = throw new TypeError(\\"Argument required\\")) {}
+ | ^
+ 2 |
+ 3 | lint(ast, {
+ 4 | with: () => throw new Error(\\"avoid using 'with' statements.\\")"
+`;
+
exports[`throw_expression.js [espree] format 1`] = `
"Unexpected token throw (1:26)
> 1 | function save(filename = throw new TypeError(\\"Argument required\\")) {}
diff --git a/tests/format/js/throw_expressions/jsfmt.spec.js b/tests/format/js/throw_expressions/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/throw_expressions/jsfmt.spec.js
+++ b/tests/format/js/throw_expressions/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/js/trailing-whitespace/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/trailing-whitespace/__snapshots__/jsfmt.spec.js.snap
index 4f337ad8f..27bf58269 100644
--- a/tests/format/js/trailing-whitespace/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/trailing-whitespace/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`trailing.js [acorn] format 1`] = `
+"Unexpected token (1:8)
+> 1 | export type Result = | { kind: \\"not-test-editor1\\" } | { kind: \\"not-test-editor2\\" };
+ | ^
+ 2 |
+ 3 | // Note: there are trailing whitespace in this file
+ 4 | \`"
+`;
+
exports[`trailing.js [espree] format 1`] = `
"Unexpected token type (1:8)
> 1 | export type Result = | { kind: \\"not-test-editor1\\" } | { kind: \\"not-test-editor2\\" };
diff --git a/tests/format/js/trailing-whitespace/jsfmt.spec.js b/tests/format/js/trailing-whitespace/jsfmt.spec.js
index 3ee7de8c0..0d5dea140 100644
--- a/tests/format/js/trailing-whitespace/jsfmt.spec.js
+++ b/tests/format/js/trailing-whitespace/jsfmt.spec.js
@@ -1,3 +1,3 @@
-run_spec(import.meta, ["babel", "flow", "typescript"], {
- errors: { espree: true, meriyah: true },
+run_spec(__dirname, ["babel", "flow", "typescript"], {
+ errors: { acorn: true, espree: true, meriyah: true },
});
diff --git a/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap
index b5b7ce713..0670f960b 100644
--- a/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`destructuring.js [acorn] format 1`] = `
+"Unexpected character '[' (1:17)
+> 1 | const [a, b] = #[1, 2];
+ | ^
+ 2 | assert(a === 1);
+ 3 | assert(b === 2);
+ 4 |"
+`;
+
exports[`destructuring.js [espree] format 1`] = `
"Unexpected character '[' (1:17)
> 1 | const [a, b] = #[1, 2];
@@ -55,6 +64,13 @@ exports[`invalid-tuple-holes.js [__babel_estree] format 1`] = `
2 |"
`;
+exports[`invalid-tuple-holes.js [acorn] format 1`] = `
+"Unexpected character '[' (1:2)
+> 1 | #[,]
+ | ^
+ 2 |"
+`;
+
exports[`invalid-tuple-holes.js [babel] format 1`] = `
"Unexpected token ','. (1:4)
> 1 | #[,]
@@ -76,6 +92,15 @@ exports[`invalid-tuple-holes.js [meriyah] format 1`] = `
2 |"
`;
+exports[`syntax.js [acorn] format 1`] = `
+"Unexpected character '[' (1:2)
+> 1 | #[]
+ | ^
+ 2 | #[1, 2]
+ 3 | #[1, 2, #{ a: 3 }]
+ 4 |"
+`;
+
exports[`syntax.js [espree] format 1`] = `
"Unexpected character '[' (1:2)
> 1 | #[]
@@ -112,6 +137,15 @@ printWidth: 80
================================================================================
`;
+exports[`tuple.js [acorn] format 1`] = `
+"Unexpected character '[' (1:17)
+> 1 | const tuple1 = #[1, 2, 3];
+ | ^
+ 2 |
+ 3 | assert(tuple1[0] === 1);
+ 4 |"
+`;
+
exports[`tuple.js [espree] format 1`] = `
"Unexpected character '[' (1:17)
> 1 | const tuple1 = #[1, 2, 3];
@@ -176,6 +210,13 @@ assert(tuple5 === #[2, 2, 3, 4]);
================================================================================
`;
+exports[`tuple-trailing-comma.js [acorn] format 1`] = `
+"Unexpected character '[' (1:2)
+> 1 | #[1,]
+ | ^
+ 2 |"
+`;
+
exports[`tuple-trailing-comma.js [espree] format 1`] = `
"Unexpected character '[' (1:2)
> 1 | #[1,]
diff --git a/tests/format/js/tuple/jsfmt.spec.js b/tests/format/js/tuple/jsfmt.spec.js
index 4c301dfd1..6d44d8778 100644
--- a/tests/format/js/tuple/jsfmt.spec.js
+++ b/tests/format/js/tuple/jsfmt.spec.js
@@ -2,6 +2,7 @@ run_spec(import.meta, ["babel"], {
errors: {
babel: ["invalid-tuple-holes.js"],
__babel_estree: ["invalid-tuple-holes.js"],
+ acorn: true,
espree: true,
meriyah: true,
},
diff --git a/tests/format/js/v8_intrinsic/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/v8_intrinsic/__snapshots__/jsfmt.spec.js.snap
index e9849078c..5d959f0a7 100644
--- a/tests/format/js/v8_intrinsic/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/js/v8_intrinsic/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,13 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`avoid-conflicts-to-pipeline.js [acorn] format 1`] = `
+"Unexpected token (2:16)
+ 1 | // |>
+> 2 | const status = %GetOptimizationStatus(fn);
+ | ^
+ 3 |"
+`;
+
exports[`avoid-conflicts-to-pipeline.js [espree] format 1`] = `
"Unexpected token % (2:16)
1 | // |>
@@ -32,6 +40,16 @@ const status = %GetOptimizationStatus(fn);
================================================================================
`;
+exports[`intrinsic_call.js [acorn] format 1`] = `
+"Unexpected token (2:13)
+ 1 | function doSmth() {
+> 2 | %DebugPrint
+ | ^
+ 3 | (
+ 4 | foo )
+ 5 | }"
+`;
+
exports[`intrinsic_call.js [espree] format 1`] = `
"Unexpected token % (2:13)
1 | function doSmth() {
diff --git a/tests/format/js/v8_intrinsic/jsfmt.spec.js b/tests/format/js/v8_intrinsic/jsfmt.spec.js
index 7cc47ec6a..8ec1e5a27 100644
--- a/tests/format/js/v8_intrinsic/jsfmt.spec.js
+++ b/tests/format/js/v8_intrinsic/jsfmt.spec.js
@@ -1 +1,3 @@
-run_spec(import.meta, ["babel"], { errors: { espree: true, meriyah: true } });
+run_spec(__dirname, ["babel"], {
+ errors: { acorn: true, espree: true, meriyah: true },
+});
diff --git a/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap b/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap
index acb3d774c..764b7cf2e 100644
--- a/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/jsx/jsx/__snapshots__/jsfmt.spec.js.snap
@@ -616,6 +616,398 @@ singleQuote: true
================================================================================
`;
+exports[`await.js - {"singleQuote":false,"jsxSingleQuote":false} format 1`] = `
+====================================options=====================================
+jsxSingleQuote: false
+parsers: ["flow", "babel", "typescript"]
+printWidth: 80
+singleQuote: false
+ | printWidth
+=====================================input======================================
+async function testFunction() {
+ const short = <>
+ {await Promise.all(
+ hierarchyCriticism
+ )}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(
+ hierarchyCriticism
+ )}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+
+ const long = <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {await hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+ >
+
+ const jsx = <>
+ {await (
+ material education original articulate parameter
+ )}
+ >
+}
+
+=====================================output=====================================
+async function testFunction() {
+ const short = (
+ <>
+ {await Promise.all(hierarchyCriticism)}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(hierarchyCriticism)}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+ );
+
+ const long = (
+ <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ await hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+ >
+ );
+
+ const jsx = (
+ <>
+ {await (
+
+ material education original articulate parameter
+
+ )}
+ >
+ );
+}
+
+================================================================================
+`;
+
+exports[`await.js - {"singleQuote":false,"jsxSingleQuote":true} format 1`] = `
+====================================options=====================================
+jsxSingleQuote: true
+parsers: ["flow", "babel", "typescript"]
+printWidth: 80
+singleQuote: false
+ | printWidth
+=====================================input======================================
+async function testFunction() {
+ const short = <>
+ {await Promise.all(
+ hierarchyCriticism
+ )}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(
+ hierarchyCriticism
+ )}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+
+ const long = <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {await hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+ >
+
+ const jsx = <>
+ {await (
+ material education original articulate parameter
+ )}
+ >
+}
+
+=====================================output=====================================
+async function testFunction() {
+ const short = (
+ <>
+ {await Promise.all(hierarchyCriticism)}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(hierarchyCriticism)}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+ );
+
+ const long = (
+ <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ await hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+ >
+ );
+
+ const jsx = (
+ <>
+ {await (
+
+ material education original articulate parameter
+
+ )}
+ >
+ );
+}
+
+================================================================================
+`;
+
+exports[`await.js - {"singleQuote":true,"jsxSingleQuote":false} format 1`] = `
+====================================options=====================================
+jsxSingleQuote: false
+parsers: ["flow", "babel", "typescript"]
+printWidth: 80
+singleQuote: true
+ | printWidth
+=====================================input======================================
+async function testFunction() {
+ const short = <>
+ {await Promise.all(
+ hierarchyCriticism
+ )}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(
+ hierarchyCriticism
+ )}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+
+ const long = <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {await hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+ >
+
+ const jsx = <>
+ {await (
+ material education original articulate parameter
+ )}
+ >
+}
+
+=====================================output=====================================
+async function testFunction() {
+ const short = (
+ <>
+ {await Promise.all(hierarchyCriticism)}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(hierarchyCriticism)}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+ );
+
+ const long = (
+ <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ await hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+ >
+ );
+
+ const jsx = (
+ <>
+ {await (
+
+ material education original articulate parameter
+
+ )}
+ >
+ );
+}
+
+================================================================================
+`;
+
+exports[`await.js - {"singleQuote":true,"jsxSingleQuote":true} format 1`] = `
+====================================options=====================================
+jsxSingleQuote: true
+parsers: ["flow", "babel", "typescript"]
+printWidth: 80
+singleQuote: true
+ | printWidth
+=====================================input======================================
+async function testFunction() {
+ const short = <>
+ {await Promise.all(
+ hierarchyCriticism
+ )}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(
+ hierarchyCriticism
+ )}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+
+ const long = <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {await hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+ >
+
+ const jsx = <>
+ {await (
+ material education original articulate parameter
+ )}
+ >
+}
+
+=====================================output=====================================
+async function testFunction() {
+ const short = (
+ <>
+ {await Promise.all(hierarchyCriticism)}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(hierarchyCriticism)}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+ );
+
+ const long = (
+ <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ await hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {
+ hierarchyCriticism.IncongruousCooperate.MaterialEducation
+ .OriginalArticulate.Parameter
+ }
+ {
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ }
+ >
+ );
+
+ const jsx = (
+ <>
+ {await (
+
+ material education original articulate parameter
+
+ )}
+ >
+ );
+}
+
+================================================================================
+`;
+
exports[`conditional-expression.js - {"singleQuote":false,"jsxSingleQuote":false} format 1`] = `
====================================options=====================================
jsxSingleQuote: false
diff --git a/tests/format/jsx/jsx/await.js b/tests/format/jsx/jsx/await.js
new file mode 100644
index 000000000..bf4d9ad1c
--- /dev/null
+++ b/tests/format/jsx/jsx/await.js
@@ -0,0 +1,35 @@
+async function testFunction() {
+ const short = <>
+ {await Promise.all(
+ hierarchyCriticism
+ )}
+ {await hierarchyCriticism.ic.me.oa.p}
+ {await hierarchyCriticism}
+
+ {Promise.all(
+ hierarchyCriticism
+ )}
+ {hierarchyCriticism.ic.me.oa.p}
+ {hierarchyCriticism}
+ >
+
+ const long = <>
+ {await Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {await hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {await hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+
+ {Promise.all(
+ hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter
+ )}
+ {hierarchyCriticism.IncongruousCooperate.MaterialEducation.OriginalArticulate.Parameter}
+ {hierarchyCriticismIncongruousCooperateMaterialEducationOriginalArticulateParameter}
+ >
+
+ const jsx = <>
+ {await (
+ material education original articulate parameter
+ )}
+ >
+}
diff --git a/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap
index ec26010ce..40fb2209a 100644
--- a/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`snippet: #0 [acorn] format 1`] = `
+"Unexpected token (1:5)
+> 1 | for each (a in b) {}
+ | ^"
+`;
+
exports[`snippet: #0 [babel] format 1`] = `
"Unexpected token, expected \\"(\\" (1:5)
> 1 | for each (a in b) {}
@@ -72,6 +78,12 @@ exports[`snippet: #0 [typescript] format 1`] = `
| ^"
`;
+exports[`snippet: #1 [acorn] format 1`] = `
+"Unexpected token (1:7)
+> 1 | class switch() {}
+ | ^"
+`;
+
exports[`snippet: #1 [babel] format 1`] = `
"A class name is required. (1:7)
> 1 | class switch() {}
diff --git a/tests/format/misc/errors/invalid/jsfmt.spec.js b/tests/format/misc/errors/invalid/jsfmt.spec.js
index fed594ecb..03e24e8ac 100644
--- a/tests/format/misc/errors/invalid/jsfmt.spec.js
+++ b/tests/format/misc/errors/invalid/jsfmt.spec.js
@@ -3,7 +3,16 @@ run_spec(
importMeta: import.meta,
snippets: ["for each (a in b) {}", "class switch() {}"],
},
- ["babel", "flow", "typescript", "babel-flow", "babel-ts", "espree", "meriyah"]
+ [
+ "babel",
+ "flow",
+ "typescript",
+ "babel-flow",
+ "babel-ts",
+ "acorn",
+ "espree",
+ "meriyah",
+ ]
);
run_spec(
diff --git a/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap
index 0ccb7f5e1..6b88411e0 100644
--- a/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`snippet: #0 [acorn] format 1`] = `
+"Parenthesized pattern (1:1)
+> 1 | ({}) = x;
+ | ^"
+`;
+
exports[`snippet: #0 [babel] format 1`] = `
"Invalid parenthesized assignment pattern. (1:1)
> 1 | ({}) = x;
diff --git a/tests/format/misc/errors/js/assignment/jsfmt.spec.js b/tests/format/misc/errors/js/assignment/jsfmt.spec.js
index 7dc59a3ef..2435ed514 100644
--- a/tests/format/misc/errors/js/assignment/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/assignment/jsfmt.spec.js
@@ -3,5 +3,5 @@ run_spec(
importMeta: import.meta,
snippets: ["({}) = x;"],
},
- ["babel", "babel-ts", "espree", "meriyah"]
+ ["babel", "babel-ts", "acorn", "espree", "meriyah"]
);
diff --git a/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap
index 8078d09be..ab9df47a4 100644
--- a/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,19 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`snippet: #0 [acorn] format 1`] = `
+"Unexpected token (2:26)
+ 1 | async function foo() {
+> 2 | function bar(x = await 2) {}
+ | ^
+ 3 | }"
+`;
+
+exports[`snippet: #0 [acorn] format 2`] = `
+"Await expression cannot be a default value (1:12)
+> 1 | async (x = await (2)) => {};
+ | ^"
+`;
+
exports[`snippet: #0 [babel] format 1`] = `
"'await' is not allowed in async function parameters. (2:20)
1 | async function foo() {
@@ -44,6 +58,12 @@ exports[`snippet: #0 [meriyah] format 1`] = `
3 | }"
`;
+exports[`snippet: #1 [acorn] format 1`] = `
+"Await expression cannot be a default value (1:12)
+> 1 | async (x = await 2) => {};
+ | ^"
+`;
+
exports[`snippet: #1 [babel] format 1`] = `
"'await' is not allowed in async function parameters. (1:12)
> 1 | async (x = await 2) => {};
@@ -68,6 +88,12 @@ exports[`snippet: #1 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #2 [acorn] format 1`] = `
+"Unexpected token (1:25)
+> 1 | f = async (a) => await a! ** 6;
+ | ^"
+`;
+
exports[`snippet: #2 [babel] format 1`] = `
"Unexpected token (1:27)
> 1 | f = async (a) => await a! ** 6;
@@ -92,6 +118,12 @@ exports[`snippet: #2 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #3 [acorn] format 1`] = `
+"Unexpected token (1:14)
+> 1 | f = (a) => +a! ** 6;
+ | ^"
+`;
+
exports[`snippet: #3 [babel] format 1`] = `
"Unexpected token (1:16)
> 1 | f = (a) => +a! ** 6;
@@ -116,6 +148,12 @@ exports[`snippet: #3 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #4 [acorn] format 1`] = `
+"Unexpected token (1:22)
+> 1 | async (a) => (await a!) ** 6;
+ | ^"
+`;
+
exports[`snippet: #4 [babel] format 1`] = `
"Unexpected token, expected \\",\\" (1:22)
> 1 | async (a) => (await a!) ** 6;
@@ -140,6 +178,12 @@ exports[`snippet: #4 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #5 [acorn] format 1`] = `
+"Unexpected token (1:6)
+> 1 | (-+5 ** 6);
+ | ^"
+`;
+
exports[`snippet: #5 [babel] format 1`] = `
"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:3)
> 1 | (-+5 ** 6);
@@ -164,6 +208,12 @@ exports[`snippet: #5 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #6 [acorn] format 1`] = `
+"Unexpected token (1:25)
+> 1 | f = async () => await 5 ** 6;
+ | ^"
+`;
+
exports[`snippet: #6 [babel] format 1`] = `
"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:23)
> 1 | f = async () => await 5 ** 6;
@@ -188,6 +238,12 @@ exports[`snippet: #6 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #7 [acorn] format 1`] = `
+"Unexpected token (1:26)
+> 1 | f = async () => await -5 ** 6;
+ | ^"
+`;
+
exports[`snippet: #7 [babel] format 1`] = `
"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:23)
> 1 | f = async () => await -5 ** 6;
@@ -212,6 +268,12 @@ exports[`snippet: #7 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #8 [acorn] format 1`] = `
+"Shorthand property assignments are valid only in destructuring patterns (1:15)
+> 1 | async({ foo33 = 1 });
+ | ^"
+`;
+
exports[`snippet: #8 [babel] format 1`] = `
"Invalid shorthand property initializer. (1:15)
> 1 | async({ foo33 = 1 });
diff --git a/tests/format/misc/errors/js/async-await/jsfmt.spec.js b/tests/format/misc/errors/js/async-await/jsfmt.spec.js
index 94ffcd9b1..aa53280ea 100644
--- a/tests/format/misc/errors/js/async-await/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/async-await/jsfmt.spec.js
@@ -19,7 +19,7 @@ run_spec(
"async({ foo33 = 1 });",
],
},
- ["babel", "espree", "meriyah", "flow"]
+ ["babel", "acorn", "espree", "meriyah", "flow"]
);
run_spec(
@@ -30,5 +30,5 @@ run_spec(
"async (x = await (2)) => {};",
],
},
- ["babel", "espree"]
+ ["babel", "acorn", "espree"]
);
diff --git a/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap
index 7a7418dd9..0b9bfc559 100644
--- a/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`snippet: #0 [acorn] format 1`] = `
+"Unexpected token (1:15)
+> 1 | for (async of []);
+ | ^"
+`;
+
exports[`snippet: #0 [babel] format 1`] = `
"The left-hand side of a for-of loop may not start with 'let'. (1:6)
> 1 | for (let.foo of []);
diff --git a/tests/format/misc/errors/js/for-of/jsfmt.spec.js b/tests/format/misc/errors/js/for-of/jsfmt.spec.js
index 3dabe074a..6035fe8aa 100644
--- a/tests/format/misc/errors/js/for-of/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/for-of/jsfmt.spec.js
@@ -26,6 +26,7 @@ run_spec(
},
[
"babel",
+ "acorn",
"espree",
// `meriyah` didn't throw https://github.com/meriyah/meriyah/issues/190
// "meriyah",
diff --git a/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap
index 374bc3856..2fdf6e998 100644
--- a/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`snippet: #0 [acorn] format 1`] = `
+"Unexpected token (1:8)
+> 1 | import();
+ | ^"
+`;
+
exports[`snippet: #0 [babel] format 1`] = `
"\`import()\` requires exactly one or two arguments. (1:1)
> 1 | import();
@@ -42,6 +48,12 @@ exports[`snippet: #0 [typescript] format 1`] = `
| ^"
`;
+exports[`snippet: #1 [acorn] format 1`] = `
+"Unexpected token (1:21)
+> 1 | import(/* comment */);
+ | ^"
+`;
+
exports[`snippet: #1 [babel] format 1`] = `
"\`import()\` requires exactly one or two arguments. (1:1)
> 1 | import(/* comment */);
@@ -84,6 +96,12 @@ exports[`snippet: #1 [typescript] format 1`] = `
| ^"
`;
+exports[`snippet: #2 [acorn] format 1`] = `
+"Cannot use new with import() (1:5)
+> 1 | new import('./a.mjs');
+ | ^"
+`;
+
exports[`snippet: #2 [babel] format 1`] = `
"Cannot use new with import(...). (1:5)
> 1 | new import('./a.mjs');
@@ -126,6 +144,12 @@ exports[`snippet: #2 [typescript] format 1`] = `
| ^"
`;
+exports[`snippet: #3 [acorn] format 1`] = `
+"Unexpected token (1:12)
+> 1 | new import();
+ | ^"
+`;
+
exports[`snippet: #3 [babel] format 1`] = `
"Cannot use new with import(...). (1:5)
> 1 | new import();
diff --git a/tests/format/misc/errors/js/import/jsfmt.spec.js b/tests/format/misc/errors/js/import/jsfmt.spec.js
index f5baee77b..1996c9b55 100644
--- a/tests/format/misc/errors/js/import/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/import/jsfmt.spec.js
@@ -8,5 +8,14 @@ run_spec(
"new import();",
],
},
- ["babel", "espree", "meriyah", "flow", "typescript", "babel-flow", "babel-ts"]
+ [
+ "babel",
+ "acorn",
+ "espree",
+ "meriyah",
+ "flow",
+ "typescript",
+ "babel-flow",
+ "babel-ts",
+ ]
);
diff --git a/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap
index d87a75dfc..2d0386425 100644
--- a/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`invalid-exponent.js [acorn] format 1`] = `
+"Invalid number (1:1)
+> 1 | 12.3e
+ | ^
+ 2 |"
+`;
+
exports[`invalid-exponent.js [babel] format 1`] = `
"Floating-point numbers require a valid exponent after the 'e'. (1:1)
> 1 | 12.3e
diff --git a/tests/format/misc/errors/js/literal/jsfmt.spec.js b/tests/format/misc/errors/js/literal/jsfmt.spec.js
index 9421c8c7a..0b4e24dc0 100644
--- a/tests/format/misc/errors/js/literal/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/literal/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["babel", "espree", "meriyah"]);
+run_spec(__dirname, ["babel", "acorn", "espree", "meriyah"]);
diff --git a/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap
index 62586b9b4..f21841241 100644
--- a/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`getter-generator.js [acorn] format 1`] = `
+"Unexpected token (2:9)
+ 1 | ({
+> 2 | get *iterator() { },
+ | ^
+ 3 | });
+ 4 |"
+`;
+
exports[`getter-generator.js [babel] format 1`] = `
"A getter cannot be a generator. (2:10)
1 | ({
@@ -27,6 +36,13 @@ exports[`getter-generator.js [meriyah] format 1`] = `
4 |"
`;
+exports[`getter-with-parameter.js [acorn] format 1`] = `
+"getter should have no params (1:9)
+> 1 | ({ get x(a){} });
+ | ^
+ 2 |"
+`;
+
exports[`getter-with-parameter.js [babel] format 1`] = `
"A 'get' accesor must not have any formal parameters. (1:4)
> 1 | ({ get x(a){} });
@@ -48,6 +64,15 @@ exports[`getter-with-parameter.js [meriyah] format 1`] = `
2 |"
`;
+exports[`setter-generator.js [acorn] format 1`] = `
+"Unexpected token (2:9)
+ 1 | ({
+> 2 | set *iterator(iter) { },
+ | ^
+ 3 | });
+ 4 |"
+`;
+
exports[`setter-generator.js [babel] format 1`] = `
"A setter cannot be a generator. (2:10)
1 | ({
@@ -75,6 +100,13 @@ exports[`setter-generator.js [meriyah] format 1`] = `
4 |"
`;
+exports[`setter-without-parameter.js [acorn] format 1`] = `
+"setter should have exactly one param (1:9)
+> 1 | ({ set x(){} });
+ | ^
+ 2 |"
+`;
+
exports[`setter-without-parameter.js [babel] format 1`] = `
"A 'set' accesor must have exactly one formal parameter. (1:4)
> 1 | ({ set x(){} });
diff --git a/tests/format/misc/errors/js/object/jsfmt.spec.js b/tests/format/misc/errors/js/object/jsfmt.spec.js
index 9421c8c7a..0b4e24dc0 100644
--- a/tests/format/misc/errors/js/object/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/object/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["babel", "espree", "meriyah"]);
+run_spec(__dirname, ["babel", "acorn", "espree", "meriyah"]);
diff --git a/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap
index 179260429..763e2ed7a 100644
--- a/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`snippet: #0 [acorn] format 1`] = `
+"Optional chaining cannot appear in the callee of new expressions (1:21)
+> 1 | const baz3 = new obj?.foo?.bar?.baz(); // baz instance
+ | ^"
+`;
+
exports[`snippet: #0 [babel] format 1`] = `
"Constructors in/after an Optional Chain are not allowed. (1:36)
> 1 | const baz3 = new obj?.foo?.bar?.baz(); // baz instance
@@ -18,6 +24,12 @@ exports[`snippet: #0 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #1 [acorn] format 1`] = `
+"Optional chaining cannot appear in the callee of new expressions (1:22)
+> 1 | const safe5 = new obj?.qux?.baz(); // undefined
+ | ^"
+`;
+
exports[`snippet: #1 [babel] format 1`] = `
"Constructors in/after an Optional Chain are not allowed. (1:32)
> 1 | const safe5 = new obj?.qux?.baz(); // undefined
@@ -36,6 +48,12 @@ exports[`snippet: #1 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #2 [acorn] format 1`] = `
+"Optional chaining cannot appear in the callee of new expressions (1:22)
+> 1 | const safe6 = new obj?.foo.bar.qux?.(); // undefined
+ | ^"
+`;
+
exports[`snippet: #2 [babel] format 1`] = `
"Constructors in/after an Optional Chain are not allowed. (1:35)
> 1 | const safe6 = new obj?.foo.bar.qux?.(); // undefined
@@ -54,6 +72,12 @@ exports[`snippet: #2 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #3 [acorn] format 1`] = `
+"Optional chaining cannot appear in the callee of new expressions (1:26)
+> 1 | const willThrow = new obj?.foo.bar.qux(); // Error: not a constructor
+ | ^"
+`;
+
exports[`snippet: #3 [babel] format 1`] = `
"Constructors in/after an Optional Chain are not allowed. (1:39)
> 1 | const willThrow = new obj?.foo.bar.qux(); // Error: not a constructor
@@ -72,6 +96,14 @@ exports[`snippet: #3 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #4 [acorn] format 1`] = `
+"Optional chaining cannot appear in the callee of new expressions (4:9)
+ 2 | class Test {
+ 3 | }
+> 4 | new Test?.(); // test instance
+ | ^"
+`;
+
exports[`snippet: #4 [babel] format 1`] = `
"Constructors in/after an Optional Chain are not allowed. (4:11)
2 | class Test {
@@ -96,6 +128,12 @@ exports[`snippet: #4 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #5 [acorn] format 1`] = `
+"Optional chaining cannot appear in the callee of new expressions (1:11)
+> 1 | new exists?.(); // undefined
+ | ^"
+`;
+
exports[`snippet: #5 [babel] format 1`] = `
"Constructors in/after an Optional Chain are not allowed. (1:13)
> 1 | new exists?.(); // undefined
diff --git a/tests/format/misc/errors/js/optional-chaining/jsfmt.spec.js b/tests/format/misc/errors/js/optional-chaining/jsfmt.spec.js
index 709f5bca0..6cfa6ce92 100644
--- a/tests/format/misc/errors/js/optional-chaining/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/optional-chaining/jsfmt.spec.js
@@ -17,5 +17,5 @@ run_spec(
"new exists?.(); // undefined",
],
},
- ["babel", "espree", "meriyah"]
+ ["babel", "acorn", "espree", "meriyah"]
);
diff --git a/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap
index 519b7cbbd..10973da0b 100644
--- a/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,11 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`snippet: #0 [acorn] format 1`] = `
+"Unexpected character '{' (1:2)
+> 1 | #{a() {}}
+ | ^"
+`;
+
exports[`snippet: #0 [babel] format 1`] = `
"Only properties and spread elements are allowed in record definitions. (1:3)
> 1 | #{a() {}}
@@ -18,6 +24,12 @@ exports[`snippet: #0 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #1 [acorn] format 1`] = `
+"Unexpected character '{' (1:2)
+> 1 | #{async b() {}}
+ | ^"
+`;
+
exports[`snippet: #1 [babel] format 1`] = `
"Only properties and spread elements are allowed in record definitions. (1:3)
> 1 | #{async b() {}}
@@ -36,6 +48,12 @@ exports[`snippet: #1 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #2 [acorn] format 1`] = `
+"Unexpected character '{' (1:2)
+> 1 | #{get c() {}}
+ | ^"
+`;
+
exports[`snippet: #2 [babel] format 1`] = `
"Only properties and spread elements are allowed in record definitions. (1:3)
> 1 | #{get c() {}}
@@ -54,6 +72,12 @@ exports[`snippet: #2 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #3 [acorn] format 1`] = `
+"Unexpected character '{' (1:2)
+> 1 | #{set d(_) {}}
+ | ^"
+`;
+
exports[`snippet: #3 [babel] format 1`] = `
"Only properties and spread elements are allowed in record definitions. (1:3)
> 1 | #{set d(_) {}}
@@ -72,6 +96,12 @@ exports[`snippet: #3 [meriyah] format 1`] = `
| ^"
`;
+exports[`snippet: #4 [acorn] format 1`] = `
+"Unexpected character '{' (1:2)
+> 1 | #{*e() {}}
+ | ^"
+`;
+
exports[`snippet: #4 [babel] format 1`] = `
"Only properties and spread elements are allowed in record definitions. (1:3)
> 1 | #{*e() {}}
diff --git a/tests/format/misc/errors/js/record/jsfmt.spec.js b/tests/format/misc/errors/js/record/jsfmt.spec.js
index 91fc311a3..58d6a15af 100644
--- a/tests/format/misc/errors/js/record/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/record/jsfmt.spec.js
@@ -9,5 +9,5 @@ run_spec(
"#{*e() {}}",
],
},
- ["babel", "espree", "meriyah"]
+ ["babel", "acorn", "espree", "meriyah"]
);
diff --git a/tests/format/misc/errors/js/regex-v-u-flags/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/regex-v-u-flags/__snapshots__/jsfmt.spec.js.snap
new file mode 100644
index 000000000..696b2203f
--- /dev/null
+++ b/tests/format/misc/errors/js/regex-v-u-flags/__snapshots__/jsfmt.spec.js.snap
@@ -0,0 +1,57 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`invalid-flags.js [acorn] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/ugv;
+ | ^
+ 2 |"
+`;
+
+exports[`invalid-flags.js [babel] format 1`] = `
+"The 'u' and 'v' regular expression flags cannot be enabled at the same time. (1:7)
+> 1 | /a/ugv;
+ | ^
+ 2 |"
+`;
+
+exports[`invalid-flags.js [espree] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/ugv;
+ | ^
+ 2 |"
+`;
+
+exports[`invalid-flags.js [meriyah] format 1`] = `
+"[1:5]: Unexpected regular expression flag (1:5)
+> 1 | /a/ugv;
+ | ^
+ 2 |"
+`;
+
+exports[`invalid-flags2.js [acorn] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/vu;
+ | ^
+ 2 |"
+`;
+
+exports[`invalid-flags2.js [babel] format 1`] = `
+"The 'u' and 'v' regular expression flags cannot be enabled at the same time. (1:6)
+> 1 | /a/vu;
+ | ^
+ 2 |"
+`;
+
+exports[`invalid-flags2.js [espree] format 1`] = `
+"Invalid regular expression flag (1:2)
+> 1 | /a/vu;
+ | ^
+ 2 |"
+`;
+
+exports[`invalid-flags2.js [meriyah] format 1`] = `
+"[1:3]: Unexpected regular expression flag (1:3)
+> 1 | /a/vu;
+ | ^
+ 2 |"
+`;
diff --git a/tests/format/misc/errors/js/regex-v-u-flags/invalid-flags.js b/tests/format/misc/errors/js/regex-v-u-flags/invalid-flags.js
new file mode 100644
index 000000000..5dcdc60df
--- /dev/null
+++ b/tests/format/misc/errors/js/regex-v-u-flags/invalid-flags.js
@@ -0,0 +1 @@
+/a/ugv;
diff --git a/tests/format/misc/errors/js/regex-v-u-flags/invalid-flags2.js b/tests/format/misc/errors/js/regex-v-u-flags/invalid-flags2.js
new file mode 100644
index 000000000..ce76d00a0
--- /dev/null
+++ b/tests/format/misc/errors/js/regex-v-u-flags/invalid-flags2.js
@@ -0,0 +1 @@
+/a/vu;
diff --git a/tests/format/misc/errors/js/regex-v-u-flags/jsfmt.spec.js b/tests/format/misc/errors/js/regex-v-u-flags/jsfmt.spec.js
new file mode 100644
index 000000000..0b4e24dc0
--- /dev/null
+++ b/tests/format/misc/errors/js/regex-v-u-flags/jsfmt.spec.js
@@ -0,0 +1 @@
+run_spec(__dirname, ["babel", "acorn", "espree", "meriyah"]);
diff --git a/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap
index bb0c30f34..eae324f63 100644
--- a/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap
@@ -1,5 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`invalid-const.js [acorn] format 1`] = `
+"Unexpected token (1:10)
+> 1 | const foo;
+ | ^
+ 2 |"
+`;
+
exports[`invalid-const.js [babel] format 1`] = `
"'Const declarations' require an initialization value. (1:10)
> 1 | const foo;
diff --git a/tests/format/misc/errors/js/variable-declarator/jsfmt.spec.js b/tests/format/misc/errors/js/variable-declarator/jsfmt.spec.js
index 9421c8c7a..0b4e24dc0 100644
--- a/tests/format/misc/errors/js/variable-declarator/jsfmt.spec.js
+++ b/tests/format/misc/errors/js/variable-declarator/jsfmt.spec.js
@@ -1 +1 @@
-run_spec(import.meta, ["babel", "espree", "meriyah"]);
+run_spec(__dirname, ["babel", "acorn", "espree", "meriyah"]);
diff --git a/tests/format/misc/errors/typescript/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/typescript/__snapshots__/jsfmt.spec.js.snap
index b0f014358..842ce1a00 100644
--- a/tests/format/misc/errors/typescript/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/misc/errors/typescript/__snapshots__/jsfmt.spec.js.snap
@@ -23,8 +23,6 @@ exports[`invalid-jsx-1.ts [typescript] format 1`] = `
4 |"
`;
-exports[`issue-8773.ts [typescript] format 1`] = `"Comment \\"comment\\" was not printed. Please report this error!"`;
-
exports[`module-attributes-static.ts [typescript] format 1`] = `
"';' expected. (1:28)
> 1 | import foo from \\"foo.json\\" with type: \\"json\\";
diff --git a/tests/format/misc/errors/typescript/issue-8773.ts b/tests/format/misc/errors/typescript/issue-8773.ts
deleted file mode 100644
index d844c2f19..000000000
--- a/tests/format/misc/errors/typescript/issue-8773.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// prettier-ignore
-foo + foo;
-
-continue // comment
-;
diff --git a/tests/format/typescript/comments/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/comments/__snapshots__/jsfmt.spec.js.snap
index b20ab8598..9d0dde209 100644
--- a/tests/format/typescript/comments/__snapshots__/jsfmt.spec.js.snap
+++ b/tests/format/typescript/comments/__snapshots__/jsfmt.spec.js.snap
@@ -28,6 +28,40 @@ abstract class AbstractRule {
================================================================================
`;
+exports[`abstract_methods.ts format 1`] = `
+====================================options=====================================
+parsers: ["typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+abstract class AbstractFoo {
+ abstract method1(/* comment */ arg: string);
+ abstract method2(
+ /* comment */
+ arg: string
+ );
+ abstract method3(
+ // comment
+ arg: string
+ );
+}
+
+=====================================output=====================================
+abstract class AbstractFoo {
+ abstract method1(/* comment */ arg: string);
+ abstract method2(
+ /* comment */
+ arg: string
+ );
+ abstract method3(
+ // comment
+ arg: string
+ );
+}
+
+================================================================================
+`;
+
exports[`after_jsx_generic.ts format 1`] = `
====================================options=====================================
parsers: ["typescript"]
@@ -602,6 +636,8 @@ export class Point {
mismatchedIndentation() {}
inline /* foo*/ (/* bar */) /* baz */ {}
+
+ noBody(/* comment */ arg);
}
=====================================output=====================================
@@ -651,6 +687,8 @@ export class Point {
mismatchedIndentation() {}
inline /* foo*/(/* bar */) /* baz */ {}
+
+ noBody(/* comment */ arg);
}
================================================================================
diff --git a/tests/format/typescript/comments/abstract_methods.ts b/tests/format/typescript/comments/abstract_methods.ts
new file mode 100644
index 000000000..9ed4bd383
--- /dev/null
+++ b/tests/format/typescript/comments/abstract_methods.ts
@@ -0,0 +1,11 @@
+abstract class AbstractFoo {
+ abstract method1(/* comment */ arg: string);
+ abstract method2(
+ /* comment */
+ arg: string
+ );
+ abstract method3(
+ // comment
+ arg: string
+ );
+}
diff --git a/tests/format/typescript/comments/methods.ts b/tests/format/typescript/comments/methods.ts
index b48947c79..a4cbca618 100644
--- a/tests/format/typescript/comments/methods.ts
+++ b/tests/format/typescript/comments/methods.ts
@@ -44,4 +44,6 @@ export class Point {
mismatchedIndentation() {}
inline /* foo*/ (/* bar */) /* baz */ {}
+
+ noBody(/* comment */ arg);
}
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/1.ts b/tests/format/typescript/type-arguments-bit-shift-left-like/1.ts
new file mode 100644
index 000000000..22101bcfd
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/1.ts
@@ -0,0 +1 @@
+f<<(x)
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/2.ts b/tests/format/typescript/type-arguments-bit-shift-left-like/2.ts
new file mode 100644
index 000000000..94b8ba09b
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/2.ts
@@ -0,0 +1 @@
+f<(v: T) => void>();
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/3.ts b/tests/format/typescript/type-arguments-bit-shift-left-like/3.ts
new file mode 100644
index 000000000..8db082343
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/3.ts
@@ -0,0 +1 @@
+(class extends f<(v: T) => void> {});
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/4.ts b/tests/format/typescript/type-arguments-bit-shift-left-like/4.ts
new file mode 100644
index 000000000..7316ad255
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/4.ts
@@ -0,0 +1 @@
+(@f<(v: T) => void>() class {});
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/5.tsx b/tests/format/typescript/type-arguments-bit-shift-left-like/5.tsx
new file mode 100644
index 000000000..5ad697cb4
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/5.tsx
@@ -0,0 +1 @@
+(v: T) => void> />
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/6.ts b/tests/format/typescript/type-arguments-bit-shift-left-like/6.ts
new file mode 100644
index 000000000..7991a4bbd
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/6.ts
@@ -0,0 +1 @@
+new f<(v: T) => void>();
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/type-arguments-bit-shift-left-like/__snapshots__/jsfmt.spec.js.snap
new file mode 100644
index 000000000..99030dc59
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/__snapshots__/jsfmt.spec.js.snap
@@ -0,0 +1,109 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`1.ts format 1`] = `
+====================================options=====================================
+parsers: ["typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+f<<(x)
+
+=====================================output=====================================
+f << (x);
+
+================================================================================
+`;
+
+exports[`2.ts format 1`] = `
+====================================options=====================================
+parsers: ["typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+f<(v: T) => void>();
+
+=====================================output=====================================
+f<(v: T) => void>();
+
+================================================================================
+`;
+
+exports[`3.ts [babel-ts] format 1`] = `
+====================================options=====================================
+parsers: ["typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+(class extends f<(v: T) => void> {});
+
+=====================================output=====================================
+(class extends f<(v: T) => void> {});
+
+================================================================================
+`;
+
+exports[`3.ts [typescript] format 1`] = `
+"',' expected. (1:17)
+> 1 | (class extends f<(v: T) => void> {});
+ | ^
+ 2 |"
+`;
+
+exports[`4.ts [babel-ts] format 1`] = `
+====================================options=====================================
+parsers: ["typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+(@f<(v: T) => void>() class {});
+
+=====================================output=====================================
+(
+ @f<(v: T) => void>()
+ class {}
+);
+
+================================================================================
+`;
+
+exports[`4.ts [typescript] format 1`] = `
+"Expression expected. (1:2)
+> 1 | (@f<(v: T) => void>() class {});
+ | ^
+ 2 |"
+`;
+
+exports[`5.tsx [babel-ts] format 1`] = `
+====================================options=====================================
+parsers: ["typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+(v: T) => void> />
+
+=====================================output=====================================
+(v: T) => void> />;
+
+================================================================================
+`;
+
+exports[`5.tsx [typescript] format 1`] = `
+"Identifier expected. (1:11)
+> 1 | (v: T) => void> />
+ | ^
+ 2 |"
+`;
+
+exports[`6.ts format 1`] = `
+====================================options=====================================
+parsers: ["typescript"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+new f<(v: T) => void>();
+
+=====================================output=====================================
+new f<(v: T) => void>();
+
+================================================================================
+`;
diff --git a/tests/format/typescript/type-arguments-bit-shift-left-like/jsfmt.spec.js b/tests/format/typescript/type-arguments-bit-shift-left-like/jsfmt.spec.js
new file mode 100644
index 000000000..2775ae278
--- /dev/null
+++ b/tests/format/typescript/type-arguments-bit-shift-left-like/jsfmt.spec.js
@@ -0,0 +1,3 @@
+run_spec(__dirname, ["typescript"], {
+ errors: { typescript: ["3.ts", "4.ts", "5.tsx"] },
+});
diff --git a/tests/format/vue/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/vue/invalid/__snapshots__/jsfmt.spec.js.snap
new file mode 100644
index 000000000..cda9412cd
--- /dev/null
+++ b/tests/format/vue/invalid/__snapshots__/jsfmt.spec.js.snap
@@ -0,0 +1,52 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`v-for.vue format 1`] = `
+====================================options=====================================
+parsers: ["vue"]
+printWidth: 80
+ | printWidth
+=====================================input======================================
+
+
+
+
+=====================================output=====================================
+
+
+
+
+================================================================================
+`;
diff --git a/tests/format/vue/invalid/jsfmt.spec.js b/tests/format/vue/invalid/jsfmt.spec.js
new file mode 100644
index 000000000..2fd7eede9
--- /dev/null
+++ b/tests/format/vue/invalid/jsfmt.spec.js
@@ -0,0 +1 @@
+run_spec(__dirname, ["vue"]);
diff --git a/tests/format/vue/invalid/v-for.vue b/tests/format/vue/invalid/v-for.vue
new file mode 100644
index 000000000..2678f1cab
--- /dev/null
+++ b/tests/format/vue/invalid/v-for.vue
@@ -0,0 +1,21 @@
+
+
+
diff --git a/tests/integration/__tests__/__snapshots__/debug-print-ast.js.snap b/tests/integration/__tests__/__snapshots__/debug-print-ast.js.snap
index bb55eecf0..6c4c00f94 100644
--- a/tests/integration/__tests__/__snapshots__/debug-print-ast.js.snap
+++ b/tests/integration/__tests__/__snapshots__/debug-print-ast.js.snap
@@ -1,5 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`prints information for debugging AST --debug-print-ast (stdout) 1`] = `"{\\"type\\":\\"File\\",\\"start\\":0,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0},\\"end\\":{\\"line\\":1,\\"column\\":18}},\\"range\\":[0,18],\\"errors\\":[],\\"program\\":{\\"type\\":\\"Program\\",\\"start\\":0,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0},\\"end\\":{\\"line\\":1,\\"column\\":18}},\\"range\\":[0,18],\\"sourceType\\":\\"module\\",\\"interpreter\\":null,\\"body\\":[{\\"type\\":\\"VariableDeclaration\\",\\"start\\":0,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0},\\"end\\":{\\"line\\":1,\\"column\\":18}},\\"range\\":[0,18],\\"declarations\\":[{\\"type\\":\\"VariableDeclarator\\",\\"start\\":6,\\"end\\":17,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":6},\\"end\\":{\\"line\\":1,\\"column\\":17}},\\"range\\":[6,17],\\"id\\":{\\"type\\":\\"Identifier\\",\\"start\\":6,\\"end\\":9,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":6},\\"end\\":{\\"line\\":1,\\"column\\":9},\\"identifierName\\":\\"foo\\"},\\"range\\":[6,9],\\"name\\":\\"foo\\"},\\"init\\":{\\"type\\":\\"StringLiteral\\",\\"start\\":12,\\"end\\":17,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":12},\\"end\\":{\\"line\\":1,\\"column\\":17}},\\"range\\":[12,17],\\"extra\\":{\\"rawValue\\":\\"foo\\",\\"raw\\":\\"'foo'\\"},\\"value\\":\\"foo\\"}}],\\"kind\\":\\"const\\"}],\\"directives\\":[]},\\"comments\\":[],\\"tokens\\":[{\\"type\\":{\\"label\\":\\"const\\",\\"keyword\\":\\"const\\",\\"beforeExpr\\":false,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"const\\",\\"start\\":0,\\"end\\":5,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0},\\"end\\":{\\"line\\":1,\\"column\\":5}}},{\\"type\\":{\\"label\\":\\"name\\",\\"beforeExpr\\":false,\\"startsExpr\\":true,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"foo\\",\\"start\\":6,\\"end\\":9,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":6},\\"end\\":{\\"line\\":1,\\"column\\":9}}},{\\"type\\":{\\"label\\":\\"=\\",\\"beforeExpr\\":true,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":true,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"=\\",\\"start\\":10,\\"end\\":11,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":10},\\"end\\":{\\"line\\":1,\\"column\\":11}}},{\\"type\\":{\\"label\\":\\"string\\",\\"beforeExpr\\":false,\\"startsExpr\\":true,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"foo\\",\\"start\\":12,\\"end\\":17,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":12},\\"end\\":{\\"line\\":1,\\"column\\":17}}},{\\"type\\":{\\"label\\":\\";\\",\\"beforeExpr\\":true,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"start\\":17,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":17},\\"end\\":{\\"line\\":1,\\"column\\":18}}},{\\"type\\":{\\"label\\":\\"eof\\",\\"beforeExpr\\":false,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"start\\":18,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":18},\\"end\\":{\\"line\\":1,\\"column\\":18}}}]}"`;
+exports[`prints information for debugging AST --debug-print-ast (stdout) 1`] = `"{\\"type\\":\\"File\\",\\"start\\":0,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0,\\"index\\":0},\\"end\\":{\\"line\\":1,\\"column\\":18,\\"index\\":18}},\\"range\\":[0,18],\\"errors\\":[],\\"program\\":{\\"type\\":\\"Program\\",\\"start\\":0,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0,\\"index\\":0},\\"end\\":{\\"line\\":1,\\"column\\":18,\\"index\\":18}},\\"range\\":[0,18],\\"sourceType\\":\\"module\\",\\"interpreter\\":null,\\"body\\":[{\\"type\\":\\"VariableDeclaration\\",\\"start\\":0,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0,\\"index\\":0},\\"end\\":{\\"line\\":1,\\"column\\":18,\\"index\\":18}},\\"range\\":[0,18],\\"declarations\\":[{\\"type\\":\\"VariableDeclarator\\",\\"start\\":6,\\"end\\":17,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":6,\\"index\\":6},\\"end\\":{\\"line\\":1,\\"column\\":17,\\"index\\":17}},\\"range\\":[6,17],\\"id\\":{\\"type\\":\\"Identifier\\",\\"start\\":6,\\"end\\":9,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":6,\\"index\\":6},\\"end\\":{\\"line\\":1,\\"column\\":9,\\"index\\":9},\\"identifierName\\":\\"foo\\"},\\"range\\":[6,9],\\"name\\":\\"foo\\"},\\"init\\":{\\"type\\":\\"StringLiteral\\",\\"start\\":12,\\"end\\":17,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":12,\\"index\\":12},\\"end\\":{\\"line\\":1,\\"column\\":17,\\"index\\":17}},\\"range\\":[12,17],\\"extra\\":{\\"rawValue\\":\\"foo\\",\\"raw\\":\\"'foo'\\"},\\"value\\":\\"foo\\"}}],\\"kind\\":\\"const\\"}],\\"directives\\":[]},\\"comments\\":[],\\"tokens\\":[{\\"type\\":{\\"label\\":\\"const\\",\\"keyword\\":\\"const\\",\\"beforeExpr\\":false,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"const\\",\\"start\\":0,\\"end\\":5,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":0,\\"index\\":0},\\"end\\":{\\"line\\":1,\\"column\\":5,\\"index\\":5}}},{\\"type\\":{\\"label\\":\\"name\\",\\"beforeExpr\\":false,\\"startsExpr\\":true,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"foo\\",\\"start\\":6,\\"end\\":9,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":6,\\"index\\":6},\\"end\\":{\\"line\\":1,\\"column\\":9,\\"index\\":9}}},{\\"type\\":{\\"label\\":\\"=\\",\\"beforeExpr\\":true,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":true,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"=\\",\\"start\\":10,\\"end\\":11,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":10,\\"index\\":10},\\"end\\":{\\"line\\":1,\\"column\\":11,\\"index\\":11}}},{\\"type\\":{\\"label\\":\\"string\\",\\"beforeExpr\\":false,\\"startsExpr\\":true,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"value\\":\\"foo\\",\\"start\\":12,\\"end\\":17,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":12,\\"index\\":12},\\"end\\":{\\"line\\":1,\\"column\\":17,\\"index\\":17}}},{\\"type\\":{\\"label\\":\\";\\",\\"beforeExpr\\":true,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"start\\":17,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":17,\\"index\\":17},\\"end\\":{\\"line\\":1,\\"column\\":18,\\"index\\":18}}},{\\"type\\":{\\"label\\":\\"eof\\",\\"beforeExpr\\":false,\\"startsExpr\\":false,\\"rightAssociative\\":false,\\"isLoop\\":false,\\"isAssign\\":false,\\"prefix\\":false,\\"postfix\\":false,\\"binop\\":null,\\"updateContext\\":null},\\"start\\":18,\\"end\\":18,\\"loc\\":{\\"start\\":{\\"line\\":1,\\"column\\":18,\\"index\\":18},\\"end\\":{\\"line\\":1,\\"column\\":18,\\"index\\":18}}}]}"`;
exports[`prints information for debugging AST --debug-print-ast (write) 1`] = `Array []`;
diff --git a/tests/integration/__tests__/__snapshots__/debug-print-comments.js.snap b/tests/integration/__tests__/__snapshots__/debug-print-comments.js.snap
index 45e3f90c1..260d1cc9d 100644
--- a/tests/integration/__tests__/__snapshots__/debug-print-comments.js.snap
+++ b/tests/integration/__tests__/__snapshots__/debug-print-comments.js.snap
@@ -8,8 +8,8 @@ exports[`prints information for debugging comment attachment with --debug-print-
\\"start\\": 0,
\\"end\\": 7,
\\"loc\\": {
- \\"start\\": { \\"line\\": 1, \\"column\\": 0 },
- \\"end\\": { \\"line\\": 1, \\"column\\": 7 }
+ \\"start\\": { \\"line\\": 1, \\"column\\": 0, \\"index\\": 0 },
+ \\"end\\": { \\"line\\": 1, \\"column\\": 7, \\"index\\": 7 }
},
\\"placement\\": \\"endOfLine\\",
\\"leading\\": true,
@@ -22,8 +22,8 @@ exports[`prints information for debugging comment attachment with --debug-print-
\\"start\\": 24,
\\"end\\": 31,
\\"loc\\": {
- \\"start\\": { \\"line\\": 2, \\"column\\": 16 },
- \\"end\\": { \\"line\\": 2, \\"column\\": 23 }
+ \\"start\\": { \\"line\\": 2, \\"column\\": 16, \\"index\\": 24 },
+ \\"end\\": { \\"line\\": 2, \\"column\\": 23, \\"index\\": 31 }
},
\\"placement\\": \\"remaining\\",
\\"leading\\": false,
@@ -36,8 +36,8 @@ exports[`prints information for debugging comment attachment with --debug-print-
\\"start\\": 34,
\\"end\\": 38,
\\"loc\\": {
- \\"start\\": { \\"line\\": 2, \\"column\\": 26 },
- \\"end\\": { \\"line\\": 2, \\"column\\": 30 }
+ \\"start\\": { \\"line\\": 2, \\"column\\": 26, \\"index\\": 34 },
+ \\"end\\": { \\"line\\": 2, \\"column\\": 30, \\"index\\": 38 }
},
\\"placement\\": \\"remaining\\",
\\"leading\\": false,
diff --git a/tests/integration/__tests__/__snapshots__/early-exit.js.snap b/tests/integration/__tests__/__snapshots__/early-exit.js.snap
index ceba2b2ac..66d605828 100644
--- a/tests/integration/__tests__/__snapshots__/early-exit.js.snap
+++ b/tests/integration/__tests__/__snapshots__/early-exit.js.snap
@@ -75,7 +75,7 @@ Format options:
Defaults to css.
--jsx-single-quote Use single quotes in JSX.
Defaults to false.
- --parser
+ --parser
Which parser to use.
--print-width The line length where Prettier will try wrap.
Defaults to 80.
@@ -176,7 +176,7 @@ exports[`show warning with --help not-found (typo) (stderr) 1`] = `
`;
exports[`show warning with --help not-found (typo) (stdout) 1`] = `
-"--parser
+"--parser
Which parser to use.
@@ -187,6 +187,7 @@ Valid options:
babel-flow Flow
babel-ts TypeScript
typescript TypeScript
+ acorn JavaScript
espree JavaScript
meriyah JavaScript
css CSS
@@ -243,7 +244,7 @@ Format options:
Defaults to css.
--jsx-single-quote Use single quotes in JSX.
Defaults to false.
- --parser
+ --parser
Which parser to use.
--print-width The line length where Prettier will try wrap.
Defaults to 80.
diff --git a/tests/integration/__tests__/__snapshots__/help-options.js.snap b/tests/integration/__tests__/__snapshots__/help-options.js.snap
index eb7adb84d..bf750b96b 100644
--- a/tests/integration/__tests__/__snapshots__/help-options.js.snap
+++ b/tests/integration/__tests__/__snapshots__/help-options.js.snap
@@ -372,7 +372,7 @@ exports[`show detailed usage with --help no-semi (write) 1`] = `Array []`;
exports[`show detailed usage with --help parser (stderr) 1`] = `""`;
exports[`show detailed usage with --help parser (stdout) 1`] = `
-"--parser
+"--parser
Which parser to use.
@@ -383,6 +383,7 @@ Valid options:
babel-flow Flow
babel-ts TypeScript
typescript TypeScript
+ acorn JavaScript
espree JavaScript
meriyah JavaScript
css CSS
diff --git a/tests/integration/__tests__/__snapshots__/plugin-options-string.js.snap b/tests/integration/__tests__/__snapshots__/plugin-options-string.js.snap
index 9b0567f2a..aff5adf72 100644
--- a/tests/integration/__tests__/__snapshots__/plugin-options-string.js.snap
+++ b/tests/integration/__tests__/__snapshots__/plugin-options-string.js.snap
@@ -31,8 +31,8 @@ exports[`show external options with \`--help\` 1`] = `
Defaults to css.
--jsx-single-quote Use single quotes in JSX.
Defaults to false.
-- --parser
-+ --parser
+- --parser
++ --parser
Which parser to use.
--print-width The line length where Prettier will try wrap.
Defaults to 80.
diff --git a/tests/integration/__tests__/__snapshots__/plugin-options.js.snap b/tests/integration/__tests__/__snapshots__/plugin-options.js.snap
index 9e809ef62..9e8b55b64 100644
--- a/tests/integration/__tests__/__snapshots__/plugin-options.js.snap
+++ b/tests/integration/__tests__/__snapshots__/plugin-options.js.snap
@@ -3,7 +3,7 @@
exports[`include plugin's parsers to the values of the \`parser\` option\` (stderr) 1`] = `""`;
exports[`include plugin's parsers to the values of the \`parser\` option\` (stdout) 1`] = `
-"--parser
+"--parser
Which parser to use.
@@ -14,6 +14,7 @@ Valid options:
babel-flow Flow
babel-ts TypeScript
typescript TypeScript
+ acorn JavaScript
espree JavaScript
meriyah JavaScript
css CSS
@@ -73,8 +74,8 @@ exports[`show external options with \`--help\` 1`] = `
Defaults to css.
--jsx-single-quote Use single quotes in JSX.
Defaults to false.
-- --parser
-+ --parser
+- --parser
++ --parser
Which parser to use.
--print-width The line length where Prettier will try wrap.
Defaults to 80.
diff --git a/tests/integration/__tests__/__snapshots__/schema.js.snap b/tests/integration/__tests__/__snapshots__/schema.js.snap
index b34fea769..82d6a8ce3 100644
--- a/tests/integration/__tests__/__snapshots__/schema.js.snap
+++ b/tests/integration/__tests__/__snapshots__/schema.js.snap
@@ -160,6 +160,12 @@ This option cannot be used with --range-start and --range-end.",
"typescript",
],
},
+ Object {
+ "description": "JavaScript",
+ "enum": Array [
+ "acorn",
+ ],
+ },
Object {
"description": "JavaScript",
"enum": Array [
diff --git a/tests/integration/__tests__/__snapshots__/support-info.js.snap b/tests/integration/__tests__/__snapshots__/support-info.js.snap
index b1162a743..b2b59cf5e 100644
--- a/tests/integration/__tests__/__snapshots__/support-info.js.snap
+++ b/tests/integration/__tests__/__snapshots__/support-info.js.snap
@@ -45,6 +45,7 @@ Object {
],
"JavaScript": Array [
"babel",
+ "acorn",
"espree",
"meriyah",
"babel-flow",
@@ -157,6 +158,7 @@ Object {
"babel-flow",
"babel-ts",
"typescript",
+ "acorn",
"espree",
"meriyah",
"css",
@@ -330,6 +332,7 @@ exports[`CLI --support-info (stdout) 1`] = `
\\"name\\": \\"JavaScript\\",
\\"parsers\\": [
\\"babel\\",
+ \\"acorn\\",
\\"espree\\",
\\"meriyah\\",
\\"babel-flow\\",
@@ -915,6 +918,7 @@ exports[`CLI --support-info (stdout) 1`] = `
\\"since\\": \\"1.4.0\\",
\\"value\\": \\"typescript\\"
},
+ { \\"description\\": \\"JavaScript\\", \\"since\\": \\"2.6.0\\", \\"value\\": \\"acorn\\" },
{ \\"description\\": \\"JavaScript\\", \\"since\\": \\"2.2.0\\", \\"value\\": \\"espree\\" },
{ \\"description\\": \\"JavaScript\\", \\"since\\": \\"2.2.0\\", \\"value\\": \\"meriyah\\" },
{ \\"description\\": \\"CSS\\", \\"since\\": \\"1.7.1\\", \\"value\\": \\"css\\" },
diff --git a/tests/integration/__tests__/bundle.js b/tests/integration/__tests__/bundle.js
index 0f12b81df..2129e1e0d 100644
--- a/tests/integration/__tests__/bundle.js
+++ b/tests/integration/__tests__/bundle.js
@@ -1,10 +1,10 @@
import path from "node:path";
-import globby from "globby";
import createEsmUtils from "esm-utils";
import { projectRoot } from "../env.js";
import coreOptions from "../../../src/main/core-options.js";
import codeSamples from "../../../website/playground/codeSamples.mjs";
import jestPathSerializer from "../path-serializer.js";
+const fastGlob = require("fast-glob");
const { require } = createEsmUtils(import.meta);
@@ -22,7 +22,7 @@ beforeAll(async () => {
path.join(distDirectory, "esm/standalone.mjs")
));
esmPlugins = await Promise.all(
- globby
+ fastGlob
.sync(["esm/parser-*.mjs"], { cwd: distDirectory, absolute: true })
.map(async (file) => (await import(file)).default)
);
@@ -30,7 +30,7 @@ beforeAll(async () => {
describe("standalone", () => {
const standalone = require(path.join(distDirectory, "standalone.js"));
- const plugins = globby
+ const plugins = fastGlob
.sync(["parser-*.js"], { cwd: distDirectory, absolute: true })
.map((file) => require(file));
diff --git a/tsconfig.json b/tsconfig.json
index 596ca2bca..d23191f9b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -15,6 +15,7 @@
"coverage/",
"test*.*",
"jest.config.mjs",
+ "vendors/*.js",
// [TBD] JavaScript sources *not* affected by src/language-*:
"src/main/ast-to-doc.js",
"src/main/core.js",
diff --git a/vendors/README.md b/vendors/README.md
new file mode 100644
index 000000000..a86bb314b
--- /dev/null
+++ b/vendors/README.md
@@ -0,0 +1,5 @@
+# `./vendors`
+
+**JavaScript Files that included in this directory are auto generated by [`/scripts/vendor/bundle-vendors.mjs`](../scripts/vendors/bundle-vendors.mjs).**
+
+See [`/scripts/vendors/README.md`](../scripts/vendors/README.md) for the context.
diff --git a/vendors/mem.d.ts b/vendors/mem.d.ts
new file mode 100644
index 000000000..b45991ef8
--- /dev/null
+++ b/vendors/mem.d.ts
@@ -0,0 +1,3 @@
+// This file is generated automatically.
+export {default} from "mem";
+export * from "mem";
diff --git a/vendors/mem.js b/vendors/mem.js
new file mode 100644
index 000000000..9d082affe
--- /dev/null
+++ b/vendors/mem.js
@@ -0,0 +1,280 @@
+// @ts-nocheck
+// This file is generated automatically
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __defProps = Object.defineProperties;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getOwnPropSymbols = Object.getOwnPropertySymbols;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __propIsEnum = Object.prototype.propertyIsEnumerable;
+var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
+var __spreadValues = (a, b) => {
+ for (var prop in b || (b = {}))
+ if (__hasOwnProp.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ if (__getOwnPropSymbols)
+ for (var prop of __getOwnPropSymbols(b)) {
+ if (__propIsEnum.call(b, prop))
+ __defNormalProp(a, prop, b[prop]);
+ }
+ return a;
+};
+var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
+var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __reExport = (target, module2, copyDefault, desc) => {
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
+ for (let key of __getOwnPropNames(module2))
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
+ }
+ return target;
+};
+var __toESM = (module2, isNodeMode) => {
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
+};
+var __toCommonJS = /* @__PURE__ */ ((cache) => {
+ return (module2, temp) => {
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
+ };
+})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
+
+// node_modules/p-defer/index.js
+var require_p_defer = __commonJS({
+ "node_modules/p-defer/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = () => {
+ const ret = {};
+ ret.promise = new Promise((resolve, reject) => {
+ ret.resolve = resolve;
+ ret.reject = reject;
+ });
+ return ret;
+ };
+ }
+});
+
+// node_modules/map-age-cleaner/dist/index.js
+var require_dist = __commonJS({
+ "node_modules/map-age-cleaner/dist/index.js"(exports, module2) {
+ "use strict";
+ var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function(resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function(resolve2) {
+ resolve2(result.value);
+ }).then(fulfilled, rejected);
+ }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+ var __importDefault = exports && exports.__importDefault || function(mod) {
+ return mod && mod.__esModule ? mod : { "default": mod };
+ };
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var p_defer_1 = __importDefault(require_p_defer());
+ function mapAgeCleaner2(map, property = "maxAge") {
+ let processingKey;
+ let processingTimer;
+ let processingDeferred;
+ const cleanup = () => __awaiter(this, void 0, void 0, function* () {
+ if (processingKey !== void 0) {
+ return;
+ }
+ const setupTimer = (item) => __awaiter(this, void 0, void 0, function* () {
+ processingDeferred = p_defer_1.default();
+ const delay = item[1][property] - Date.now();
+ if (delay <= 0) {
+ map.delete(item[0]);
+ processingDeferred.resolve();
+ return;
+ }
+ processingKey = item[0];
+ processingTimer = setTimeout(() => {
+ map.delete(item[0]);
+ if (processingDeferred) {
+ processingDeferred.resolve();
+ }
+ }, delay);
+ if (typeof processingTimer.unref === "function") {
+ processingTimer.unref();
+ }
+ return processingDeferred.promise;
+ });
+ try {
+ for (const entry of map) {
+ yield setupTimer(entry);
+ }
+ } catch (_a) {
+ }
+ processingKey = void 0;
+ });
+ const reset = () => {
+ processingKey = void 0;
+ if (processingTimer !== void 0) {
+ clearTimeout(processingTimer);
+ processingTimer = void 0;
+ }
+ if (processingDeferred !== void 0) {
+ processingDeferred.reject(void 0);
+ processingDeferred = void 0;
+ }
+ };
+ const originalSet = map.set.bind(map);
+ map.set = (key, value) => {
+ if (map.has(key)) {
+ map.delete(key);
+ }
+ const result = originalSet(key, value);
+ if (processingKey && processingKey === key) {
+ reset();
+ }
+ cleanup();
+ return result;
+ };
+ cleanup();
+ return map;
+ }
+ exports.default = mapAgeCleaner2;
+ module2.exports = mapAgeCleaner2;
+ module2.exports.default = mapAgeCleaner2;
+ }
+});
+
+// node_modules/mem/dist/index.js
+var dist_exports = {};
+__export(dist_exports, {
+ default: () => mem,
+ memClear: () => memClear,
+ memDecorator: () => memDecorator
+});
+
+// node_modules/mimic-fn/index.js
+var copyProperty = (to, from, property, ignoreNonConfigurable) => {
+ if (property === "length" || property === "prototype") {
+ return;
+ }
+ if (property === "arguments" || property === "caller") {
+ return;
+ }
+ const toDescriptor = Object.getOwnPropertyDescriptor(to, property);
+ const fromDescriptor = Object.getOwnPropertyDescriptor(from, property);
+ if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {
+ return;
+ }
+ Object.defineProperty(to, property, fromDescriptor);
+};
+var canCopyProperty = function(toDescriptor, fromDescriptor) {
+ return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value);
+};
+var changePrototype = (to, from) => {
+ const fromPrototype = Object.getPrototypeOf(from);
+ if (fromPrototype === Object.getPrototypeOf(to)) {
+ return;
+ }
+ Object.setPrototypeOf(to, fromPrototype);
+};
+var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/
+${fromBody}`;
+var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString");
+var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name");
+var changeToString = (to, from, name) => {
+ const withName = name === "" ? "" : `with ${name.trim()}() `;
+ const newToString = wrappedToString.bind(null, withName, from.toString());
+ Object.defineProperty(newToString, "name", toStringName);
+ Object.defineProperty(to, "toString", __spreadProps(__spreadValues({}, toStringDescriptor), { value: newToString }));
+};
+function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) {
+ const { name } = to;
+ for (const property of Reflect.ownKeys(from)) {
+ copyProperty(to, from, property, ignoreNonConfigurable);
+ }
+ changePrototype(to, from);
+ changeToString(to, from, name);
+ return to;
+}
+
+// node_modules/mem/dist/index.js
+var import_map_age_cleaner = __toESM(require_dist(), 1);
+var cacheStore = /* @__PURE__ */ new WeakMap();
+function mem(fn, { cacheKey, cache = /* @__PURE__ */ new Map(), maxAge } = {}) {
+ if (typeof maxAge === "number") {
+ (0, import_map_age_cleaner.default)(cache);
+ }
+ const memoized = function(...arguments_) {
+ const key = cacheKey ? cacheKey(arguments_) : arguments_[0];
+ const cacheItem = cache.get(key);
+ if (cacheItem) {
+ return cacheItem.data;
+ }
+ const result = fn.apply(this, arguments_);
+ cache.set(key, {
+ data: result,
+ maxAge: maxAge ? Date.now() + maxAge : Number.POSITIVE_INFINITY
+ });
+ return result;
+ };
+ mimicFunction(memoized, fn, {
+ ignoreNonConfigurable: true
+ });
+ cacheStore.set(memoized, cache);
+ return memoized;
+}
+function memDecorator(options = {}) {
+ const instanceMap = /* @__PURE__ */ new WeakMap();
+ return (target, propertyKey, descriptor) => {
+ const input = target[propertyKey];
+ if (typeof input !== "function") {
+ throw new TypeError("The decorated value must be a function");
+ }
+ delete descriptor.value;
+ delete descriptor.writable;
+ descriptor.get = function() {
+ if (!instanceMap.has(this)) {
+ const value = mem(input, options);
+ instanceMap.set(this, value);
+ return value;
+ }
+ return instanceMap.get(this);
+ };
+ };
+}
+function memClear(fn) {
+ const cache = cacheStore.get(fn);
+ if (!cache) {
+ throw new TypeError("Can't clear a function that was not memoized!");
+ }
+ if (typeof cache.clear !== "function") {
+ throw new TypeError("The cache Map can't be cleared!");
+ }
+ cache.clear();
+}
+module.exports = __toCommonJS(dist_exports);
+// Annotate the CommonJS export names for ESM import in node:
+0 && (module.exports = {
+ memClear,
+ memDecorator
+});
diff --git a/vendors/string-width.d.ts b/vendors/string-width.d.ts
new file mode 100644
index 000000000..55e7c60a0
--- /dev/null
+++ b/vendors/string-width.d.ts
@@ -0,0 +1,3 @@
+// This file is generated automatically.
+export {default} from "string-width";
+export * from "string-width";
diff --git a/vendors/string-width.js b/vendors/string-width.js
new file mode 100644
index 000000000..914635988
--- /dev/null
+++ b/vendors/string-width.js
@@ -0,0 +1,104 @@
+// @ts-nocheck
+// This file is generated automatically
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __reExport = (target, module2, copyDefault, desc) => {
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
+ for (let key of __getOwnPropNames(module2))
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
+ }
+ return target;
+};
+var __toESM = (module2, isNodeMode) => {
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
+};
+var __toCommonJS = /* @__PURE__ */ ((cache) => {
+ return (module2, temp) => {
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
+ };
+})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
+
+// node_modules/emoji-regex/index.js
+var require_emoji_regex = __commonJS({
+ "node_modules/emoji-regex/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = function() {
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+ };
+ }
+});
+
+// node_modules/string-width/index.js
+var string_width_exports = {};
+__export(string_width_exports, {
+ default: () => stringWidth
+});
+
+// node_modules/string-width/node_modules/ansi-regex/index.js
+function ansiRegex({ onlyFirst = false } = {}) {
+ const pattern = [
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
+ ].join("|");
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
+}
+
+// node_modules/string-width/node_modules/strip-ansi/index.js
+function stripAnsi(string) {
+ if (typeof string !== "string") {
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
+ }
+ return string.replace(ansiRegex(), "");
+}
+
+// node_modules/is-fullwidth-code-point/index.js
+function isFullwidthCodePoint(codePoint) {
+ if (!Number.isInteger(codePoint)) {
+ return false;
+ }
+ return codePoint >= 4352 && (codePoint <= 4447 || codePoint === 9001 || codePoint === 9002 || 11904 <= codePoint && codePoint <= 12871 && codePoint !== 12351 || 12880 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65131 || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 262141);
+}
+
+// node_modules/string-width/index.js
+var import_emoji_regex = __toESM(require_emoji_regex(), 1);
+function stringWidth(string) {
+ if (typeof string !== "string" || string.length === 0) {
+ return 0;
+ }
+ string = stripAnsi(string);
+ if (string.length === 0) {
+ return 0;
+ }
+ string = string.replace((0, import_emoji_regex.default)(), " ");
+ let width = 0;
+ for (let index = 0; index < string.length; index++) {
+ const codePoint = string.codePointAt(index);
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
+ continue;
+ }
+ if (codePoint >= 768 && codePoint <= 879) {
+ continue;
+ }
+ if (codePoint > 65535) {
+ index++;
+ }
+ width += isFullwidthCodePoint(codePoint) ? 2 : 1;
+ }
+ return width;
+}
+module.exports = __toCommonJS(string_width_exports);
+// Annotate the CommonJS export names for ESM import in node:
+0 && (module.exports = {});
diff --git a/website/package.json b/website/package.json
index 5854981ac..9d362592f 100644
--- a/website/package.json
+++ b/website/package.json
@@ -6,7 +6,7 @@
"update-stable-docs": "rm -rf ./versioned_docs ./versions.json && docusaurus-version stable"
},
"dependencies": {
- "clipboard": "2.0.8",
+ "clipboard": "2.0.10",
"codemirror-graphql": "1.2.11",
"lz-string": "1.4.4",
"prop-types": "15.8.1",
@@ -22,7 +22,7 @@
"concurrently": "7.0.0",
"docusaurus": "1.14.7",
"js-yaml": "4.1.0",
- "webpack": "5.65.0",
- "webpack-cli": "4.9.1"
+ "webpack": "5.68.0",
+ "webpack-cli": "4.9.2"
}
}
diff --git a/website/playground/codeSamples.mjs b/website/playground/codeSamples.mjs
index 8fbb71c0d..096383fdf 100644
--- a/website/playground/codeSamples.mjs
+++ b/website/playground/codeSamples.mjs
@@ -1,6 +1,7 @@
export default function getCodeSamples(parser) {
switch (parser) {
case "babel":
+ case "acorn":
case "espree":
case "meriyah":
return [
diff --git a/website/playground/markdown.js b/website/playground/markdown.js
index eb470e5ca..60e14dd25 100644
--- a/website/playground/markdown.js
+++ b/website/playground/markdown.js
@@ -38,6 +38,7 @@ function getMarkdownSyntax(options) {
case "babel":
case "babel-flow":
case "flow":
+ case "acorn":
case "espree":
case "meriyah":
return "jsx";
diff --git a/website/playground/util.js b/website/playground/util.js
index 62e991745..2752aebb6 100644
--- a/website/playground/util.js
+++ b/website/playground/util.js
@@ -69,7 +69,9 @@ export function getAstAutoFold(parser) {
case "babel-flow":
case "babel-ts":
case "typescript":
+ case "acorn":
case "espree":
+ case "meriyah":
case "json":
case "json5":
case "json-stringify":
diff --git a/website/versioned_docs/version-stable/options.md b/website/versioned_docs/version-stable/options.md
index 6e1c4b3d7..7f47cc830 100644
--- a/website/versioned_docs/version-stable/options.md
+++ b/website/versioned_docs/version-stable/options.md
@@ -345,13 +345,13 @@ Note that “in tandem” doesn’t mean “at the same time”. When the two op
_First available in v1.8.2_
-By default, Prettier will wrap markdown text as-is since some services use a linebreak-sensitive renderer, e.g. GitHub comment and BitBucket. In some cases you may want to rely on editor/viewer soft wrapping instead, so this option allows you to opt out with `"never"`.
+By default, Prettier will not change wrapping in markdown text since some services use a linebreak-sensitive renderer, e.g. GitHub comments and BitBucket. To have Prettier wrap prose to the print width, change this option to "always". If you want Prettier to force all prose blocks to be on a single line and rely on editor/viewer soft wrapping instead, you can use `"never"`.
Valid options:
- `"always"` - Wrap prose if it exceeds the print width.
-- `"never"` - Do not wrap prose.
-- `"preserve"` - Wrap prose as-is. _First available in v1.9.0_
+- `"never"` - Un-wrap each block of prose into one line.
+- `"preserve"` - Do nothing, leave prose as-is. _First available in v1.9.0_
| Default | CLI Override | API Override |
| ------------ | ----------------------------------------------------------- | ----------------------------------------------------------- |
diff --git a/website/yarn.lock b/website/yarn.lock
index 7fa2b6b2a..9ad284749 100644
--- a/website/yarn.lock
+++ b/website/yarn.lock
@@ -2198,22 +2198,22 @@
"@webassemblyjs/ast" "1.11.1"
"@xtuc/long" "4.2.2"
-"@webpack-cli/configtest@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.0.tgz#8342bef0badfb7dfd3b576f2574ab80c725be043"
- integrity sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==
+"@webpack-cli/configtest@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.1.1.tgz#9f53b1b7946a6efc2a749095a4f450e2932e8356"
+ integrity sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==
-"@webpack-cli/info@^1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.0.tgz#b9179c3227ab09cbbb149aa733475fcf99430223"
- integrity sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==
+"@webpack-cli/info@^1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.4.1.tgz#2360ea1710cbbb97ff156a3f0f24556e0fc1ebea"
+ integrity sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==
dependencies:
envinfo "^7.7.3"
-"@webpack-cli/serve@^1.6.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.0.tgz#2c275aa05c895eccebbfc34cfb223c6e8bd591a2"
- integrity sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==
+"@webpack-cli/serve@^1.6.1":
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.6.1.tgz#0de2875ac31b46b6c5bb1ae0a7d7f0ba5678dffe"
+ integrity sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
@@ -3037,10 +3037,10 @@ classnames@^2.2.6:
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
-clipboard@2.0.8:
- version "2.0.8"
- resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.8.tgz#ffc6c103dd2967a83005f3f61976aa4655a4cdba"
- integrity sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==
+clipboard@2.0.10:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.10.tgz#e61f6f7139ac5044c58c0484dcac9fb2a918bfd6"
+ integrity sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==
dependencies:
good-listener "^1.2.2"
select "^1.1.2"
@@ -4957,10 +4957,10 @@ got@^8.3.1:
url-parse-lax "^3.0.0"
url-to-options "^1.0.1"
-graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
- version "4.2.6"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
- integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
+graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+ version "4.2.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
graphql-config@^4.1.0:
version "4.1.0"
@@ -9033,15 +9033,15 @@ webidl-conversions@^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==
-webpack-cli@4.9.1:
- version "4.9.1"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.1.tgz#b64be825e2d1b130f285c314caa3b1ba9a4632b3"
- integrity sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==
+webpack-cli@4.9.2:
+ version "4.9.2"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.9.2.tgz#77c1adaea020c3f9e2db8aad8ea78d235c83659d"
+ integrity sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==
dependencies:
"@discoveryjs/json-ext" "^0.5.0"
- "@webpack-cli/configtest" "^1.1.0"
- "@webpack-cli/info" "^1.4.0"
- "@webpack-cli/serve" "^1.6.0"
+ "@webpack-cli/configtest" "^1.1.1"
+ "@webpack-cli/info" "^1.4.1"
+ "@webpack-cli/serve" "^1.6.1"
colorette "^2.0.14"
commander "^7.0.0"
execa "^5.0.0"
@@ -9059,15 +9059,15 @@ webpack-merge@^5.7.3:
clone-deep "^4.0.1"
wildcard "^2.0.0"
-webpack-sources@^3.2.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260"
- integrity sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==
+webpack-sources@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@5.65.0:
- version "5.65.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be"
- integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw==
+webpack@5.68.0:
+ version "5.68.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.68.0.tgz#a653a58ed44280062e47257f260117e4be90d560"
+ integrity sha512-zUcqaUO0772UuuW2bzaES2Zjlm/y3kRBQDVFVCge+s2Y8mwuUTdperGaAv65/NtRL/1zanpSJOq/MD8u61vo6g==
dependencies:
"@types/eslint-scope" "^3.7.0"
"@types/estree" "^0.0.50"
@@ -9083,7 +9083,7 @@ webpack@5.65.0:
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
json-parse-better-errors "^1.0.2"
loader-runner "^4.2.0"
mime-types "^2.1.27"
@@ -9092,7 +9092,7 @@ webpack@5.65.0:
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
watchpack "^2.3.1"
- webpack-sources "^3.2.2"
+ webpack-sources "^3.2.3"
websocket-driver@>=0.5.1:
version "0.7.4"
diff --git a/yarn.lock b/yarn.lock
index b5c4cd634..94f90f354 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,18 +2,20 @@
# yarn lockfile v1
-"@angular/compiler@12.2.15":
- version "12.2.15"
- resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-12.2.15.tgz#9ad9d66bc777cb9420e42bbffb6d0fb78fa3635d"
- integrity sha512-w1n9J0C1KPzJyljtXY+DXcYjYSZmiWyFj31q5tFcYEA6jlCgDfZME2S3ilNGdmZAzfdPK4SVMi2ni2hFg7iQkw==
+"@ampproject/remapping@^2.0.0":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.0.4.tgz#ab4b6d858526ebee0d6c3aa5c3fb56a941c0d7be"
+ integrity sha512-zU3pj3pf//YhaoozRTYKaL20KopXrzuZFc/8Ylc49AuV8grYKH23TTq9JJoR70F8zQbil58KjSchZTWeX+jrIQ==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.0"
+
+"@angular/compiler@12.2.16":
+ version "12.2.16"
+ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-12.2.16.tgz#1aa9b3fbd3fe900118ab371d30c090fbc137a15f"
+ integrity sha512-nsYEw+yu8QyeqPf9nAmG419i1mtGM4v8+U+S3eQHQFXTgJzLymMykWHYu2ETdjUpNSLK6xcIQDBWtWnWSfJjAA==
dependencies:
tslib "^2.2.0"
-"@assemblyscript/loader@^0.10.1":
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06"
- integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==
-
"@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"
@@ -28,42 +30,57 @@
dependencies:
"@babel/highlight" "^7.16.7"
-"@babel/compat-data@^7.16.4":
- version "7.16.4"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e"
- integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34"
+ integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==
-"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf"
- integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==
+"@babel/core@7.17.0", "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.0.tgz#16b8772b0a567f215839f689c5ded6bb20e864d5"
+ integrity sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==
dependencies:
+ "@ampproject/remapping" "^2.0.0"
"@babel/code-frame" "^7.16.7"
- "@babel/generator" "^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.16.7"
- "@babel/parser" "^7.16.7"
+ "@babel/helpers" "^7.17.0"
+ "@babel/parser" "^7.17.0"
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^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"
- source-map "^0.5.0"
-"@babel/generator@^7.16.7", "@babel/generator@^7.7.2":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb"
- integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==
+"@babel/generator@^7.17.0", "@babel/generator@^7.7.2":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e"
+ integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==
dependencies:
- "@babel/types" "^7.16.7"
+ "@babel/types" "^7.17.0"
jsesc "^2.5.1"
source-map "^0.5.0"
-"@babel/helper-compilation-targets@^7.16.7":
+"@babel/helper-annotate-as-pure@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b"
+ integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
@@ -73,6 +90,41 @@
browserslist "^4.17.5"
semver "^6.3.0"
+"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7":
+ version "7.17.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21"
+ integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+
+"@babel/helper-create-regexp-features-plugin@^7.16.7":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1"
+ integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ regexpu-core "^5.0.1"
+
+"@babel/helper-define-polyfill-provider@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665"
+ integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.13.0"
+ "@babel/helper-module-imports" "^7.12.13"
+ "@babel/helper-plugin-utils" "^7.13.0"
+ "@babel/traverse" "^7.13.0"
+ debug "^4.1.1"
+ lodash.debounce "^4.0.8"
+ resolve "^1.14.2"
+ semver "^6.1.2"
+
"@babel/helper-environment-visitor@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
@@ -80,6 +132,13 @@
dependencies:
"@babel/types" "^7.16.7"
+"@babel/helper-explode-assignable-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a"
+ integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-function-name@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
@@ -103,7 +162,14 @@
dependencies:
"@babel/types" "^7.16.7"
-"@babel/helper-module-imports@^7.16.7":
+"@babel/helper-member-expression-to-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
+ integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-imports@^7.12.13", "@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==
@@ -124,11 +190,38 @@
"@babel/traverse" "^7.16.7"
"@babel/types" "^7.16.7"
-"@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.8.0":
+"@babel/helper-optimise-call-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2"
+ integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
+"@babel/helper-remap-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3"
+ integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-wrap-function" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helper-replace-supers@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1"
+ integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
"@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"
@@ -136,6 +229,13 @@
dependencies:
"@babel/types" "^7.16.7"
+"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
+ version "7.16.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09"
+ integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==
+ dependencies:
+ "@babel/types" "^7.16.0"
+
"@babel/helper-split-export-declaration@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
@@ -153,28 +253,182 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
-"@babel/helpers@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc"
- integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==
+"@babel/helper-wrap-function@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200"
+ integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==
+ dependencies:
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helpers@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.0.tgz#79cdf6c66a579f3a7b5e739371bc63ca0306886b"
+ integrity sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==
dependencies:
"@babel/template" "^7.16.7"
- "@babel/traverse" "^7.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/traverse" "^7.17.0"
+ "@babel/types" "^7.17.0"
"@babel/highlight@^7.0.0", "@babel/highlight@^7.16.7":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b"
- integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==
+ version "7.16.10"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88"
+ integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==
dependencies:
"@babel/helper-validator-identifier" "^7.16.7"
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@7.16.7", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.7.2":
+"@babel/parser@7.17.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c"
+ integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e"
- integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==
+ 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.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"
+ integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9"
+ integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
+
+"@babel/plugin-proposal-async-generator-functions@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8"
+ integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-proposal-class-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0"
+ integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-proposal-class-static-block@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a"
+ integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
+"@babel/plugin-proposal-dynamic-import@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2"
+ integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-proposal-export-namespace-from@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163"
+ integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8"
+ integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea"
+ integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99"
+ integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9"
+ integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8"
+ integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==
+ dependencies:
+ "@babel/compat-data" "^7.16.4"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.16.7"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf"
+ integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-proposal-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a"
+ integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.16.11":
+ version "7.16.11"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50"
+ integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.16.10"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-proposal-private-property-in-object@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce"
+ integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2"
+ integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
@@ -190,13 +444,34 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-class-properties@^7.8.3":
+"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3":
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/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/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
"@babel/plugin-syntax-import-meta@^7.8.3":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
@@ -211,7 +486,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
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==
@@ -225,7 +500,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-numeric-separator@^7.8.3":
+"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3":
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==
@@ -253,7 +528,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-top-level-await@^7.8.3":
+"@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.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3":
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==
@@ -261,11 +543,359 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-typescript@^7.7.2":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz#2feeb13d9334cc582ea9111d3506f773174179bb"
- integrity sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8"
+ integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==
dependencies:
- "@babel/helper-plugin-utils" "^7.14.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-arrow-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154"
+ integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808"
+ integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+
+"@babel/plugin-transform-block-scoped-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620"
+ integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-block-scoping@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87"
+ integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-classes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00"
+ integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470"
+ integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-destructuring@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23"
+ integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241"
+ integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-duplicate-keys@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9"
+ integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-exponentiation-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b"
+ integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-for-of@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c"
+ integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf"
+ integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1"
+ integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-member-expression-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384"
+ integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-modules-amd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186"
+ integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe"
+ integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-systemjs@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7"
+ integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-umd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618"
+ integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252"
+ integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+
+"@babel/plugin-transform-new-target@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244"
+ integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-object-super@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94"
+ integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+
+"@babel/plugin-transform-parameters@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f"
+ integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-property-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55"
+ integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-regenerator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb"
+ integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==
+ dependencies:
+ regenerator-transform "^0.14.2"
+
+"@babel/plugin-transform-reserved-words@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586"
+ integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-shorthand-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a"
+ integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-spread@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44"
+ integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+
+"@babel/plugin-transform-sticky-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660"
+ integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-template-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab"
+ integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-typeof-symbol@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e"
+ integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-unicode-escapes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3"
+ integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-unicode-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2"
+ integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/preset-env@7.16.11":
+ version "7.16.11"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982"
+ integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==
+ dependencies:
+ "@babel/compat-data" "^7.16.8"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-async-generator-functions" "^7.16.8"
+ "@babel/plugin-proposal-class-properties" "^7.16.7"
+ "@babel/plugin-proposal-class-static-block" "^7.16.7"
+ "@babel/plugin-proposal-dynamic-import" "^7.16.7"
+ "@babel/plugin-proposal-export-namespace-from" "^7.16.7"
+ "@babel/plugin-proposal-json-strings" "^7.16.7"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7"
+ "@babel/plugin-proposal-numeric-separator" "^7.16.7"
+ "@babel/plugin-proposal-object-rest-spread" "^7.16.7"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-private-methods" "^7.16.11"
+ "@babel/plugin-proposal-private-property-in-object" "^7.16.7"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+ "@babel/plugin-syntax-top-level-await" "^7.14.5"
+ "@babel/plugin-transform-arrow-functions" "^7.16.7"
+ "@babel/plugin-transform-async-to-generator" "^7.16.8"
+ "@babel/plugin-transform-block-scoped-functions" "^7.16.7"
+ "@babel/plugin-transform-block-scoping" "^7.16.7"
+ "@babel/plugin-transform-classes" "^7.16.7"
+ "@babel/plugin-transform-computed-properties" "^7.16.7"
+ "@babel/plugin-transform-destructuring" "^7.16.7"
+ "@babel/plugin-transform-dotall-regex" "^7.16.7"
+ "@babel/plugin-transform-duplicate-keys" "^7.16.7"
+ "@babel/plugin-transform-exponentiation-operator" "^7.16.7"
+ "@babel/plugin-transform-for-of" "^7.16.7"
+ "@babel/plugin-transform-function-name" "^7.16.7"
+ "@babel/plugin-transform-literals" "^7.16.7"
+ "@babel/plugin-transform-member-expression-literals" "^7.16.7"
+ "@babel/plugin-transform-modules-amd" "^7.16.7"
+ "@babel/plugin-transform-modules-commonjs" "^7.16.8"
+ "@babel/plugin-transform-modules-systemjs" "^7.16.7"
+ "@babel/plugin-transform-modules-umd" "^7.16.7"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8"
+ "@babel/plugin-transform-new-target" "^7.16.7"
+ "@babel/plugin-transform-object-super" "^7.16.7"
+ "@babel/plugin-transform-parameters" "^7.16.7"
+ "@babel/plugin-transform-property-literals" "^7.16.7"
+ "@babel/plugin-transform-regenerator" "^7.16.7"
+ "@babel/plugin-transform-reserved-words" "^7.16.7"
+ "@babel/plugin-transform-shorthand-properties" "^7.16.7"
+ "@babel/plugin-transform-spread" "^7.16.7"
+ "@babel/plugin-transform-sticky-regex" "^7.16.7"
+ "@babel/plugin-transform-template-literals" "^7.16.7"
+ "@babel/plugin-transform-typeof-symbol" "^7.16.7"
+ "@babel/plugin-transform-unicode-escapes" "^7.16.7"
+ "@babel/plugin-transform-unicode-regex" "^7.16.7"
+ "@babel/preset-modules" "^0.1.5"
+ "@babel/types" "^7.16.8"
+ babel-plugin-polyfill-corejs2 "^0.3.0"
+ babel-plugin-polyfill-corejs3 "^0.5.0"
+ babel-plugin-polyfill-regenerator "^0.3.0"
+ core-js-compat "^3.20.2"
+ semver "^6.3.0"
+
+"@babel/preset-modules@^0.1.5":
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9"
+ integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/runtime@^7.8.4":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.0.tgz#b8d142fc0f7664fb3d9b5833fd40dcbab89276c0"
+ integrity sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ==
+ dependencies:
+ regenerator-runtime "^0.13.4"
"@babel/template@^7.16.7", "@babel/template@^7.3.3":
version "7.16.7"
@@ -276,26 +906,26 @@
"@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7"
-"@babel/traverse@^7.16.7", "@babel/traverse@^7.7.2":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76"
- integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==
+"@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.7.2":
+ 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.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.16.7"
- "@babel/types" "^7.16.7"
+ "@babel/parser" "^7.17.0"
+ "@babel/types" "^7.17.0"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
- version "7.16.7"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159"
- integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==
+"@babel/types@7.17.0", "@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+ version "7.17.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b"
+ integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==
dependencies:
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
@@ -305,24 +935,24 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@cspell/cspell-bundled-dicts@^5.15.1":
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.15.1.tgz#c08a60cf63a10c566f79731b9d6a369a7c2d8f73"
- integrity sha512-OYVO7E37TOl/sM96MovfnSyUg7DXxC5St6pP/Rjqe8PaRedcGkrygDo1v7Cj0WYzGROlegFMk6h2BEnAfGFt8w==
+"@cspell/cspell-bundled-dicts@^5.18.3":
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-5.18.3.tgz#194d01f1171707268410e65734b60974a60abe43"
+ integrity sha512-Vrhgfx5cvGYCP+zgydZkurXWLNqncAySCbzzXf+O66cXxccVSL6ztnPPvQNMjrwj1lFndVSpRhgWiiL64Akafw==
dependencies:
"@cspell/dict-ada" "^1.1.2"
"@cspell/dict-aws" "^1.0.14"
- "@cspell/dict-bash" "^1.0.17"
+ "@cspell/dict-bash" "^1.0.18"
"@cspell/dict-companies" "^2.0.2"
"@cspell/dict-cpp" "^1.1.40"
"@cspell/dict-cryptocurrencies" "^1.0.10"
"@cspell/dict-csharp" "^2.0.1"
- "@cspell/dict-css" "^1.0.12"
+ "@cspell/dict-css" "^1.0.13"
"@cspell/dict-django" "^1.0.26"
"@cspell/dict-dotnet" "^1.0.32"
"@cspell/dict-elixir" "^1.0.26"
"@cspell/dict-en-gb" "^1.1.33"
- "@cspell/dict-en_us" "^2.1.4"
+ "@cspell/dict-en_us" "^2.1.5"
"@cspell/dict-filetypes" "^2.0.1"
"@cspell/dict-fonts" "^1.0.14"
"@cspell/dict-fullstack" "^2.0.4"
@@ -340,18 +970,24 @@
"@cspell/dict-powershell" "^1.0.19"
"@cspell/dict-public-licenses" "^1.0.4"
"@cspell/dict-python" "^2.0.5"
+ "@cspell/dict-r" "^1.0.1"
"@cspell/dict-ruby" "^1.0.15"
"@cspell/dict-rust" "^1.0.23"
"@cspell/dict-scala" "^1.0.21"
- "@cspell/dict-software-terms" "^2.0.12"
+ "@cspell/dict-software-terms" "^2.0.13"
"@cspell/dict-swift" "^1.0.1"
- "@cspell/dict-typescript" "^1.0.19"
+ "@cspell/dict-typescript" "^1.0.20"
"@cspell/dict-vue" "^2.0.1"
-"@cspell/cspell-types@^5.15.1":
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.15.1.tgz#9ef81c2f704aae18ba91f9e9967502711b529f54"
- integrity sha512-rZCJnTQ5O66c5s67nKWw5imvIcs9iHLnU7WNF0AyTGGEP+kpYK/lRLGtU/GICoxTY1V6zjOR6Qow9xmSsNG6zQ==
+"@cspell/cspell-pipe@^5.18.3":
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-pipe/-/cspell-pipe-5.18.3.tgz#b2e07092512d49a8fca41152daf4d18e29ccd357"
+ integrity sha512-2F0Isir1gCJPuIHuhAnWiYyyRMbiN3+zgH7JpVaX/abSQcm8AnSN5Ea2T2U/nmJmu9qLuFSi/WyHtsxhOghkKw==
+
+"@cspell/cspell-types@^5.18.3":
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/@cspell/cspell-types/-/cspell-types-5.18.3.tgz#ad4b792ead2369ba901adc5467cc87d2d370b5fb"
+ integrity sha512-AV1I8kK2O+57+QSyBe7uiVIqvnA//AO7r5uVkfuK0eqLyaQu8SydFq54PG2uk1+SHDfFvmIhJ1ckBgYB5JaIwg==
"@cspell/dict-ada@^1.1.2":
version "1.1.2"
@@ -363,10 +999,10 @@
resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-1.0.14.tgz#beddede1053ce3622400e36c65da9fd2954e939d"
integrity sha512-K21CfB4ZpKYwwDQiPfic2zJA/uxkbsd4IQGejEvDAhE3z8wBs6g6BwwqdVO767M9NgZqc021yAVpr79N5pWe3w==
-"@cspell/dict-bash@^1.0.17":
- version "1.0.17"
- resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-1.0.17.tgz#5e10e8e276e646f8e77fd3d117b49d25b83d52ab"
- integrity sha512-BlX+pnDlLmIf776C9d71QjXl4NOIz+yloeixx1ZZjrwvKPLF+ffE/Ez13eV+D9R2Ps1rW10UvW8u3Hbmwme+Fw==
+"@cspell/dict-bash@^1.0.18":
+ version "1.0.18"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-bash/-/dict-bash-1.0.18.tgz#1a2a07075c1ea97923f405e32713bf23d26d67ab"
+ integrity sha512-kJIqQ+FD2TCSgaaP5XLEDgy222+pVWTc+VhveNO++gnTWU3BCVjkD5LjfW7g/CmGONnz+nwXDueWspProaSdJw==
"@cspell/dict-companies@^2.0.2":
version "2.0.2"
@@ -388,10 +1024,10 @@
resolved "https://registry.yarnpkg.com/@cspell/dict-csharp/-/dict-csharp-2.0.1.tgz#86ec4fa42ba9a4cc57df28ec7a335b56bf751c5b"
integrity sha512-ZzAr+WRP2FUtXHZtfhe8f3j9vPjH+5i44Hcr5JqbWxmqciGoTbWBPQXwu9y+J4mbdC69HSWRrVGkNJ8rQk8pSw==
-"@cspell/dict-css@^1.0.12":
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/@cspell/dict-css/-/dict-css-1.0.12.tgz#ec01cec102c8b128aad5e29c97dfb7a982887e12"
- integrity sha512-K6yuxej7n454O7dwKG6lHacHrAOMZ0PhMEbmV6qH2JH0U4TtWXfBASYugHvXZCDDx1UObpiJP+3tQJiBqfGpHA==
+"@cspell/dict-css@^1.0.13":
+ version "1.0.13"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-css/-/dict-css-1.0.13.tgz#805a5844dd9739b6cd026b5f1b4ce8e4213d560b"
+ integrity sha512-HU8RbFRoGanFH85mT01Ot/Ay48ixr/gG25VPLtdq56QTrmPsw79gxYm/5Qay16eQbpoPIxaj5CAWNam+DX4GbA==
"@cspell/dict-django@^1.0.26":
version "1.0.26"
@@ -413,10 +1049,10 @@
resolved "https://registry.yarnpkg.com/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz#7f1fd90fc364a5cb77111b5438fc9fcf9cc6da0e"
integrity sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==
-"@cspell/dict-en_us@^2.1.4":
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-2.1.4.tgz#be68ed8601dd84d41a40a1fee23b521d3b60e688"
- integrity sha512-W4b+aIvZ637FqtTmrTe/T9i9748cuTQf82eWUgV9O296WzZj7rCxm+rzOrmRTAcCmU+9+6Cdsr0unETFQfuxww==
+"@cspell/dict-en_us@^2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-en_us/-/dict-en_us-2.1.5.tgz#456914e631d10d936fe1a20313c5f9cce78e8b60"
+ integrity sha512-Q+LgFjrQw4gJnP+aHbVW5/TZlx9ccOCcjBsZYpTEXT/VW04NUX7+EN8bOri+wTEppSQVfl6NQ3bVkzPIjGXLzA==
"@cspell/dict-filetypes@^2.0.1":
version "2.0.1"
@@ -503,6 +1139,11 @@
resolved "https://registry.yarnpkg.com/@cspell/dict-python/-/dict-python-2.0.5.tgz#eebe6f53a8b5f29addd963951a701a7afedfe6b0"
integrity sha512-WkyGYtNmUsOHsWixck7AxNvveDgVPqw0H51hzIY+/5u3c94wZUweIj0vfFOGIfOBq8e1ZxpjumKBxVDGXTmQkw==
+"@cspell/dict-r@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-r/-/dict-r-1.0.1.tgz#09fecd4748dd50d1a7f61d4bf36b72476b12120d"
+ integrity sha512-Lrtu6ULfA16tZ2nfq1AkH3uO8IbTbAqxSt/Konif698yB7QM5keEInhCRzT/E2nYrIKumayNwqVUZxabIWkoSQ==
+
"@cspell/dict-ruby@^1.0.15":
version "1.0.15"
resolved "https://registry.yarnpkg.com/@cspell/dict-ruby/-/dict-ruby-1.0.15.tgz#5da9f54d97deed31cc35772502282b45b20e7aa7"
@@ -518,31 +1159,26 @@
resolved "https://registry.yarnpkg.com/@cspell/dict-scala/-/dict-scala-1.0.21.tgz#bfda392329061e2352fbcd33d228617742c93831"
integrity sha512-5V/R7PRbbminTpPS3ywgdAalI9BHzcEjEj9ug4kWYvBIGwSnS7T6QCFCiu+e9LvEGUqQC+NHgLY4zs1NaBj2vA==
-"@cspell/dict-software-terms@^2.0.12":
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-2.0.12.tgz#9db09e7871dd6d80b56d8b0b584f3681a436e3fe"
- integrity sha512-zsgraHo5PIDY1mTaWGA2NsxhO8g85inD758pEQL1MeKTFlGiFHT4vW+faryzhvBT5LOMH4LnTs0yGrMyn7JlkQ==
+"@cspell/dict-software-terms@^2.0.13":
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-software-terms/-/dict-software-terms-2.0.14.tgz#5f113eaaae53c47174b9cc9b111bdafb3ec3c1c9"
+ integrity sha512-0tuMmBSsOfL5HH6un8gt/lF9Rvs/jXMEQyjjmd04IznVL7X5kxVhkrS8sbudq2orPgM5HIa8odPYdFuTCKDvNw==
"@cspell/dict-swift@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@cspell/dict-swift/-/dict-swift-1.0.1.tgz#e289680bf79538096eb7c36b21aeb97e97fdd9fc"
integrity sha512-M4onLt10Ptld8Q1BwBit8BBYVZ0d2ZEiBTW1AXekIVPQkPKkwa/RkGlR0GESWNTC2Zbmt/qge7trksVdaYVWFQ==
-"@cspell/dict-typescript@^1.0.19":
- version "1.0.19"
- resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-1.0.19.tgz#44f3ad1c93ffc89ebf98fa6964e1634e6612fc30"
- integrity sha512-qmJApzoVskDeJnLZzZMaafEDGbEg5Elt4c3Mpg49SWzIHm1N4VXCp5CcFfHsOinJ30dGrs3ARAJGJZIw56kK6A==
+"@cspell/dict-typescript@^1.0.20":
+ version "1.0.20"
+ resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-1.0.20.tgz#2a28bb94a06490b25bbb9180b875d6f16ebb8400"
+ integrity sha512-yIuGeeZtQA2gqpGefGjZqBl8iGJpIYWz0QzDqsscNi2qfSnLsbjM0RkRbTehM8y9gGGe7xfgUP5adxceJa5Krg==
"@cspell/dict-vue@^2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@cspell/dict-vue/-/dict-vue-2.0.1.tgz#7514875f760ae755d2a6ef1fd00917d107682fe1"
integrity sha512-n9So2C2Zw+uSDRzb2h9wq3PjZBqoHx+vBvu6a34H2qpumNjZ6HaEronrzX5tXJJXzOtocIQYrLxdd128TAU3+g==
-"@esbuild-plugins/node-globals-polyfill@0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz#a313ab3efbb2c17c8ce376aa216c627c9b40f9d7"
- integrity sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==
-
"@esbuild-plugins/node-modules-polyfill@0.1.4":
version "0.1.4"
resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz#eb2f55da11967b2986c913f1a7957d1c868849c0"
@@ -629,9 +1265,9 @@
integrity sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA==
"@humanwhocodes/config-array@^0.9.2":
- version "0.9.2"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914"
- integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e"
+ integrity sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==
dependencies:
"@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
@@ -663,199 +1299,168 @@
resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-"@jest/console@^27.4.2":
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.2.tgz#7a95612d38c007ddb528ee446fe5e5e785e685ce"
- integrity sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==
+"@jest/console@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.0.tgz#82289a589ad5803555b50b64178128b7a8e45282"
+ integrity sha512-WUzX5neFb0IOQOy/7A2VhiGdxJKk85Xns2Oq29JaHmtnSel+BsjwyQZxzAs2Xxfd2i452fwdDG9ox/IWi81bdQ==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
- jest-message-util "^27.4.2"
- jest-util "^27.4.2"
+ jest-message-util "^27.5.0"
+ jest-util "^27.5.0"
slash "^3.0.0"
-"@jest/console@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.6.tgz#0742e6787f682b22bdad56f9db2a8a77f6a86107"
- integrity sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==
+"@jest/core@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.0.tgz#27b383f497ff1671cc30fd5e22eba9d9b10c3031"
+ integrity sha512-DcUTkZyon+dRozTEjy38Bgt3PIU51GdUJuz3uHKg5maGtmCaYqPUGiM3Xddqi7eIMC7E3fTGIlHqH9i0pTOy6Q==
dependencies:
- "@jest/types" "^27.4.2"
- "@types/node" "*"
- chalk "^4.0.0"
- jest-message-util "^27.4.6"
- jest-util "^27.4.2"
- slash "^3.0.0"
-
-"@jest/core@^27.4.7":
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.7.tgz#84eabdf42a25f1fa138272ed229bcf0a1b5e6913"
- integrity sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==
- dependencies:
- "@jest/console" "^27.4.6"
- "@jest/reporters" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/reporters" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
emittery "^0.8.1"
exit "^0.1.2"
- graceful-fs "^4.2.4"
- jest-changed-files "^27.4.2"
- jest-config "^27.4.7"
- jest-haste-map "^27.4.6"
- jest-message-util "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-resolve "^27.4.6"
- jest-resolve-dependencies "^27.4.6"
- jest-runner "^27.4.6"
- jest-runtime "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
- jest-watcher "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-changed-files "^27.5.0"
+ jest-config "^27.5.0"
+ jest-haste-map "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-resolve-dependencies "^27.5.0"
+ jest-runner "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
+ jest-watcher "^27.5.0"
micromatch "^4.0.4"
rimraf "^3.0.0"
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/environment@^27.4.2", "@jest/environment@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.4.6.tgz#1e92885d64f48c8454df35ed9779fbcf31c56d8b"
- integrity sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==
+"@jest/environment@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.0.tgz#a473bc76261aad7dfa3a1d8e35155953a5ba3436"
+ integrity sha512-lg0JFsMaLKgpwzs0knOg21Z4OQwaJoBLutnmYzip4tyLTXP21VYWtYGpLXgx42fw/Mw05m1WDXWKgwR6WnsiTw==
dependencies:
- "@jest/fake-timers" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
- jest-mock "^27.4.6"
+ jest-mock "^27.5.0"
-"@jest/fake-timers@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.4.6.tgz#e026ae1671316dbd04a56945be2fa251204324e8"
- integrity sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==
+"@jest/fake-timers@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.0.tgz#f9e07b4c723a535f7c532cfb403394fa40d88c8a"
+ integrity sha512-e3WrlpqSHq3HAQ03JFjTn8YCrsyg640/sr1rjkM2rNv8z1ufjudpv4xq6DvvTJYB6FuUrfg0g+7bSKPet5QfCQ==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@sinonjs/fake-timers" "^8.0.1"
"@types/node" "*"
- jest-message-util "^27.4.6"
- jest-mock "^27.4.6"
- jest-util "^27.4.2"
+ jest-message-util "^27.5.0"
+ jest-mock "^27.5.0"
+ jest-util "^27.5.0"
-"@jest/globals@27.4.2":
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.2.tgz#56a402c5ebf22eba1d34e900772147f5126ea2d8"
- integrity sha512-KkfaHEttlGpXYAQTZHgrESiEPx2q/DKAFLGLFda1uGVrqc17snd3YVPhOxlXOHIzVPs+lQ/SDB2EIvxyGzb3Ew==
+"@jest/globals@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.0.tgz#16271323f79e3b0fe0842e9588241d202a6c2aff"
+ integrity sha512-wWpMnTiR65Q4JD7fr2BqN+ZDbi99mmILnEM6u7AaX4geASEIVvQsiB4RCvwZrIX5YZCsAjviJQVq9CYddLABkg==
dependencies:
- "@jest/environment" "^27.4.2"
- "@jest/types" "^27.4.2"
- expect "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/types" "^27.5.0"
+ expect "^27.5.0"
-"@jest/globals@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.6.tgz#3f09bed64b0fd7f5f996920258bd4be8f52f060a"
- integrity sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==
- dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/types" "^27.4.2"
- expect "^27.4.6"
-
-"@jest/reporters@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.6.tgz#b53dec3a93baf9b00826abf95b932de919d6d8dd"
- integrity sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==
+"@jest/reporters@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.0.tgz#e7602e12656b5051bf4e784cbdd82d4ec1299e33"
+ integrity sha512-DG+BmVSx2uaJSTKz5z1eScgHTQ6/cZ5CCKSpmpr4sXQPwV2V5aUMOBDwXX1MnqNRhH7/Rq9K97ynnocvho5aMA==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
collect-v8-coverage "^1.0.0"
exit "^0.1.2"
glob "^7.1.2"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
istanbul-lib-coverage "^3.0.0"
istanbul-lib-instrument "^5.1.0"
istanbul-lib-report "^3.0.0"
istanbul-lib-source-maps "^4.0.0"
istanbul-reports "^3.1.3"
- jest-haste-map "^27.4.6"
- jest-resolve "^27.4.6"
- jest-util "^27.4.2"
- jest-worker "^27.4.6"
+ jest-haste-map "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-util "^27.5.0"
+ jest-worker "^27.5.0"
slash "^3.0.0"
source-map "^0.6.0"
string-length "^4.0.1"
terminal-link "^2.0.0"
v8-to-istanbul "^8.1.0"
-"@jest/source-map@^27.4.0":
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.4.0.tgz#2f0385d0d884fb3e2554e8f71f8fa957af9a74b6"
- integrity sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==
+"@jest/source-map@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.0.tgz#f22a7e759b8807491f84719c01acf433b917c7a0"
+ integrity sha512-0xr7VZ+JNCRrlCyRMYhquUm8eU3kNdGDaIW4s3L625bNjk273v9ZhAm3YczIuzJzYH0pnjT+QSCiZQegWKjeow==
dependencies:
callsites "^3.0.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
source-map "^0.6.0"
-"@jest/test-result@^27.4.2":
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.2.tgz#05fd4a5466ec502f3eae0b39dff2b93ea4d5d9ec"
- integrity sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==
+"@jest/test-result@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.0.tgz#29e0ace33570c9dcbd47c67e954f77a7d7fff98e"
+ integrity sha512-Lxecvx5mN6WIeynIyW0dWDQm8UPGMHvTwxUPK+OsZaqBDMGaNDSZtw53VoVk7HyT6AcRblMR/pfa0XucmH4hGw==
dependencies:
- "@jest/console" "^27.4.2"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
-"@jest/test-result@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.6.tgz#b3df94c3d899c040f602cea296979844f61bdf69"
- integrity sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==
+"@jest/test-sequencer@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.0.tgz#68beceb3de818dcb34fb3ea59be3c22c890bb6e5"
+ integrity sha512-WzjcDflqbpWe+SnJPCvB2gB6haGfrkzAgzY6Pb1aq+EPoVAj2mwBaKN0ROWI4H87aSslCjq2M+BUQFNJ8VpnDA==
dependencies:
- "@jest/console" "^27.4.6"
- "@jest/types" "^27.4.2"
- "@types/istanbul-lib-coverage" "^2.0.0"
- collect-v8-coverage "^1.0.0"
+ "@jest/test-result" "^27.5.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
+ jest-runtime "^27.5.0"
-"@jest/test-sequencer@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz#447339b8a3d7b5436f50934df30854e442a9d904"
- integrity sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==
- dependencies:
- "@jest/test-result" "^27.4.6"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
- jest-runtime "^27.4.6"
-
-"@jest/transform@^27.4.2", "@jest/transform@^27.4.6":
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.6.tgz#153621940b1ed500305eacdb31105d415dc30231"
- integrity sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==
+"@jest/transform@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.0.tgz#a4941e69ac51e8aa9a255ff4855b564c228c400b"
+ integrity sha512-yXUy/iO3TH1itxJ9BF7LLjuXt8TtgtjAl0PBQbUaCvRa+L0yYBob6uayW9dFRX/CDQweouLhvmXh44zRiaB+yA==
dependencies:
"@babel/core" "^7.1.0"
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
babel-plugin-istanbul "^6.1.1"
chalk "^4.0.0"
convert-source-map "^1.4.0"
fast-json-stable-stringify "^2.0.0"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-util "^27.4.2"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-util "^27.5.0"
micromatch "^4.0.4"
pirates "^4.0.4"
slash "^3.0.0"
source-map "^0.6.1"
write-file-atomic "^3.0.0"
-"@jest/types@^27.4.2":
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5"
- integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==
+"@jest/types@^27.5.0":
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.0.tgz#6ad04a5c5355fd9f46e5cf761850e0edb3c209dd"
+ integrity sha512-oDHEp7gwSgA82RZ6pzUL3ugM2njP/lVB1MsxRZNOBk+CoNvh9SpH1lQixPFc/kDlV50v59csiW4HLixWmhmgPQ==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
@@ -863,11 +1468,34 @@
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz#b876e3feefb9c8d3aa84014da28b5e52a0640d72"
+ integrity sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.10"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.10.tgz#baf57b4e2a690d4f38560171f91783656b7f8186"
+ integrity sha512-Ht8wIW5v165atIX1p+JvKR5ONzUyF4Ac8DZIQ5kZs9zrb6M8SJNXpx1zn04rn65VjBMygRoMXcyYwNK0fT7bEg==
+
+"@jridgewell/trace-mapping@^0.3.0":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.2.tgz#e051581782a770c30ba219634f2019241c5d3cde"
+ integrity sha512-9KzzH4kMjA2XmBRHfqG2/Vtl7s92l6uNDd0wW7frDE+EUvQFGqNXhWp0UGJjSkt3v2AYjzOZn1QO9XaTNJIt1Q==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
"@mdn/browser-compat-data@^3.3.14":
version "3.3.14"
resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-3.3.14.tgz#b72a37c654e598f9ae6f8335faaee182bebc6b28"
integrity sha512-n2RC9d6XatVbWFdHLimzzUJxJ1KY8LdjqrW6YvGPiRmsHkhOUx74/Ct10x5Yo7bC/Jvqx7cDEW8IMPv/+vwEzA==
+"@mdn/browser-compat-data@^4.1.5":
+ version "4.1.6"
+ resolved "https://registry.yarnpkg.com/@mdn/browser-compat-data/-/browser-compat-data-4.1.6.tgz#991b4393404babaac27cbc406dd28763aa14cec4"
+ integrity sha512-JbtcHGODAlkOT6eDV2rCyOguW3+o34ExMD9DOki6kxzeyN3IBtZ9PI0FlbKeD77Bm5U0UG5Heo4qnNbSajXUnw==
+
"@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"
@@ -889,17 +1517,6 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@prettier/jest-light-runner@file:./tests/config/jest-light-runner":
- version "0.0.1"
- dependencies:
- expect "^27.4.0"
- jest-circus "^27.4.0"
- jest-each "^27.4.0"
- jest-mock "^27.4.0"
- jest-snapshot "^27.4.0"
- piscina "^3.1.0"
- supports-color "^9.0.2"
-
"@simple-dom/interface@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@simple-dom/interface/-/interface-1.4.0.tgz#e8feea579232017f89b0138e2726facda6fbb71f"
@@ -925,9 +1542,9 @@
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14":
- version "7.1.16"
- resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702"
- integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==
+ version "7.1.18"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8"
+ integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==
dependencies:
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
@@ -936,9 +1553,9 @@
"@types/babel__traverse" "*"
"@types/babel__generator@*":
- version "7.6.3"
- resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5"
- integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==
+ 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"
@@ -970,9 +1587,9 @@
"@types/node" "*"
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
- integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
+ 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-report@*":
version "3.0.0"
@@ -1007,11 +1624,11 @@
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
"@types/node@*":
- version "16.11.11"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.11.tgz#6ea7342dfb379ea1210835bada87b3c512120234"
- integrity sha512-KB0sixD67CeecHC33MYn+eYARkqTheIRNuu97y2XMjR7Wu3XibO1vaY6VBV6O/a89SPI81cEUIYT87UqUWlZNw==
+ version "17.0.15"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.15.tgz#97779282c09c09577120a2162e71d8380003590a"
+ integrity sha512-zWt4SDDv1S9WRBNxLFxFRHxdD9tvH8f5/kg5/IaLFdnSNXsDY4eL3Q3XXN+VxUnWIhyVFDwcsmAprvwXoM/ClA==
-"@types/normalize-package-data@^2.4.0":
+"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.1":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
@@ -1022,9 +1639,9 @@
integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
"@types/prettier@^2.1.5":
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.2.tgz#4c62fae93eb479660c3bd93f9d24d561597a8281"
- integrity sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.3.tgz#a3c65525b91fca7da00ab1a3ac2b5a2a4afbffbf"
+ integrity sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==
"@types/stack-utils@^2.0.0":
version "2.0.1"
@@ -1048,14 +1665,14 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@5.9.0":
- version "5.9.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz#382182d5cb062f52aac54434cfc47c28898c8006"
- integrity sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==
+"@typescript-eslint/eslint-plugin@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz#f8c1d59fc37bd6d9d11c97267fdfe722c4777152"
+ integrity sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==
dependencies:
- "@typescript-eslint/experimental-utils" "5.9.0"
- "@typescript-eslint/scope-manager" "5.9.0"
- "@typescript-eslint/type-utils" "5.9.0"
+ "@typescript-eslint/scope-manager" "5.10.2"
+ "@typescript-eslint/type-utils" "5.10.2"
+ "@typescript-eslint/utils" "5.10.2"
debug "^4.3.2"
functional-red-black-tree "^1.0.1"
ignore "^5.1.8"
@@ -1063,105 +1680,59 @@
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/experimental-utils@5.9.0":
- version "5.9.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827"
- integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==
+"@typescript-eslint/scope-manager@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz#92c0bc935ec00f3d8638cdffb3d0e70c9b879639"
+ integrity sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==
dependencies:
- "@types/json-schema" "^7.0.9"
- "@typescript-eslint/scope-manager" "5.9.0"
- "@typescript-eslint/types" "5.9.0"
- "@typescript-eslint/typescript-estree" "5.9.0"
- eslint-scope "^5.1.1"
- eslint-utils "^3.0.0"
+ "@typescript-eslint/types" "5.10.2"
+ "@typescript-eslint/visitor-keys" "5.10.2"
-"@typescript-eslint/experimental-utils@^5.0.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.5.0.tgz#3fe2514dc2f3cd95562206e4058435ea51df609e"
- integrity sha512-kjWeeVU+4lQ1SLYErRKV5yDXbWDPkpbzTUUlfAUifPYvpX0qZlrcCZ96/6oWxt3QxtK5WVhXz+KsnwW9cIW+3A==
+"@typescript-eslint/type-utils@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz#ad5acdf98a7d2ab030bea81f17da457519101ceb"
+ integrity sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==
dependencies:
- "@types/json-schema" "^7.0.9"
- "@typescript-eslint/scope-manager" "5.5.0"
- "@typescript-eslint/types" "5.5.0"
- "@typescript-eslint/typescript-estree" "5.5.0"
- eslint-scope "^5.1.1"
- eslint-utils "^3.0.0"
-
-"@typescript-eslint/scope-manager@5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.5.0.tgz#2b9f3672fa6cddcb4160e7e8b49ef1fd00f83c09"
- integrity sha512-0/r656RmRLo7CbN4Mdd+xZyPJ/fPCKhYdU6mnZx+8msAD8nJSP8EyCFkzbd6vNVZzZvWlMYrSNekqGrCBqFQhg==
- dependencies:
- "@typescript-eslint/types" "5.5.0"
- "@typescript-eslint/visitor-keys" "5.5.0"
-
-"@typescript-eslint/scope-manager@5.9.0":
- version "5.9.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117"
- integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==
- dependencies:
- "@typescript-eslint/types" "5.9.0"
- "@typescript-eslint/visitor-keys" "5.9.0"
-
-"@typescript-eslint/type-utils@5.9.0":
- version "5.9.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz#fd5963ead04bc9b7af9c3a8e534d8d39f1ce5f93"
- integrity sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==
- dependencies:
- "@typescript-eslint/experimental-utils" "5.9.0"
+ "@typescript-eslint/utils" "5.10.2"
debug "^4.3.2"
tsutils "^3.21.0"
-"@typescript-eslint/types@5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.5.0.tgz#fee61ae510e84ed950a53937a2b443e078107003"
- integrity sha512-OaYTqkW3GnuHxqsxxJ6KypIKd5Uw7bFiQJZRyNi1jbMJnK3Hc/DR4KwB6KJj6PBRkJJoaNwzMNv9vtTk87JhOg==
+"@typescript-eslint/types@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.2.tgz#604d15d795c4601fffba6ecb4587ff9fdec68ce8"
+ integrity sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==
-"@typescript-eslint/types@5.9.0":
- version "5.9.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3"
- integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==
-
-"@typescript-eslint/typescript-estree@5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.5.0.tgz#12f422698c1636bd0206086bbec9844c54625ebc"
- integrity sha512-pVn8btYUiYrjonhMAO0yG8lm7RApzy2L4RC7Td/mC/qFkyf6vRbGyZozoA94+w6D2Y2GRqpMoCWcwx/EUOzyoQ==
+"@typescript-eslint/typescript-estree@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz#810906056cd3ddcb35aa333fdbbef3713b0fe4a7"
+ integrity sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==
dependencies:
- "@typescript-eslint/types" "5.5.0"
- "@typescript-eslint/visitor-keys" "5.5.0"
+ "@typescript-eslint/types" "5.10.2"
+ "@typescript-eslint/visitor-keys" "5.10.2"
debug "^4.3.2"
globby "^11.0.4"
is-glob "^4.0.3"
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/typescript-estree@5.9.0":
- version "5.9.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f"
- integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==
+"@typescript-eslint/utils@5.10.2", "@typescript-eslint/utils@^5.10.0":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.2.tgz#1fcd37547c32c648ab11aea7173ec30060ee87a8"
+ integrity sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==
dependencies:
- "@typescript-eslint/types" "5.9.0"
- "@typescript-eslint/visitor-keys" "5.9.0"
- debug "^4.3.2"
- globby "^11.0.4"
- is-glob "^4.0.3"
- semver "^7.3.5"
- tsutils "^3.21.0"
+ "@types/json-schema" "^7.0.9"
+ "@typescript-eslint/scope-manager" "5.10.2"
+ "@typescript-eslint/types" "5.10.2"
+ "@typescript-eslint/typescript-estree" "5.10.2"
+ eslint-scope "^5.1.1"
+ eslint-utils "^3.0.0"
-"@typescript-eslint/visitor-keys@5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.5.0.tgz#4787586897b61f26068a3db5c50b3f5d254f9083"
- integrity sha512-4GzJ1kRtsWzHhdM40tv0ZKHNSbkDhF0Woi/TDwVJX6UICwJItvP7ZTXbjTkCdrors7ww0sYe0t+cIKDAJwZ7Kw==
+"@typescript-eslint/visitor-keys@5.10.2":
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz#fdbf272d8e61c045d865bd6c8b41bea73d222f3d"
+ integrity sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==
dependencies:
- "@typescript-eslint/types" "5.5.0"
- eslint-visitor-keys "^3.0.0"
-
-"@typescript-eslint/visitor-keys@5.9.0":
- version "5.9.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6"
- integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==
- dependencies:
- "@typescript-eslint/types" "5.9.0"
+ "@typescript-eslint/types" "5.10.2"
eslint-visitor-keys "^3.0.0"
abab@^2.0.3, abab@^2.0.5:
@@ -1177,7 +1748,7 @@ acorn-globals@^6.0.0:
acorn "^7.1.1"
acorn-walk "^7.1.1"
-acorn-jsx@^5.3.1:
+acorn-jsx@5.3.2, acorn-jsx@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
@@ -1187,16 +1758,16 @@ acorn-walk@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+acorn@8.7.0, acorn@^8.2.4, acorn@^8.7.0:
+ version "8.7.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
+ integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
+
acorn@^7.1.1:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.2.4, acorn@^8.7.0:
- version "8.7.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
- integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
-
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@@ -1364,20 +1935,27 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-babel-jest@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.6.tgz#4d024e69e241cdf4f396e453a07100f44f7ce314"
- integrity sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==
+babel-jest@27.5.0, babel-jest@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.0.tgz#c653985241af3c76f59d70d65a570860c2594a50"
+ integrity sha512-puhCyvBTNLevhbd1oyw6t3gWBicWoUARQYKCBB/B1moif17NbyhxbsfadqZIw8zfJJD+W7Vw0Nb20pEjLxkXqQ==
dependencies:
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/babel__core" "^7.1.14"
babel-plugin-istanbul "^6.1.1"
- babel-preset-jest "^27.4.0"
+ babel-preset-jest "^27.5.0"
chalk "^4.0.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
slash "^3.0.0"
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+ dependencies:
+ object.assign "^4.1.0"
+
babel-plugin-istanbul@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
@@ -1389,16 +1967,40 @@ babel-plugin-istanbul@^6.1.1:
istanbul-lib-instrument "^5.0.4"
test-exclude "^6.0.0"
-babel-plugin-jest-hoist@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6"
- integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==
+babel-plugin-jest-hoist@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.0.tgz#8fdf07835f2165a068de3ce95fd7749a89801b51"
+ integrity sha512-ztwNkHl+g1GaoQcb8f2BER4C3LMvSXuF7KVqtUioXQgScSEnkl6lLgCILUYIR+CPTwL8H3F/PNLze64HPWF9JA==
dependencies:
"@babel/template" "^7.3.3"
"@babel/types" "^7.3.3"
"@types/babel__core" "^7.0.0"
"@types/babel__traverse" "^7.0.6"
+babel-plugin-polyfill-corejs2@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
+ integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
+ dependencies:
+ "@babel/compat-data" "^7.13.11"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ semver "^6.1.1"
+
+babel-plugin-polyfill-corejs3@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72"
+ integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ core-js-compat "^3.21.0"
+
+babel-plugin-polyfill-regenerator@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990"
+ integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+
babel-preset-current-node-syntax@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
@@ -1417,12 +2019,12 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-syntax-top-level-await" "^7.8.3"
-babel-preset-jest@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca"
- integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==
+babel-preset-jest@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.0.tgz#4e308711c3d2ff1f45cf5d9a23646e37b621fc9f"
+ integrity sha512-7bfu1cJBlgK/nKfTvMlElzA3jpi6GzDWX3fntnyP2cQSzoi/KUz6ewGlcb3PSRYZGyv+uPnVHY0Im3JbsViqgA==
dependencies:
- babel-plugin-jest-hoist "^27.4.0"
+ babel-plugin-jest-hoist "^27.5.0"
babel-preset-current-node-syntax "^1.0.0"
bail@^1.0.0:
@@ -1435,11 +2037,6 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-base64-js@^1.2.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
benchmark@2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629"
@@ -1468,7 +2065,14 @@ browser-process-hrtime@^1.0.0:
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
-browserslist@4.19.1:
+browserslist-to-esbuild@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/browserslist-to-esbuild/-/browserslist-to-esbuild-1.1.1.tgz#acb743cb7877ddec8c51d41cc9a2a7fe8e7ddbb5"
+ integrity sha512-FGnR2nWUvgQhHXN6KFGybfAEdAnHetmv7oiS3EE6qFmERILZ/3fxY9X2KGgvb9+TzBG5sW/sxwknUZJiWJTL5Q==
+ dependencies:
+ browserslist "^4.17.3"
+
+browserslist@^4.16.8, browserslist@^4.17.3, browserslist@^4.17.5, browserslist@^4.19.1:
version "4.19.1"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3"
integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==
@@ -1479,17 +2083,6 @@ browserslist@4.19.1:
node-releases "^2.0.1"
picocolors "^1.0.0"
-browserslist@^4.16.8, browserslist@^4.17.5:
- version "4.18.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f"
- integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==
- dependencies:
- caniuse-lite "^1.0.30001280"
- electron-to-chromium "^1.3.896"
- escalade "^3.1.1"
- node-releases "^2.0.1"
- picocolors "^1.0.0"
-
bser@2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
@@ -1507,24 +2100,6 @@ builtin-modules@3.2.0, builtin-modules@^3.0.0:
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
-c8@7.10.0:
- version "7.10.0"
- resolved "https://registry.yarnpkg.com/c8/-/c8-7.10.0.tgz#c539ebb15d246b03b0c887165982c49293958a73"
- integrity sha512-OAwfC5+emvA6R7pkYFVBTOtI5ruf9DahffGmIqUc9l6wEh0h7iAFP6dt/V9Ioqlr2zW5avX9U9/w1I4alTRHkA==
- dependencies:
- "@bcoe/v8-coverage" "^0.2.3"
- "@istanbuljs/schema" "^0.1.2"
- find-up "^5.0.0"
- foreground-child "^2.0.0"
- istanbul-lib-coverage "^3.0.1"
- istanbul-lib-report "^3.0.0"
- istanbul-reports "^3.0.2"
- rimraf "^3.0.0"
- test-exclude "^6.0.0"
- v8-to-istanbul "^8.0.0"
- yargs "^16.2.0"
- yargs-parser "^20.2.7"
-
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"
@@ -1548,15 +2123,10 @@ camelcase@^5.3.1:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-caniuse-lite@^1.0.30001267, caniuse-lite@^1.0.30001280:
- version "1.0.30001283"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz#8573685bdae4d733ef18f78d44ba0ca5fe9e896b"
- integrity sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==
-
-caniuse-lite@^1.0.30001286:
- version "1.0.30001298"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001298.tgz#0e690039f62e91c3ea581673d716890512e7ec52"
- integrity sha512-AcKqikjMLlvghZL/vfTHorlQsLDhGRalYf1+GmWCf5SCMziSGjRYQW/JEksj14NaYHIR6KIhrFAy0HV5C25UzQ==
+caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001304:
+ version "1.0.30001307"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz#27a67f13ebc4aa9c977e6b8256a11d5eafb30f27"
+ integrity sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==
ccount@^1.0.0:
version "1.1.0"
@@ -1708,18 +2278,18 @@ commander@^2.19.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-commander@^8.3.0:
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
- integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+commander@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-9.0.0.tgz#86d58f24ee98126568936bd1d3574e0308a99a40"
+ integrity sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==
-comment-json@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.1.1.tgz#49df4948704bebb1cc0ffa6910e25669b668b7c5"
- integrity sha512-v8gmtPvxhBlhdRBLwdHSjGy9BgA23t9H1FctdQKyUrErPjSrJcdDMqBq9B4Irtm7w3TNYLQJNH6ARKnpyag1sA==
+comment-json@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.2.tgz#5fae70a94e0c8f84a077bd31df5aa5269252f293"
+ integrity sha512-H8T+kl3nZesZu41zO2oNXIJWojNeK3mHxCLrsBNu6feksBXsgb+PtYz5daP5P86A0F3sz3840KVYehr04enISQ==
dependencies:
array-timsort "^1.0.3"
- core-util-is "^1.0.2"
+ core-util-is "^1.0.3"
esprima "^4.0.1"
has-own-prop "^2.0.0"
repeat-string "^1.6.1"
@@ -1758,12 +2328,20 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
dependencies:
safe-buffer "~5.1.1"
-core-js@^3.16.2, core-js@^3.4.1:
- version "3.20.2"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.2.tgz#46468d8601eafc8b266bd2dd6bf9dee622779581"
- integrity sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw==
+core-js-compat@^3.20.2, core-js-compat@^3.21.0:
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.0.tgz#bcc86aa5a589cee358e7a7fa0a4979d5a76c3885"
+ integrity sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==
+ dependencies:
+ browserslist "^4.19.1"
+ semver "7.0.0"
-core-util-is@^1.0.2:
+core-js@3.21.0, core-js@^3.16.2, core-js@^3.4.1:
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.0.tgz#f479dbfc3dffb035a0827602dd056839a774aa71"
+ integrity sha512-YUdI3fFu4TF/2WykQ2xzSiTQdldLB4KVuL9WeAy5XONZYt5Cun/fpQvctoKbCgvPhmzADeesTk/j2Rdx77AcKQ==
+
+core-util-is@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
@@ -1797,7 +2375,7 @@ cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+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==
@@ -1811,47 +2389,41 @@ crypto-random-string@^2.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
-crypto-random-string@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2"
- integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==
+cspell-gitignore@^5.18.3:
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-5.18.3.tgz#b10cc327c75256f7e30f11f9adb711ae34b33537"
+ integrity sha512-s5vuxft/v1qypdHIomk3XiMwJ/4ZhaOTsupHV9OB4KBk1ivpvUuB0fdU7TCAQQk1fhegH++GF2925ParuL2EFg==
dependencies:
- type-fest "^1.0.1"
-
-cspell-gitignore@^5.15.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/cspell-gitignore/-/cspell-gitignore-5.15.1.tgz#3a940958106690d4d73b729361812be3e84a8d49"
- integrity sha512-Bfe1LR85WfWcF5pUGv2hozecudWYrwumyKJuzIFvle6ndxMVy62f6Gdfr5Q28KBuSkj6wpvDkPgFq/ad44Q2iA==
- dependencies:
- cspell-glob "^5.15.1"
+ cspell-glob "^5.18.3"
find-up "^5.0.0"
-cspell-glob@^5.15.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.15.1.tgz#978b60620d01ab3866550d0e216fa951951d1ae3"
- integrity sha512-Q03f8/BNVba/r8wDcII5XSE/PaJrlaUSE621vPaupM4AnMEt7piklLTT1KR921el4lwNThzpr1nIaSut4G5T1Q==
+cspell-glob@^5.18.3:
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-5.18.3.tgz#b439ea361c3289bb352291238d1cef8659005181"
+ integrity sha512-wiEmatsXbfc0IVQiL1lOW/UZubPy8iUcGw3akDydX0m0dMstqgqDDx1Dqs4zj0YUz5YhYSMHYwTV3rgrudrHhw==
dependencies:
micromatch "^4.0.4"
-cspell-io@^5.15.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.15.1.tgz#f62465250b73d37a5d135d5b152f44f94828c171"
- integrity sha512-JkBDZFQcuE/ve9pqpjMkUVKQgOJLWlGvvOm8GOCI9sG9dFE+eZVW5MHCS1VuGPGKfALh+xhmtcXB1+Y4MdYz4A==
+cspell-io@^5.18.3:
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-5.18.3.tgz#30c5d35a038e262a0f240f02f37e6642c407411a"
+ integrity sha512-oAlG5jiBV4Wn4C47xVfpHiz0kcD2li1VXZPh3NAfUYb2eEDP21OlZXT3fFTNo9jN3YKoYirlVh/pVIFqFWN2Vw==
-cspell-lib@^5.15.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.15.1.tgz#4c1572b4860b7934b5c235fe5be12522c1501258"
- integrity sha512-8x76yse70CT5+lk9Jwwt6wuBlTiflWouhcj1zUONxzJM7kstgNUdTNBoQRDoCjj/uGOQSKIwa4YGjV29vMzGAA==
+cspell-lib@^5.18.3:
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-5.18.3.tgz#db0aa7924676442d50576b0ffd629db5e4ffa040"
+ integrity sha512-NxCDRYn7BKSLSf64QOg+o0fXDgrdalPsFfW26JkExPun8YBYBLDDvF9MgjmsJ8267Jv23FaOdfZzHzGwvsVA/w==
dependencies:
- "@cspell/cspell-bundled-dicts" "^5.15.1"
- "@cspell/cspell-types" "^5.15.1"
+ "@cspell/cspell-bundled-dicts" "^5.18.3"
+ "@cspell/cspell-types" "^5.18.3"
clear-module "^4.1.2"
- comment-json "^4.1.1"
+ comment-json "^4.2.2"
configstore "^5.0.1"
cosmiconfig "^7.0.1"
- cspell-glob "^5.15.1"
- cspell-io "^5.15.1"
- cspell-trie-lib "^5.15.1"
+ cspell-glob "^5.18.3"
+ cspell-io "^5.18.3"
+ cspell-trie-lib "^5.18.3"
+ fast-equals "^2.0.4"
find-up "^5.0.0"
fs-extra "^10.0.0"
gensequence "^3.1.1"
@@ -1860,25 +2432,27 @@ cspell-lib@^5.15.1:
resolve-global "^1.0.0"
vscode-uri "^3.0.3"
-cspell-trie-lib@^5.15.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.15.1.tgz#a8f9cd4177ede6878579362c5b6eb2dd83f36372"
- integrity sha512-+vQeVXppreAMW/EjmYX5PUokzLgBcV31Wbj9OgJG0afxCKSXMWH6F3oTNLTCjqUx+WEPHo7Im5nXAE35y7xQwA==
+cspell-trie-lib@^5.18.3:
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-5.18.3.tgz#90e8846d797f9633d5324c794361133da076b679"
+ integrity sha512-JDsHXdJ6IniOVuuR7DPoX5gdjMtkQmEIDrra9GtzXR5uQCkzpB7NDwD8YVaDEo7/NBjWUr5hZd0mhFy4CgYddw==
dependencies:
+ "@cspell/cspell-pipe" "^5.18.3"
fs-extra "^10.0.0"
gensequence "^3.1.1"
-cspell@5.15.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.15.1.tgz#678af613d122e5c97b9dc24824ba637a29b2da7d"
- integrity sha512-OIH7NL4XjKH1h3JMIQTKPezQOSd077mrDRHo6EW/t3on840XxEoKBvxBrxhKzOctevOk7HtszsubwMFTCFV5+A==
+cspell@5.18.3:
+ version "5.18.3"
+ resolved "https://registry.yarnpkg.com/cspell/-/cspell-5.18.3.tgz#8f9d6b5df7837ced31bb6684261a8085fb6846d6"
+ integrity sha512-mX3sG6xqHQEklXpQEvRr1gIwkum3rTANTXLF4wf3PWb3XsfH3M/wGD0gQiP+EqgZopqu9CCo9+r7FQv2tc9dGQ==
dependencies:
+ "@cspell/cspell-pipe" "^5.18.3"
chalk "^4.1.2"
- commander "^8.3.0"
- comment-json "^4.1.1"
- cspell-gitignore "^5.15.1"
- cspell-glob "^5.15.1"
- cspell-lib "^5.15.1"
+ commander "^9.0.0"
+ comment-json "^4.2.2"
+ cspell-gitignore "^5.18.3"
+ cspell-glob "^5.18.3"
+ cspell-lib "^5.18.3"
fast-json-stable-stringify "^2.1.0"
file-entry-cache "^6.0.1"
fs-extra "^10.0.0"
@@ -1925,7 +2499,7 @@ data-urls@^2.0.0:
whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0"
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3:
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
@@ -2004,10 +2578,10 @@ detect-newline@^3.0.0:
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-diff-sequences@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5"
- integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==
+diff-sequences@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.0.tgz#a8ac0cb742b17d6f30a6c43e233893a2402c0729"
+ integrity sha512-ZsOBWnhXiH+Zn0DcBNX/tiQsqrREHs/6oQsEVy2VJJjrTblykPima11pyHMSA/7PGmD+fwclTnKVKL/qtNREDQ==
diff@5.0.0:
version "5.0.0"
@@ -2064,15 +2638,10 @@ editorconfig@0.15.3:
semver "^5.6.0"
sigmund "^1.0.1"
-electron-to-chromium@^1.3.896:
- version "1.4.6"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.6.tgz#7bf0c03001bcdbd0fc57a45c6b23bc6432246ade"
- integrity sha512-YDZAXP0P8USm0YoyIXWijxFT3tJHbt3WwY7CTQiK3+Ad6Ai/b9N4GqfDR107jfGilAfxl7Gkhb+h0KPoKXAgqw==
-
electron-to-chromium@^1.4.17:
- version "1.4.38"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.38.tgz#10ea58d73d36b13e78d5024f3b74a352d3958d01"
- integrity sha512-WhHt3sZazKj0KK/UpgsbGQnUUoFeAHVishzHFExMxagpZgjiGYSC9S0ZlbhCfSH2L2i+2A1yyqOIliTctMx7KQ==
+ version "1.4.65"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.65.tgz#c0820db06e268e0a2fd4dbce38fb5376d38ca449"
+ integrity sha512-0/d8Skk8sW3FxXP0Dd6MnBlrwx7Qo9cqQec3BlIAlvKnrmS3pHsIbaroEi+nd0kZkGpQ6apMEre7xndzjlEnLw==
emittery@^0.8.1:
version "0.8.1"
@@ -2084,7 +2653,12 @@ emoji-regex@^8.0.0:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-enquirer@2.3.6, enquirer@^2.3.5:
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+enquirer@2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -2133,134 +2707,135 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
-esbuild-android-arm64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.10.tgz#c854db57dc2d4df6f4f62185ca812f26a132bf1e"
- integrity sha512-vzkTafHKoiMX4uIN1kBnE/HXYLpNT95EgGanVk6DHGeYgDolU0NBxjO7yZpq4ZGFPOx8384eAdDrBYhO11TAlQ==
+esbuild-android-arm64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.18.tgz#027a1cd57e57c6219341e116c4ac41a9952d69d1"
+ integrity sha512-AuE8vIwc6QLquwykyscFk0Ji3RFczoOvjka64FJlcjLLhD6VsS584RYlQrSnPpRkv69PunUvyrBoEF7JFTJijg==
-esbuild-darwin-64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.10.tgz#c44fab6b8bfc83e5d083f513e4acbff14fb82eac"
- integrity sha512-DJwzFVB95ZV7C3PQbf052WqaUuuMFXJeZJ0LKdnP1w+QOU0rlbKfX0tzuhoS//rOXUj1TFIwRuRsd0FX6skR7A==
+esbuild-darwin-64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.18.tgz#a219c50aa98b5bc08d7ce3677f5bae4b8aa5101b"
+ integrity sha512-nN1XziZtDy8QYOggaXC3zu0vVh8YJpS8Bol7bHaxx0enTLDSFBCXUUJEKYpmAAJ4OZRPgjXv8NzEHHQWQvLzXg==
-esbuild-darwin-arm64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.10.tgz#9454b3763b36407dc395c4c3529fb5ddd4a6225f"
- integrity sha512-RNaaoZDg3nsqs5z56vYCjk/VJ76npf752W0rOaCl5lO5TsgV9zecfdYgt7dtUrIx8b7APhVaNYud+tGsDOVC9g==
+esbuild-darwin-arm64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.18.tgz#eb2d17d33c5991c183c99843698182bb702eb592"
+ integrity sha512-v0i2n6TCsbxco/W1fN8RgQt3RW00Q9zJO2eqiAdmLWg6Hx0HNHloZyfhF11i7nMUUgW8r5n++ZweIXjAFPE/gQ==
-esbuild-freebsd-64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.10.tgz#04eef46d5d5e4152c6b5a6a12f432db0fe7c89de"
- integrity sha512-10B3AzW894u6bGZZhWiJOHw1uEHb4AFbUuBdyml1Ht0vIqd+KqWW+iY/yMwQAzILr2WJZqEhbOXRkJtY8aRqOw==
+esbuild-freebsd-64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.18.tgz#de06b6ce361bdf51fb66e59b220f67c4124cc728"
+ integrity sha512-XLyJZTWbSuQJOqw867tBxvto6GjxULvWZYKs6RFHYQPCqgQ0ODLRtBmp4Fqqpde52yOe45npaaoup9IXNfr32A==
-esbuild-freebsd-arm64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.10.tgz#67ca88529543ada948737c95819253ead16494a7"
- integrity sha512-mSQrKB7UaWvuryBTCo9leOfY2uEUSimAvcKIaUWbk5Hth9Sg+Try+qNA/NibPgs/vHkX0KFo/Rce6RPea+P15g==
+esbuild-freebsd-arm64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.18.tgz#59bb55cd6ac1b2b3c43536c067d8356f4ae7e310"
+ integrity sha512-0ItfrR8hePnDcUXxUQxY+VfICcBfeMJCdK6mcNUXnXw6LyHjyUYXWpFXF+J18pg1/YUWRWO1HbsJ7FEwELcQIA==
-esbuild-linux-32@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.10.tgz#8f3d5fb0b9b616d6b604da781d71767d7679f64f"
- integrity sha512-lktF09JgJLZ63ANYHIPdYe339PDuVn19Q/FcGKkXWf+jSPkn5xkYzAabboNGZNUgNqSJ/vY7VrOn6UrBbJjgYA==
+esbuild-linux-32@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.18.tgz#ff68f7ec7c8b8c7dddab4d6e65f1a1d0ff3ab0b9"
+ integrity sha512-mnG84D9NsEsoQdBpBT0IsFjm5iAwnd81SP4tRMXZLl09lPvIWjHHSq6LDlb4+L5H5K5y68WC//X5Dr2MtNY3DQ==
-esbuild-linux-64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.10.tgz#c1c60a079c4709164bdd89fbb007a2edeea7c34a"
- integrity sha512-K+gCQz2oLIIBI8ZM77e9sYD5/DwEpeYCrOQ2SYXx+R4OU2CT9QjJDi4/OpE7ko4AcYMlMW7qrOCuLSgAlEj4Wg==
+esbuild-linux-64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.18.tgz#d4083d9833580090452a095cd2216100d86f3c7a"
+ integrity sha512-HvExRtkeA8l/p+7Lf6aBrnLH+jTCFJTUMJxGKExh2RD8lCXGTeDJFyP+BOEetP80fuuH+Syj79+LVQ9MihdBsg==
-esbuild-linux-arm64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.10.tgz#d8f1f89190f6d8b6e06a1214aafba454e5daa990"
- integrity sha512-+qocQuQvcp5wo/V+OLXxqHPc+gxHttJEvbU/xrCGE03vIMqraL4wMua8JQx0SWEnJCWP+Nhf//v8OSwz1Xr5kA==
+esbuild-linux-arm64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.18.tgz#8ce21e188ab9fcdb512f4ada9a637014c1294bec"
+ integrity sha512-CCWmilODE1ckw+M7RVqoqKWA4UB0alCyK2bv0ikEeEAwkzinlJeoe94t9CnT/ECSQ2sL+C16idsr+aUviGp7sg==
-esbuild-linux-arm@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.10.tgz#43192a00019a4553fb44e67f628fff0f560f16c2"
- integrity sha512-BYa60dZ/KPmNKYxtHa3LSEdfKWHcm/RzP0MjB4AeBPhjS0D6/okhaBesZIY9kVIGDyeenKsJNOmnVt4+dhNnvQ==
+esbuild-linux-arm@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.18.tgz#a5e1d684c451f379b1dfef7b5a2dcad84cce3f79"
+ integrity sha512-+ZL8xfXVNaeaZ2Kxqlw2VYZWRDZ7NSK4zOV9GKNAtkkWURLsPUU84aUOBatRe9BH1O5FDo3LLQSlaA04ed6lhA==
-esbuild-linux-mips64le@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.10.tgz#f57bb8b2f1a3063cc91cfd787c8a9130cf863c16"
- integrity sha512-nmUd2xoBXpGo4NJCEWoaBj+n4EtDoLEvEYc8Z3aSJrY0Oa6s04czD1flmhd0I/d6QEU8b7GQ9U0g/rtBfhtxBg==
+esbuild-linux-mips64le@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.18.tgz#c3890f178745a9c65bad64322be2b3611c240041"
+ integrity sha512-8LjO4+6Vxz5gbyCHO4OONYMF689nLderCtzb8lG1Bncs4ZXHpo6bjvuWeTMRbGUkvAhp+P6hMTzia7RHOC53wQ==
-esbuild-linux-ppc64le@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.10.tgz#becd965bfe3425d41e026f1c4678b393127fecbd"
- integrity sha512-vsOWZjm0rZix7HSmqwPph9arRVCyPtUpcURdayQDuIhMG2/UxJxpbdRaa//w4zYqcJzAWwuyH2PAlyy0ZNuxqQ==
+esbuild-linux-ppc64le@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.18.tgz#a355f515ca84839f5301f8ef745a2b329105e232"
+ integrity sha512-0OJk/6iYEmF1J7LXY6+cqf6Ga5vG4an7n1nubTKce7kYqaTyNGfYcTjDZce6lnDVlZTJtwntIMszq1+ZX7Kenw==
-esbuild-linux-s390x@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.10.tgz#cc4228ac842febc48b84757814bed964a619be62"
- integrity sha512-knArKKZm0ypIYWOWyOT7+accVwbVV1LZnl2FWWy05u9Tyv5oqJ2F5+X2Vqe/gqd61enJXQWqoufXopvG3zULOg==
+esbuild-linux-s390x@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.18.tgz#81721c22387912778c67495d0a34527f7a2cde66"
+ integrity sha512-UNY7YKZHjY31KcNanJK4QaT2/aoIQyS+jViP3QuDRIoYAogRnc6WydylzIkkEzGMaC4fzaXOmQ8fxwpLAXK4Yg==
-esbuild-netbsd-64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.10.tgz#6ec50d9e4547a7579f447307b19f66bbedfd868b"
- integrity sha512-6Gg8neVcLeyq0yt9bZpReb8ntZ8LBEjthxrcYWVrBElcltnDjIy1hrzsujt0+sC2rL+TlSsE9dzgyuvlDdPp2w==
+esbuild-netbsd-64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.18.tgz#eaee109d527a58b582f8fa933d9cadf8840758c2"
+ integrity sha512-wE/2xT9KNzLCfEBw24YbVmMmXH92cFIzrRPUlwWH9dIizjvEYYcyQ+peTMVkqzUum7pdlVLZ2CDDqAaZo/nW/w==
-esbuild-openbsd-64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.10.tgz#925ac3d2326cc219d514e1ca806e80e5143aa043"
- integrity sha512-9rkHZzp10zI90CfKbFrwmQjqZaeDmyQ6s9/hvCwRkbOCHuto6RvMYH9ghQpcr5cUxD5OQIA+sHXi0zokRNXjcg==
+esbuild-openbsd-64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.18.tgz#96a42615f5548529b7bb32d024bb9c6fb542778c"
+ integrity sha512-vdymE2jyuH/FRmTvrguCYSrq81/rUwuhMYyvt/6ibv9ac7xQ674c8qTdT+RH73sR9/2WUD/NsYxrBA/wUVTxcg==
-esbuild-plugin-browserslist@0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/esbuild-plugin-browserslist/-/esbuild-plugin-browserslist-0.4.1.tgz#05ab5ea99f4d15ff7eacc306dce9c84b32e3757a"
- integrity sha512-+LyFG83Ij1lueFt2ary1aore1kFCB+NMR6+P/lqTixUM/ifu8a5d8+4KxaI2QYksQ8PaJEYh9pfYw7eY1Xabug==
- dependencies:
- debug "^4.3.3"
- zod "^3.11.6"
-
-esbuild-plugin-text-replace@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/esbuild-plugin-text-replace/-/esbuild-plugin-text-replace-1.1.3.tgz#3bd357b90e921fe56f4b13916302f77f9bc4f651"
- integrity sha512-UY7nVdyxOXomNL0y+qLMcTV2nlbFP7gse1+RIdL1EvevahkSNcGWAAF6XmSE0k7MLbpS/hsLr1PE6n4PI+h5GA==
+esbuild-plugin-text-replace@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/esbuild-plugin-text-replace/-/esbuild-plugin-text-replace-1.2.0.tgz#43d87d88c5c1314151d8046d490aa21605fe1feb"
+ integrity sha512-04kdAMjxqGG+TEV/F+uGQVMFZlh65Eb11xo8b532io8FjOg5x2faoCXGicJo97BovXYARCPUhiZEECKZrFQq7Q==
dependencies:
ts-replace-all "^1.0.0"
-esbuild-sunos-64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.10.tgz#8d3576d8cac5c4f9f2a84be81b9078d424dbc739"
- integrity sha512-mEU+pqkhkhbwpJj5DiN3vL0GUFR/yrL3qj8ER1amIVyRibKbj02VM1QaIuk1sy5DRVIKiFXXgCaHvH3RNWCHIw==
+esbuild-sunos-64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.18.tgz#869723d73a5f35ba2a4a6c043694d952bd4f831b"
+ integrity sha512-X/Tesy6K1MdJF1d5cbzFDxrIMMn0ye+VgTQRI8P5Vo2CcKxOdckwsKUwpRAvg+VDZ6MxrSOTYS9OOoggPUjxTg==
-esbuild-windows-32@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.10.tgz#8a67fca4cb594a340566d66eef3f568f65057a48"
- integrity sha512-Z5DieUL1N6s78dOSdL95KWf8Y89RtPGxIoMF+LEy8ChDsX+pZpz6uAVCn+YaWpqQXO+2TnrcbgBIoprq2Mco1g==
+esbuild-visualizer@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/esbuild-visualizer/-/esbuild-visualizer-0.3.1.tgz#eb3e873a4bbd95a5e72b5a8ae2d6d260d47ee5a6"
+ integrity sha512-eNIM6AOfE+7XvRkBFpxZA8V07yPhskwZH6YBBVVrgiCdq1YKatd0Eh/Y0gK8iDnOAvL3Ezz1zDvzX/ssVNLIiA==
+ dependencies:
+ nanoid "^3.1.22"
+ open "^7.4.2"
+ yargs "^16.2.0"
-esbuild-windows-64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.10.tgz#5e6d7c475ff6a71ad0aa4046894364e6c40a9249"
- integrity sha512-LE5Mm62y0Bilu7RDryBhHIX8rK3at5VwJ6IGM3BsASidCfOBTzqcs7Yy0/Vkq39VKeTmy9/66BAfVoZRNznoDw==
+esbuild-windows-32@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.18.tgz#197c8833ed0f6a82055ab63861777749d0ce95c0"
+ integrity sha512-glG23I/JzCL4lu7DWFUtVwqFwNwlL0g+ks+mcjjUisHcINoSXTeCNToUN0bHhzn6IlXXnggNQ38Ew/idHPM8+g==
-esbuild-windows-arm64@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.10.tgz#50ab9a83f6ccf71c272e58489ecc4d7375075f32"
- integrity sha512-OJOyxDtabvcUYTc+O4dR0JMzLBz6G9+gXIHA7Oc5d5Fv1xiYa0nUeo8+W5s2e6ZkPRdIwOseYoL70rZz80S5BA==
+esbuild-windows-64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.18.tgz#569832a99d87fc931a081fe7761c100578275be0"
+ integrity sha512-zEiFKHgV/3z14wsVamV98/5mxeOwz+ecyg0pD3fWcBz9j4EOIT1Tg47axypD4QLwiKFvve9mUBYX1cD99qxOyw==
-esbuild@0.14.10:
- version "0.14.10"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.10.tgz#10268d2b576b25ed6f8554553413988628a7767b"
- integrity sha512-ibZb+NwFqBwHHJlpnFMtg4aNmVK+LUtYMFC9CuKs6lDCBEvCHpqCFZFEirpqt1jOugwKGx8gALNGvX56lQyfew==
+esbuild-windows-arm64@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.18.tgz#c1991848fca7b051d1d036d0723406da9696105d"
+ integrity sha512-Mh8lZFcPLat13dABN7lZThGUOn9YxoH5RYkhBq0U3WqQohHzKRhllYh7ibFixnkpMLnv8OZEbl8bGLMy03MpfA==
+
+esbuild@0.14.18:
+ version "0.14.18"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.18.tgz#9c5f58c506ec9e0ec335d20bcb3f9dbd086d0648"
+ integrity sha512-vCUoISSltnX7ax01w70pWOSQT+e55o+2P/a+A9MSTukJAt3T4aDZajcjeG4fnZbkvOEv+dkKgdkvljz6vVQD4A==
optionalDependencies:
- esbuild-android-arm64 "0.14.10"
- esbuild-darwin-64 "0.14.10"
- esbuild-darwin-arm64 "0.14.10"
- esbuild-freebsd-64 "0.14.10"
- esbuild-freebsd-arm64 "0.14.10"
- esbuild-linux-32 "0.14.10"
- esbuild-linux-64 "0.14.10"
- esbuild-linux-arm "0.14.10"
- esbuild-linux-arm64 "0.14.10"
- esbuild-linux-mips64le "0.14.10"
- esbuild-linux-ppc64le "0.14.10"
- esbuild-linux-s390x "0.14.10"
- esbuild-netbsd-64 "0.14.10"
- esbuild-openbsd-64 "0.14.10"
- esbuild-sunos-64 "0.14.10"
- esbuild-windows-32 "0.14.10"
- esbuild-windows-64 "0.14.10"
- esbuild-windows-arm64 "0.14.10"
+ esbuild-android-arm64 "0.14.18"
+ esbuild-darwin-64 "0.14.18"
+ esbuild-darwin-arm64 "0.14.18"
+ esbuild-freebsd-64 "0.14.18"
+ esbuild-freebsd-arm64 "0.14.18"
+ esbuild-linux-32 "0.14.18"
+ esbuild-linux-64 "0.14.18"
+ esbuild-linux-arm "0.14.18"
+ esbuild-linux-arm64 "0.14.18"
+ esbuild-linux-mips64le "0.14.18"
+ esbuild-linux-ppc64le "0.14.18"
+ esbuild-linux-s390x "0.14.18"
+ esbuild-netbsd-64 "0.14.18"
+ esbuild-openbsd-64 "0.14.18"
+ esbuild-sunos-64 "0.14.18"
+ esbuild-windows-32 "0.14.18"
+ esbuild-windows-64 "0.14.18"
+ esbuild-windows-arm64 "0.14.18"
escalade@^3.1.1:
version "3.1.1"
@@ -2319,22 +2894,22 @@ eslint-import-resolver-node@^0.3.6:
resolve "^1.20.0"
eslint-module-utils@^2.7.2:
- version "2.7.2"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129"
- integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee"
+ integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==
dependencies:
debug "^3.2.7"
find-up "^2.1.0"
-eslint-plugin-compat@4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-compat/-/eslint-plugin-compat-4.0.1.tgz#54e1b5095a7c3ef45701556fce1923d615c76445"
- integrity sha512-vs4oa+WQcCRH7lD/0H8eh90tnSQurV3Cebt32x28JlP0Kn9UkQT+N8Pm939KavTO3/DiFPQyTPCNdYXcIWP/GA==
+eslint-plugin-compat@4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-compat/-/eslint-plugin-compat-4.0.2.tgz#b058627a7d25d352adf0ec16dca8fcf92d9c7af7"
+ integrity sha512-xqvoO54CLTVaEYGMzhu35Wzwk/As7rCvz/2dqwnFiWi0OJccEtGIn+5qq3zqIu9nboXlpdBN579fZcItC73Ycg==
dependencies:
- "@mdn/browser-compat-data" "^3.3.14"
+ "@mdn/browser-compat-data" "^4.1.5"
ast-metadata-inferer "^0.7.0"
browserslist "^4.16.8"
- caniuse-lite "^1.0.30001267"
+ caniuse-lite "^1.0.30001304"
core-js "^3.16.2"
find-up "^5.0.0"
lodash.memoize "4.1.2"
@@ -2359,12 +2934,12 @@ eslint-plugin-import@2.25.4:
resolve "^1.20.0"
tsconfig-paths "^3.12.0"
-eslint-plugin-jest@25.3.4:
- version "25.3.4"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.3.4.tgz#2031dfe495be1463330f8b80096ddc91f8e6387f"
- integrity sha512-CCnwG71wvabmwq/qkz0HWIqBHQxw6pXB1uqt24dxqJ9WB34pVg49bL1sjXphlJHgTMWGhBjN1PicdyxDxrfP5A==
+eslint-plugin-jest@26.0.0:
+ version "26.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.0.0.tgz#f83a25a23ab90ce5b375b1d44389b8c391be5ce8"
+ integrity sha512-Fvs0YgJ/nw9FTrnqTuMGVrkozkd07jkQzWm0ajqyHlfcsdkxGfAuv30fgfWHOnHiCr9+1YQ365CcDX7vrNhqQg==
dependencies:
- "@typescript-eslint/experimental-utils" "^5.0.0"
+ "@typescript-eslint/utils" "^5.10.0"
eslint-plugin-prettier-internal-rules@2.0.1:
version "2.0.1"
@@ -2405,10 +2980,10 @@ eslint-plugin-regexp@1.5.1:
regexpp "^3.2.0"
scslre "^0.1.6"
-eslint-plugin-unicorn@40.0.0:
- version "40.0.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-40.0.0.tgz#a8226cab9c62b303e44fc41b1333a146e5676b86"
- integrity sha512-5GRXISfBk8jMmYk1eeNDw8zSRnWTxBjWkzx2Prre6E2/yLu2twozZ3EomLWCBu9nWms/ZE361BItyMQwfnG1qA==
+eslint-plugin-unicorn@40.1.0:
+ version "40.1.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-40.1.0.tgz#48975360e39d23df726e4b33e8dd5d650e184832"
+ integrity sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==
dependencies:
"@babel/helper-validator-identifier" "^7.15.7"
ci-info "^3.3.0"
@@ -2453,15 +3028,15 @@ eslint-visitor-keys@^2.0.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.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2"
- integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==
+eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1"
+ integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==
-eslint@8.6.0:
- version "8.6.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.6.0.tgz#4318c6a31c5584838c1a2e940c478190f58d558e"
- integrity sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==
+eslint@8.8.0:
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.8.0.tgz#9762b49abad0cb4952539ffdb0a046392e571a2d"
+ integrity sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==
dependencies:
"@eslint/eslintrc" "^1.0.5"
"@humanwhocodes/config-array" "^0.9.2"
@@ -2470,11 +3045,10 @@ eslint@8.6.0:
cross-spawn "^7.0.2"
debug "^4.3.2"
doctrine "^3.0.0"
- enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
eslint-scope "^7.1.0"
eslint-utils "^3.0.0"
- eslint-visitor-keys "^3.1.0"
+ eslint-visitor-keys "^3.2.0"
espree "^9.3.0"
esquery "^1.4.0"
esutils "^2.0.2"
@@ -2483,7 +3057,7 @@ eslint@8.6.0:
functional-red-black-tree "^1.0.1"
glob-parent "^6.0.1"
globals "^13.6.0"
- ignore "^4.0.6"
+ ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
@@ -2494,9 +3068,7 @@ eslint@8.6.0:
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
- progress "^2.0.0"
regexpp "^3.2.0"
- semver "^7.2.1"
strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
text-table "^0.2.0"
@@ -2555,27 +3127,7 @@ esutils@2.0.3, esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-eventemitter-asyncresource@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz#734ff2e44bf448e627f7748f905d6bdd57bdb65b"
- integrity sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==
-
-execa@6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-6.0.0.tgz#598b46f09ae44f5d8097a30cfb1681d0f0371503"
- integrity sha512-m4wU9j4Z9nXXoqT8RSfl28JSwmMNLFF69OON8H/lL3NeU0tNpGz313bcOfYoBBHokB0dC2tMl3VUcKgHELhL2Q==
- dependencies:
- cross-spawn "^7.0.3"
- get-stream "^6.0.1"
- human-signals "^3.0.1"
- is-stream "^3.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^5.0.1"
- onetime "^6.0.0"
- signal-exit "^3.0.5"
- strip-final-newline "^3.0.0"
-
-execa@^5.0.0:
+execa@5.1.1, execa@^5.0.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
@@ -2595,27 +3147,15 @@ exit@^0.1.2:
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
-expect@^27.4.0, expect@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.6.tgz#f335e128b0335b6ceb4fcab67ece7cbd14c942e6"
- integrity sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==
+expect@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.0.tgz#ea2fbebb483c274043098c34a53923a0aee493f0"
+ integrity sha512-z73GZ132cBqrapO0X6BeRjyBXqOt9YeRtnDteHJIQqp5s2pZ41Hz23VUbsVFMfkrsFLU9GwoIRS0ZzLuFK8M5w==
dependencies:
- "@jest/types" "^27.4.2"
- jest-get-type "^27.4.0"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
-
-expect@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.2.tgz#4429b0f7e307771d176de9bdf23229b101db6ef6"
- integrity sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==
- dependencies:
- "@jest/types" "^27.4.2"
- ansi-styles "^5.0.0"
- jest-get-type "^27.4.0"
- jest-matcher-utils "^27.4.2"
- jest-message-util "^27.4.2"
- jest-regex-util "^27.4.0"
+ "@jest/types" "^27.5.0"
+ jest-get-type "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
extend@3.0.2, extend@^3.0.0:
version "3.0.2"
@@ -2627,10 +3167,15 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^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-glob@3.2.9, fast-glob@^3.1.1, fast-glob@^3.2.7:
- version "3.2.9"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.9.tgz#8f55f664b68a236bd29fa165817fc44f2b11faba"
- integrity sha512-MBwILhhD92sziIrMQwpqcuGERF+BH99ei2a3XsGJuqEKcSycAL+w0HWokFenZXona+kjFr82Lf71eTxNRC06XQ==
+fast-equals@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-2.0.4.tgz#3add9410585e2d7364c2deeb6a707beadb24b927"
+ integrity sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w==
+
+fast-glob@3.2.11, fast-glob@^3.2.7, 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"
@@ -2662,11 +3207,12 @@ fb-watchman@^2.0.0:
dependencies:
bser "2.1.1"
-fetch-blob@^3.1.2:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.3.tgz#a7dca4855e39d3e3c5a1da62d4ee335c37d26012"
- integrity sha512-ax1Y5I9w+9+JiM+wdHkhBoxew+zG4AJ2SvAD1v1szpddUIiPERVGBxrMcB2ZqW0Y3PP8bOWYv2zqQq1Jp2kqUQ==
+fetch-blob@^3.1.2, fetch-blob@^3.1.3:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.1.4.tgz#e8c6567f80ad7fc22fd302e7dcb72bafde9c1717"
+ integrity sha512-Eq5Xv5+VlSrYWEqKrusxY1C3Hm/hjeAsCGVG3ft7pZahlUAChpGZT/Ms1WmSLnEAisEXszjzu/s+ce6HZB2VHA==
dependencies:
+ node-domexception "^1.0.0"
web-streams-polyfill "^3.0.3"
file-entry-cache@^6.0.1:
@@ -2711,6 +3257,14 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
+find-up@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.2.0.tgz#f3b81d633fa83bebe64f83a8bab357f86d5914be"
+ integrity sha512-yWHzMzXCaFoABSnFTCPKNFlYoq4mSga9QLRRKOCLSJ33hSkzROB14ITbAWW0QDQDyuzsPQ33S1DsOWQb/oW1yA==
+ dependencies:
+ locate-path "^7.0.0"
+ path-exists "^5.0.0"
+
flat-cache@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
@@ -2720,27 +3274,19 @@ flat-cache@^3.0.4:
rimraf "^3.0.2"
flatted@^3.1.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2"
- integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
+ integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
flatten@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
-flow-parser@0.169.0:
- version "0.169.0"
- resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.169.0.tgz#4f77d61dd4241f8063f734ef1f71c684ec03ab52"
- integrity sha512-X1DFb6wxXpZLLqM9NX0Wm+4xoN6xAyJn8OwuiHsV0JJvLfD18Z+wbgJ1lM7ykTVINdu8v7Mu0gIzWMvnhKWBkA==
-
-foreground-child@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53"
- integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==
- dependencies:
- cross-spawn "^7.0.0"
- signal-exit "^3.0.2"
+flow-parser@0.171.0:
+ version "0.171.0"
+ resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.171.0.tgz#5ffae78f050e43513abc86add9f19a97fcbabcdb"
+ integrity sha512-cqEsgic6HH81Pz0IQLeyuoh0O8Y7ECAIdZ0idPQ9P1jZ/kHB9KK0hwqnjVtqTGog15JURkIxvyXm+9pAb6uuSQ==
form-data@^3.0.0:
version "3.0.1"
@@ -2821,7 +3367,7 @@ get-stdin@8.0.0, get-stdin@^8.0.0:
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
-get-stream@^6.0.0, get-stream@^6.0.1:
+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==
@@ -2848,19 +3394,7 @@ glob-parent@^6.0.1:
dependencies:
is-glob "^4.0.3"
-glob@7.1.6:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
- integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.0.4"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
+glob@7.2.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@@ -2885,28 +3419,28 @@ globals@^11.1.0:
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
globals@^13.6.0, globals@^13.9.0:
- version "13.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e"
- integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==
+ version "13.12.1"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb"
+ integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==
dependencies:
type-fest "^0.20.2"
-globby@11.0.4, globby@^11.0.1, globby@^11.0.4:
- version "11.0.4"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
- integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
+globby@^11.0.1, globby@^11.0.4:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
dependencies:
array-union "^2.1.0"
dir-glob "^3.0.1"
- fast-glob "^3.1.1"
- ignore "^5.1.4"
- merge2 "^1.3.0"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
slash "^3.0.0"
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
- version "4.2.8"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
- integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+ version "4.2.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
+ integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
grapheme-splitter@^1.0.4:
version "1.0.4"
@@ -2964,25 +3498,18 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
-hdr-histogram-js@^2.0.1:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5"
- integrity sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==
- dependencies:
- "@assemblyscript/loader" "^0.10.1"
- base64-js "^1.2.0"
- pako "^1.0.3"
-
-hdr-histogram-percentiles-obj@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c"
- integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==
-
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+hosted-git-info@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
+ integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==
+ dependencies:
+ lru-cache "^6.0.0"
+
html-element-attributes@2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/html-element-attributes/-/html-element-attributes-2.3.0.tgz#a192ac90a457be9f1e2cc9ab69000ee89be74aa6"
@@ -3037,11 +3564,6 @@ human-signals@^2.1.0:
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
-human-signals@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5"
- integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
-
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -3049,7 +3571,7 @@ iconv-lite@0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
-ignore@5.2.0, ignore@^5.1.4, ignore@^5.1.8:
+ignore@5.2.0, ignore@^5.1.8, 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==
@@ -3068,9 +3590,9 @@ import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0:
resolve-from "^4.0.0"
import-local@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0"
- integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
+ integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
dependencies:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
@@ -3167,10 +3689,10 @@ is-callable@^1.1.4, is-callable@^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-core-module@^2.2.0, is-core-module@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548"
- integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==
+is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
+ integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
dependencies:
has "^1.0.3"
@@ -3186,6 +3708,11 @@ is-decimal@^1.0.0:
resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
+is-docker@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -3196,6 +3723,11 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+is-fullwidth-code-point@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
+ integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
+
is-generator-fn@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
@@ -3214,9 +3746,9 @@ is-hexadecimal@^1.0.0:
integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
is-negative-zero@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
- integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
+ integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
is-number-object@^1.0.4:
version "1.0.6"
@@ -3273,11 +3805,6 @@ is-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
-is-stream@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
- integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
-
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"
@@ -3298,11 +3825,11 @@ is-typedarray@^1.0.0:
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
is-weakref@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2"
- integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==
+ 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.0"
+ call-bind "^1.0.2"
is-whitespace-character@^1.0.0:
version "1.0.4"
@@ -3314,12 +3841,19 @@ is-word-character@^1.0.0:
resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==
+is-wsl@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.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=
-istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.1, istanbul-lib-coverage@^3.2.0:
+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==
@@ -3353,289 +3887,234 @@ istanbul-lib-source-maps@^4.0.0:
istanbul-lib-coverage "^3.0.0"
source-map "^0.6.1"
-istanbul-reports@^3.0.2, istanbul-reports@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2"
- integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==
+istanbul-reports@^3.1.3:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c"
+ integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==
dependencies:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
-jest-changed-files@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5"
- integrity sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==
+jest-changed-files@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.0.tgz#61e8d0a7394c1ee1cec4c2893e206e62b1566066"
+ integrity sha512-BGWKI7E6ORqbF5usF1oA4ftbkhVZVrXr8jB0/BrU6TAn3kfOVwX2Zx6pKIXYutJ+qNEjT8Da/gGak0ajya/StA==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
execa "^5.0.0"
throat "^6.0.1"
-jest-circus@^27.4.0, jest-circus@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.6.tgz#d3af34c0eb742a967b1919fbb351430727bcea6c"
- integrity sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==
+jest-circus@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.0.tgz#fcff8829ceb2c8ef4b4532ace7734d156c6664b9"
+ integrity sha512-+NPd1OxpAHYKjbW8dgL0huFgmtZRKSUKee/UtRgZJEfAxCeA12d7sp0coh5EGDBpW4fCk1Pcia/2dG+j6BQvdw==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
dedent "^0.7.0"
- expect "^27.4.6"
+ expect "^27.5.0"
is-generator-fn "^2.0.0"
- jest-each "^27.4.6"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
- jest-runtime "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
- pretty-format "^27.4.6"
+ jest-each "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
+ pretty-format "^27.5.0"
slash "^3.0.0"
stack-utils "^2.0.3"
throat "^6.0.1"
-jest-cli@^27.4.7:
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.7.tgz#d00e759e55d77b3bcfea0715f527c394ca314e5a"
- integrity sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==
+jest-cli@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.0.tgz#06557ad22818740fb28481089a574ba107a8b369"
+ integrity sha512-9ANs79Goz1ULKtG7HDm/F//4E69v8EFOLXRIHmeC/eK1xTUeQGlU6XP0Zwst386sKaKB4O60qhWY/UaTBS2MLA==
dependencies:
- "@jest/core" "^27.4.7"
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/core" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
exit "^0.1.2"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
import-local "^3.0.2"
- jest-config "^27.4.7"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
+ jest-config "^27.5.0"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
prompts "^2.0.1"
yargs "^16.2.0"
-jest-config@^27.4.7:
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.7.tgz#4f084b2acbd172c8b43aa4cdffe75d89378d3972"
- integrity sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==
+jest-config@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.0.tgz#d96ccf8e26d3f2f3ae6543686c48449c201bb621"
+ integrity sha512-eOIpvpXFz5WHuIYZN1QmvBLEjsSk3w+IAC/2jBpZClbprF53Bj9meBMgAbE15DSkaaJBDFmhXXd1L2eCLaWxQw==
dependencies:
"@babel/core" "^7.8.0"
- "@jest/test-sequencer" "^27.4.6"
- "@jest/types" "^27.4.2"
- babel-jest "^27.4.6"
+ "@jest/test-sequencer" "^27.5.0"
+ "@jest/types" "^27.5.0"
+ babel-jest "^27.5.0"
chalk "^4.0.0"
ci-info "^3.2.0"
deepmerge "^4.2.2"
glob "^7.1.1"
- graceful-fs "^4.2.4"
- jest-circus "^27.4.6"
- jest-environment-jsdom "^27.4.6"
- jest-environment-node "^27.4.6"
- jest-get-type "^27.4.0"
- jest-jasmine2 "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-resolve "^27.4.6"
- jest-runner "^27.4.6"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-circus "^27.5.0"
+ jest-environment-jsdom "^27.5.0"
+ jest-environment-node "^27.5.0"
+ jest-get-type "^27.5.0"
+ jest-jasmine2 "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-runner "^27.5.0"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
micromatch "^4.0.4"
- pretty-format "^27.4.6"
+ pretty-format "^27.5.0"
slash "^3.0.0"
-jest-diff@^27.0.0, jest-diff@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.6.tgz#93815774d2012a2cbb6cf23f84d48c7a2618f98d"
- integrity sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==
+jest-diff@^27.0.0, jest-diff@^27.0.2, jest-diff@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.0.tgz#34dc608a3b9159df178dd480b6d835b5e6b92082"
+ integrity sha512-zztvHDCq/QcAVv+o6rts0reupSOxyrX+KLQEOMWCW2trZgcBFgp/oTK7hJCGpXvEIqKrQzyQlaPKn9W04+IMQg==
dependencies:
chalk "^4.0.0"
- diff-sequences "^27.4.0"
- jest-get-type "^27.4.0"
- pretty-format "^27.4.6"
+ diff-sequences "^27.5.0"
+ jest-get-type "^27.5.0"
+ pretty-format "^27.5.0"
-jest-diff@^27.0.2, jest-diff@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.2.tgz#786b2a5211d854f848e2dcc1e324448e9481f36f"
- integrity sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==
- dependencies:
- chalk "^4.0.0"
- diff-sequences "^27.4.0"
- jest-get-type "^27.4.0"
- pretty-format "^27.4.2"
-
-jest-docblock@27.4.0, jest-docblock@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.4.0.tgz#06c78035ca93cbbb84faf8fce64deae79a59f69f"
- integrity sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==
+jest-docblock@27.5.0, jest-docblock@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.0.tgz#096fa3a8b55d019a954ef7cc205c791bf94b2352"
+ integrity sha512-U4MtJgdZn2x+jpPzd7NAYvDmgJAA5h9QxVAwsyuH7IymGzY8VGHhAkHcIGOmtmdC61ORLxCbEhj6fCJsaCWzXA==
dependencies:
detect-newline "^3.0.0"
-jest-each@^27.4.0, jest-each@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.4.6.tgz#e7e8561be61d8cc6dbf04296688747ab186c40ff"
- integrity sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==
+jest-each@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.0.tgz#7bd00a767df0fbec0caba3df0d2c0b3268a2ce84"
+ integrity sha512-2vpajSdDMZmAxjSP1f4BG9KKduwHtuaI0w66oqLUkfaGUU7Ix/W+d8BW0h3/QEJiew7hR0GSblqdFwTEEbhBdw==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
- jest-get-type "^27.4.0"
- jest-util "^27.4.2"
- pretty-format "^27.4.6"
+ jest-get-type "^27.5.0"
+ jest-util "^27.5.0"
+ pretty-format "^27.5.0"
-jest-environment-jsdom@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz#c23a394eb445b33621dfae9c09e4c8021dea7b36"
- integrity sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==
+jest-environment-jsdom@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.0.tgz#6d22d9b76890e9b82c7e1062a15730efb3fb7361"
+ integrity sha512-sX49N8rjp6HSHeGpNgLk6mtHRd1IPAnE/u7wLQkb6Tz/1E08Q++Y8Zk/IbpVdcFywbzH1icFqEuDuHJ6o+uXXg==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/fake-timers" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
- jest-mock "^27.4.6"
- jest-util "^27.4.2"
+ jest-mock "^27.5.0"
+ jest-util "^27.5.0"
jsdom "^16.6.0"
-jest-environment-node@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.4.6.tgz#ee8cd4ef458a0ef09d087c8cd52ca5856df90242"
- integrity sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==
+jest-environment-node@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.0.tgz#1ab357b4715bff88d48c8b62b8379002ff955dd1"
+ integrity sha512-7UzisMMfGyrURhS/eUa7p7mgaqN3ajHylsjOgfcn0caNeYRZq4LHKZLfAxrPM34DWLnBZcRupEJlpQsizdSUsw==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/fake-timers" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
- jest-mock "^27.4.6"
- jest-util "^27.4.2"
+ jest-mock "^27.5.0"
+ jest-util "^27.5.0"
-jest-get-type@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5"
- integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==
+jest-get-type@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.0.tgz#861c24aa1b176be83c902292cb9618d580cac8a7"
+ integrity sha512-Vp6O8a52M/dahXRG/E0EJuWQROps2mDQ0sJYPgO8HskhdLwj9ajgngy2OAqZgV6e/RcU67WUHq6TgfvJb8flbA==
-jest-haste-map@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.2.tgz#7fc7d5e568cca704284f4850885b74a0b8b87587"
- integrity sha512-foiyAEePORUN2eeJnOtcM1y8qW0ShEd9kTjWVL4sVaMcuCJM6gtHegvYPBRT0mpI/bs4ueThM90+Eoj2ncoNsA==
+jest-haste-map@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.0.tgz#7cc3a920caf304c89fbfceb5d5717b929873f175"
+ integrity sha512-0KfckSBEKV+D6e0toXmIj4zzp72EiBnvkC0L+xYxenkLhAdkp2/8tye4AgMzz7Fqb1r8SWtz7+s1UQLrxMBang==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/graceful-fs" "^4.1.2"
"@types/node" "*"
anymatch "^3.0.3"
fb-watchman "^2.0.0"
- graceful-fs "^4.2.4"
- jest-regex-util "^27.4.0"
- jest-serializer "^27.4.0"
- jest-util "^27.4.2"
- jest-worker "^27.4.2"
+ graceful-fs "^4.2.9"
+ jest-regex-util "^27.5.0"
+ jest-serializer "^27.5.0"
+ jest-util "^27.5.0"
+ jest-worker "^27.5.0"
micromatch "^4.0.4"
walker "^1.0.7"
optionalDependencies:
fsevents "^2.3.2"
-jest-haste-map@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.6.tgz#c60b5233a34ca0520f325b7e2cc0a0140ad0862a"
- integrity sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==
+jest-jasmine2@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.0.tgz#589d6574d1318d3fb41b3fc368344117ec417dcc"
+ integrity sha512-X7sT3HLNjjrBEepilxzPyNhNdyunaFBepo1L3T/fvYb9tb8Wb8qY576gwIa+SZcqYUqAA7/bT3EpZI4lAp0Qew==
dependencies:
- "@jest/types" "^27.4.2"
- "@types/graceful-fs" "^4.1.2"
- "@types/node" "*"
- anymatch "^3.0.3"
- fb-watchman "^2.0.0"
- graceful-fs "^4.2.4"
- jest-regex-util "^27.4.0"
- jest-serializer "^27.4.0"
- jest-util "^27.4.2"
- jest-worker "^27.4.6"
- micromatch "^4.0.4"
- walker "^1.0.7"
- optionalDependencies:
- fsevents "^2.3.2"
-
-jest-jasmine2@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz#109e8bc036cb455950ae28a018f983f2abe50127"
- integrity sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==
- dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/source-map" "^27.4.0"
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/source-map" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
co "^4.6.0"
- expect "^27.4.6"
+ expect "^27.5.0"
is-generator-fn "^2.0.0"
- jest-each "^27.4.6"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
- jest-runtime "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
- pretty-format "^27.4.6"
+ jest-each "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
+ pretty-format "^27.5.0"
throat "^6.0.1"
-jest-leak-detector@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz#ed9bc3ce514b4c582637088d9faf58a33bd59bf4"
- integrity sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==
+jest-leak-detector@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.0.tgz#c98c02e64eab4da9a8b91f058d2b7473272272ee"
+ integrity sha512-Ak3k+DD3ao5d4/zzJrxAQ5UV5wiCrp47jH94ZD4/vXSzQgE6WBVDfg83VtculLILO7Y6/Q/7yzKSrtN9Na8luA==
dependencies:
- jest-get-type "^27.4.0"
- pretty-format "^27.4.6"
+ jest-get-type "^27.5.0"
+ pretty-format "^27.5.0"
-jest-matcher-utils@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz#d17c5038607978a255e0a9a5c32c24e984b6c60b"
- integrity sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==
+jest-matcher-utils@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.0.tgz#d2fc737224fb3bfa38eaa2393ac5bc953d5c5697"
+ integrity sha512-5ruyzWMGb1ilCWD6ECwNdOhQBeIXAjHmHd5c3uO6quR7RIMHPRP2ucOaejz2j+0R0Ko4GanWM6SqXAeF8nYN5g==
dependencies:
chalk "^4.0.0"
- jest-diff "^27.4.2"
- jest-get-type "^27.4.0"
- pretty-format "^27.4.2"
+ jest-diff "^27.5.0"
+ jest-get-type "^27.5.0"
+ pretty-format "^27.5.0"
-jest-matcher-utils@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz#53ca7f7b58170638590e946f5363b988775509b8"
- integrity sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==
- dependencies:
- chalk "^4.0.0"
- jest-diff "^27.4.6"
- jest-get-type "^27.4.0"
- pretty-format "^27.4.6"
-
-jest-message-util@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.2.tgz#07f3f1bf207d69cf798ce830cc57f1a849f99388"
- integrity sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==
+jest-message-util@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.0.tgz#654a781b38a305b1fd8120053c784c67bca00a52"
+ integrity sha512-lfbWRhTtmZMEHPAtl0SrvNzK1F4UnVNMHOliRQT2BJ4sBFzIb0gBCHA4ebWD4o6l1fUyvDPxM01K9OIMQTAdQw==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
micromatch "^4.0.4"
- pretty-format "^27.4.2"
+ pretty-format "^27.5.0"
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-message-util@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.6.tgz#9fdde41a33820ded3127465e1a5896061524da31"
- integrity sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==
+jest-mock@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.0.tgz#1018656fe6bcd0f58fd1edca7f420169f6707c6e"
+ integrity sha512-PHluG6MJGng82/sxh8OiB9fnxzNn3cazceSHCAmAKs4g5rMhc3EZCrJXv+4w61rA2WGagMUj7QLLrA1SRlFpzQ==
dependencies:
- "@babel/code-frame" "^7.12.13"
- "@jest/types" "^27.4.2"
- "@types/stack-utils" "^2.0.0"
- chalk "^4.0.0"
- graceful-fs "^4.2.4"
- micromatch "^4.0.4"
- pretty-format "^27.4.6"
- slash "^3.0.0"
- stack-utils "^2.0.3"
-
-jest-mock@^27.4.0, jest-mock@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.4.6.tgz#77d1ba87fbd33ccb8ef1f061697e7341b7635195"
- integrity sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==
- dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
jest-pnp-resolver@^1.2.2:
@@ -3643,115 +4122,98 @@ jest-pnp-resolver@^1.2.2:
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
-jest-regex-util@^27.0.0, jest-regex-util@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca"
- integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==
+jest-regex-util@^27.0.0, jest-regex-util@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.0.tgz#26c26cf15a73edba13cb8930e261443d25ed8608"
+ integrity sha512-e9LqSd6HsDsqd7KS3rNyYwmQAaG9jq4U3LbnwVxN/y3nNlDzm2OFs596uo9zrUY+AV1opXq6ome78tRDUCRWfA==
-jest-resolve-dependencies@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz#fc50ee56a67d2c2183063f6a500cc4042b5e2327"
- integrity sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==
+jest-resolve-dependencies@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.0.tgz#8e3b15589848995ddc9a39f49462dad5b7bc14a2"
+ integrity sha512-xQsy7CmrT4CJxdNUEdzZU2M/v6YmtQ/pkJM+sx7TA1siG1zfsZuo78PZvzglwRMQFr88f3Su4Om8OEBAic+SMw==
dependencies:
- "@jest/types" "^27.4.2"
- jest-regex-util "^27.4.0"
- jest-snapshot "^27.4.6"
+ "@jest/types" "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-snapshot "^27.5.0"
-jest-resolve@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.2.tgz#d3e4cbee7acb4a4f8c8bfc270767bec34d2aefaf"
- integrity sha512-d/zqPjxCzMqHlOdRTg8cTpO9jY+1/T74KazT8Ws/LwmwxV5sRMWOkiLjmzUCDj/5IqA5XHNK4Hkmlq9Kdpb9Sg==
+jest-resolve@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.0.tgz#a8e95a68dfb4a59faa508d7b6d2c6a02dcabb712"
+ integrity sha512-PkDpYEGV/nFqThnIrlPtj8oTxyAV3iuuS6or7dZYyUWaHr/tyyVb5qfBmZS6FEr7ozBHgjrF1bgcgIefnlicbw==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.2"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
jest-pnp-resolver "^1.2.2"
- jest-util "^27.4.2"
- jest-validate "^27.4.2"
+ jest-util "^27.5.0"
+ jest-validate "^27.5.0"
resolve "^1.20.0"
resolve.exports "^1.1.0"
slash "^3.0.0"
-jest-resolve@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.6.tgz#2ec3110655e86d5bfcfa992e404e22f96b0b5977"
- integrity sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==
+jest-runner@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.0.tgz#b5747a4444b4d3faae019bd201943948882d26c3"
+ integrity sha512-RMzXhkJLLOKKgUPY2trpyVBijaFmswMtgoCCBk2PQVRHC6yo1vLd1/jmFP39s5OXXnt7rntuzKSYvxl+QUibqQ==
dependencies:
- "@jest/types" "^27.4.2"
- chalk "^4.0.0"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
- jest-pnp-resolver "^1.2.2"
- jest-util "^27.4.2"
- jest-validate "^27.4.6"
- resolve "^1.20.0"
- resolve.exports "^1.1.0"
- slash "^3.0.0"
-
-jest-runner@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.6.tgz#1d390d276ec417e9b4d0d081783584cbc3e24773"
- integrity sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==
- dependencies:
- "@jest/console" "^27.4.6"
- "@jest/environment" "^27.4.6"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/console" "^27.5.0"
+ "@jest/environment" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
emittery "^0.8.1"
- exit "^0.1.2"
- graceful-fs "^4.2.4"
- jest-docblock "^27.4.0"
- jest-environment-jsdom "^27.4.6"
- jest-environment-node "^27.4.6"
- jest-haste-map "^27.4.6"
- jest-leak-detector "^27.4.6"
- jest-message-util "^27.4.6"
- jest-resolve "^27.4.6"
- jest-runtime "^27.4.6"
- jest-util "^27.4.2"
- jest-worker "^27.4.6"
+ graceful-fs "^4.2.9"
+ jest-docblock "^27.5.0"
+ jest-environment-jsdom "^27.5.0"
+ jest-environment-node "^27.5.0"
+ jest-haste-map "^27.5.0"
+ jest-leak-detector "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-runtime "^27.5.0"
+ jest-util "^27.5.0"
+ jest-worker "^27.5.0"
source-map-support "^0.5.6"
throat "^6.0.1"
-jest-runtime@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.6.tgz#83ae923818e3ea04463b22f3597f017bb5a1cffa"
- integrity sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==
+jest-runtime@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.0.tgz#2497116742b9e7cc1e5381a9ded36602b8b0c78c"
+ integrity sha512-T7APxCPjN3p3ePcLuypbWtD0UZHyAdvIADZ9ABI/sFZ9t/Rf2xIUd6D7RzZIX+unewJRooVGWrgDIgeUuj0OUA==
dependencies:
- "@jest/environment" "^27.4.6"
- "@jest/fake-timers" "^27.4.6"
- "@jest/globals" "^27.4.6"
- "@jest/source-map" "^27.4.0"
- "@jest/test-result" "^27.4.6"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/environment" "^27.5.0"
+ "@jest/fake-timers" "^27.5.0"
+ "@jest/globals" "^27.5.0"
+ "@jest/source-map" "^27.5.0"
+ "@jest/test-result" "^27.5.0"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
chalk "^4.0.0"
cjs-module-lexer "^1.0.0"
collect-v8-coverage "^1.0.0"
execa "^5.0.0"
glob "^7.1.3"
- graceful-fs "^4.2.4"
- jest-haste-map "^27.4.6"
- jest-message-util "^27.4.6"
- jest-mock "^27.4.6"
- jest-regex-util "^27.4.0"
- jest-resolve "^27.4.6"
- jest-snapshot "^27.4.6"
- jest-util "^27.4.2"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-mock "^27.5.0"
+ jest-regex-util "^27.5.0"
+ jest-resolve "^27.5.0"
+ jest-snapshot "^27.5.0"
+ jest-util "^27.5.0"
slash "^3.0.0"
strip-bom "^4.0.0"
-jest-serializer@^27.4.0:
- version "27.4.0"
- resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a"
- integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==
+jest-serializer@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.0.tgz#439a110df27f97a40c114a429b708c2ada15a81f"
+ integrity sha512-aSDFqQlVXtBH+Zb5dl9mCvTSFkabixk/9P9cpngL4yJKpmEi9USxfDhONFMzJrtftPvZw3PcltUVmtFZTB93rg==
dependencies:
"@types/node" "*"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
jest-snapshot-serializer-ansi@1.0.0:
version "1.0.0"
@@ -3766,99 +4228,57 @@ jest-snapshot-serializer-raw@1.2.0:
resolved "https://registry.yarnpkg.com/jest-snapshot-serializer-raw/-/jest-snapshot-serializer-raw-1.2.0.tgz#cd67afb5e5cc39d88d518b45e7320dd01ce55148"
integrity sha512-Cnp2u7GkaXBVOOelhU94x6Kb/10WJjQtgKDvqynnYGNGQlKBj06x8QZmRkL8XWWVLQ5DKA2fT5rY9kRd512JcA==
-jest-snapshot@^27.0.4:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.2.tgz#bd1ea04a8fab402e5ab18b788809fa597ddff532"
- integrity sha512-DI7lJlNIu6WSQ+esqhnJzEzU70+dV+cNjoF1c+j5FagWEd3KtOyZvVliAH0RWNQ6KSnAAnKSU0qxJ8UXOOhuUQ==
- dependencies:
- "@babel/core" "^7.7.2"
- "@babel/generator" "^7.7.2"
- "@babel/parser" "^7.7.2"
- "@babel/plugin-syntax-typescript" "^7.7.2"
- "@babel/traverse" "^7.7.2"
- "@babel/types" "^7.0.0"
- "@jest/transform" "^27.4.2"
- "@jest/types" "^27.4.2"
- "@types/babel__traverse" "^7.0.4"
- "@types/prettier" "^2.1.5"
- babel-preset-current-node-syntax "^1.0.0"
- chalk "^4.0.0"
- expect "^27.4.2"
- graceful-fs "^4.2.4"
- jest-diff "^27.4.2"
- jest-get-type "^27.4.0"
- jest-haste-map "^27.4.2"
- jest-matcher-utils "^27.4.2"
- jest-message-util "^27.4.2"
- jest-resolve "^27.4.2"
- jest-util "^27.4.2"
- natural-compare "^1.4.0"
- pretty-format "^27.4.2"
- semver "^7.3.2"
-
-jest-snapshot@^27.4.0, jest-snapshot@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.6.tgz#e2a3b4fff8bdce3033f2373b2e525d8b6871f616"
- integrity sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==
+jest-snapshot@^27.0.4, jest-snapshot@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.0.tgz#c5c4c084f5e10036f31e7647de1a6f28c07681fc"
+ integrity sha512-cAJj15uqWGkro0bfcv/EgusBnqNgCpRruFQZghsMYTq4Fm2lk/VhAf8DgRr8wvhR6Ue1hkeL8tn70Cw4t8x/5A==
dependencies:
"@babel/core" "^7.7.2"
"@babel/generator" "^7.7.2"
"@babel/plugin-syntax-typescript" "^7.7.2"
"@babel/traverse" "^7.7.2"
"@babel/types" "^7.0.0"
- "@jest/transform" "^27.4.6"
- "@jest/types" "^27.4.2"
+ "@jest/transform" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/babel__traverse" "^7.0.4"
"@types/prettier" "^2.1.5"
babel-preset-current-node-syntax "^1.0.0"
chalk "^4.0.0"
- expect "^27.4.6"
- graceful-fs "^4.2.4"
- jest-diff "^27.4.6"
- jest-get-type "^27.4.0"
- jest-haste-map "^27.4.6"
- jest-matcher-utils "^27.4.6"
- jest-message-util "^27.4.6"
- jest-util "^27.4.2"
+ expect "^27.5.0"
+ graceful-fs "^4.2.9"
+ jest-diff "^27.5.0"
+ jest-get-type "^27.5.0"
+ jest-haste-map "^27.5.0"
+ jest-matcher-utils "^27.5.0"
+ jest-message-util "^27.5.0"
+ jest-util "^27.5.0"
natural-compare "^1.4.0"
- pretty-format "^27.4.6"
+ pretty-format "^27.5.0"
semver "^7.3.2"
-jest-util@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621"
- integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==
+jest-util@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.0.tgz#0b9540d91b0de65d288f235fa9899e6eeeab8d35"
+ integrity sha512-FUUqOx0gAzJy3ytatT1Ss372M1kmhczn8x7aE0++11oPGW1FyD/5NjYBI8w1KOXFm6IVjtaZm2szfJJL+CHs0g==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
chalk "^4.0.0"
ci-info "^3.2.0"
- graceful-fs "^4.2.4"
+ graceful-fs "^4.2.9"
picomatch "^2.2.3"
-jest-validate@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.2.tgz#eecfcc1b1c9429aa007da08a2bae4e32a81bbbc3"
- integrity sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==
+jest-validate@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.0.tgz#b3df32372d2c832fa5a5e31ee2c37f94f79f7f1f"
+ integrity sha512-2XZzQWNrY9Ypo11mm4ZeVjvr++CQG/45XnmA2aWwx155lTwy1JGFI8LpQ2dBCSAeO21ooqg/FCIvv9WwfnPClA==
dependencies:
- "@jest/types" "^27.4.2"
+ "@jest/types" "^27.5.0"
camelcase "^6.2.0"
chalk "^4.0.0"
- jest-get-type "^27.4.0"
+ jest-get-type "^27.5.0"
leven "^3.1.0"
- pretty-format "^27.4.2"
-
-jest-validate@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.6.tgz#efc000acc4697b6cf4fa68c7f3f324c92d0c4f1f"
- integrity sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==
- dependencies:
- "@jest/types" "^27.4.2"
- camelcase "^6.2.0"
- chalk "^4.0.0"
- jest-get-type "^27.4.0"
- leven "^3.1.0"
- pretty-format "^27.4.6"
+ pretty-format "^27.5.0"
jest-watch-typeahead@1.0.0:
version "1.0.0"
@@ -3873,58 +4293,36 @@ jest-watch-typeahead@1.0.0:
string-length "^5.0.1"
strip-ansi "^7.0.1"
-jest-watcher@^27.0.0:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.2.tgz#c9037edfd80354c9fe90de4b6f8b6e2b8e736744"
- integrity sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==
+jest-watcher@^27.0.0, jest-watcher@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.0.tgz#ca11c3b9115c92a8fd2fd9e2def296d45206f1ca"
+ integrity sha512-MhIeIvEd6dnnspE0OfYrqHOAfZZdyFqx/k8U2nvVFSkLYf22qAFfyNWPVQYcwqKVNobcOhJoT0kV/nRHGbqK8A==
dependencies:
- "@jest/test-result" "^27.4.2"
- "@jest/types" "^27.4.2"
+ "@jest/test-result" "^27.5.0"
+ "@jest/types" "^27.5.0"
"@types/node" "*"
ansi-escapes "^4.2.1"
chalk "^4.0.0"
- jest-util "^27.4.2"
+ jest-util "^27.5.0"
string-length "^4.0.1"
-jest-watcher@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.6.tgz#673679ebeffdd3f94338c24f399b85efc932272d"
- integrity sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==
- dependencies:
- "@jest/test-result" "^27.4.6"
- "@jest/types" "^27.4.2"
- "@types/node" "*"
- ansi-escapes "^4.2.1"
- chalk "^4.0.0"
- jest-util "^27.4.2"
- string-length "^4.0.1"
-
-jest-worker@^27.4.2:
- version "27.4.5"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.5.tgz#d696e3e46ae0f24cff3fa7195ffba22889262242"
- integrity sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==
+jest-worker@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.0.tgz#99ee77e4d06168107c27328bd7f54e74c3a48d59"
+ integrity sha512-8OEHiPNOPTfaWnJ2SUHM8fmgeGq37uuGsQBvGKQJl1f+6WIy6g7G3fE2ruI5294bUKUI9FaCWt5hDvO8HSwsSg==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest-worker@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e"
- integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==
+jest@27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.0.tgz#2c04ff88754e42e9fc5240840b91f9a9a8990875"
+ integrity sha512-sCMZhL9zy0fiFc4H0cKlXq7BcghMSxm5ZnEyaPWTteArU5ix6JjOKyOXSUBGLTQCmt5kuX9zEvQ9BSshHOPB3A==
dependencies:
- "@types/node" "*"
- merge-stream "^2.0.0"
- supports-color "^8.0.0"
-
-jest@27.4.7:
- version "27.4.7"
- resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.7.tgz#87f74b9026a1592f2da05b4d258e57505f28eca4"
- integrity sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==
- dependencies:
- "@jest/core" "^27.4.7"
+ "@jest/core" "^27.5.0"
import-local "^3.0.2"
- jest-cli "^27.4.7"
+ jest-cli "^27.5.0"
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
@@ -3989,6 +4387,11 @@ jsesc@^2.5.1:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
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"
@@ -4118,6 +4521,18 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+locate-path@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.0.0.tgz#f0a60c8dd7ef0f737699eb9461b9567a92bc97da"
+ integrity sha512-+cg2yXqDUKfo4hsFxwa3G1cBJeA+gs1vD8FyV9/odWoUlQe/4syxHQ5DPtKjtfm6gnKbZzjCqzX03kXosvZB1w==
+ dependencies:
+ p-locate "^6.0.0"
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
lodash.memoize@4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -4128,11 +4543,6 @@ lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash@4.17.19:
- version "4.17.19"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
- integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
-
lodash@4.17.21, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@@ -4193,13 +4603,13 @@ markdown-escapes@^1.0.0:
resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==
-mem@8.1.1:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122"
- integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==
+mem@9.0.2:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-9.0.2.tgz#bbc2d40be045afe30749681e8f5d554cee0c0354"
+ integrity sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==
dependencies:
map-age-cleaner "^0.1.3"
- mimic-fn "^3.1.0"
+ mimic-fn "^4.0.0"
memorystream@^0.3.1:
version "0.3.1"
@@ -4211,7 +4621,7 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-merge2@^1.3.0:
+merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@@ -4246,11 +4656,6 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-mimic-fn@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74"
- integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==
-
mimic-fn@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
@@ -4261,13 +4666,20 @@ min-indent@^1.0.0:
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-minimatch@3.0.4, minimatch@^3.0.4:
+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==
dependencies:
brace-expansion "^1.1.7"
+minimatch@^3.0.4:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3"
+ integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
minimist@1.2.5, minimist@^1.2.0, minimist@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
@@ -4278,10 +4690,10 @@ mkdirp@1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-moment@2.27.0:
- version "2.27.0"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d"
- integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==
+moment@2.29.1:
+ version "2.29.1"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3"
+ integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
ms@2.0.0:
version "2.0.0"
@@ -4303,24 +4715,16 @@ n-readlines@1.0.1:
resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e"
integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ==
-nanoid@^3.1.30:
- version "3.1.30"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362"
- integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
+nanoid@^3.1.22:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
+ integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-nice-napi@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b"
- integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==
- dependencies:
- node-addon-api "^3.0.0"
- node-gyp-build "^4.2.2"
-
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
@@ -4335,25 +4739,20 @@ node-actionlint@1.2.2:
chalk "^4.1.1"
fast-glob "^3.2.7"
-node-addon-api@^3.0.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
- integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
+node-domexception@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
+ integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
-node-fetch@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.1.0.tgz#714f4922dc270239487654eaeeab86b8206cb52e"
- integrity sha512-QU0WbIfMUjd5+MUzQOYhenAazakV7Irh1SGkWCsRzBwvm4fAhzEUaHMJ6QLP7gWT6WO9/oH2zhKMMGMuIrDyKw==
+node-fetch@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.1.1.tgz#d0d9607e455b3087e3092b821b5b1f1ebf4c2147"
+ integrity sha512-SMk+vKgU77PYotRdWzqZGTZeuFKlsJ0hu4KPviQKkfY+N3vn2MIzr0rvpnYpR8MtB3IEuhlEcuOLbGvLRlA+yg==
dependencies:
data-uri-to-buffer "^4.0.0"
- fetch-blob "^3.1.2"
+ fetch-blob "^3.1.3"
formdata-polyfill "^4.0.10"
-node-gyp-build@^4.2.2:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
- integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
-
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
@@ -4374,6 +4773,16 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
+normalize-package-data@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e"
+ integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==
+ dependencies:
+ hosted-git-info "^4.0.1"
+ is-core-module "^2.5.0"
+ semver "^7.3.4"
+ validate-npm-package-license "^3.0.1"
+
normalize-path@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@@ -4401,13 +4810,6 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
-npm-run-path@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.0.1.tgz#748dd68ed7de377bb1f7132c7dafe657be5ab400"
- integrity sha512-ybBJQUSyFwEEhqO2lXmyKOl9ucHtyZBWVM0h0FiMfT/+WKxCUZFa95qAR2X3w/w6oigN3B0b2UNHZbD+kdfD5w==
- dependencies:
- path-key "^4.0.0"
-
nwsapi@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
@@ -4419,16 +4821,16 @@ object-assign@^4.1.1:
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
object-inspect@^1.11.0, object-inspect@^1.9.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1"
- integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
+ integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
object-keys@^1.0.12, 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.assign@^4.1.2:
+object.assign@^4.1.0, object.assign@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
@@ -4487,12 +4889,13 @@ onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
-onetime@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
- integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
+open@^7.4.2:
+ version "7.4.2"
+ resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
+ integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
dependencies:
- mimic-fn "^4.0.0"
+ is-docker "^2.0.0"
+ is-wsl "^2.1.1"
optionator@^0.8.1:
version "0.8.3"
@@ -4549,6 +4952,13 @@ p-limit@^3.0.2:
dependencies:
yocto-queue "^0.1.0"
+p-limit@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
+ integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
+ dependencies:
+ yocto-queue "^1.0.0"
+
p-locate@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
@@ -4570,6 +4980,13 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
+p-locate@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f"
+ integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==
+ dependencies:
+ p-limit "^4.0.0"
+
p-map@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
@@ -4587,15 +5004,10 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-package-name-regex@1.0.8:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/package-name-regex/-/package-name-regex-1.0.8.tgz#4b8388cace6cc415f462ab4a269583d9a2d9f131"
- integrity sha512-g3vB2J62dLqf4m50VM4tJUC4sixw3JB+Igd0cF3P/gJhAvmvsmFEV2eWZTeLbwfkKEWTf3+gwQ2C6JFFRxWHEQ==
-
-pako@^1.0.3:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
- integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+package-name-regex@2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/package-name-regex/-/package-name-regex-2.0.5.tgz#5e3548ffe3dba340b9779d28a024bdb4a19f055b"
+ integrity sha512-F0lX+FBs/Bo7KWY6EuUXj+oarXU0Og1R2Zdg3F/fVcNw3pPQAKFKxUrugno0Ds5NUztlx/gRLnQW9MF+7VTqAw==
parent-module@^1.0.0:
version "1.0.1"
@@ -4631,7 +5043,7 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
-parse-json@^5.0.0:
+parse-json@^5.0.0, 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==
@@ -4665,6 +5077,11 @@ path-exists@^4.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+path-exists@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
+ integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
+
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"
@@ -4680,11 +5097,6 @@ path-key@^3.0.0, path-key@^3.1.0:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-path-key@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
- integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
-
path-parse@^1.0.6, path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
@@ -4702,15 +5114,20 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+picocolors@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
+ integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.3:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
- integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pidtree@^0.3.0:
version "0.3.1"
@@ -4723,20 +5140,9 @@ pify@^3.0.0:
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
pirates@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6"
- integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==
-
-piscina@^3.1.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154"
- integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==
- dependencies:
- eventemitter-asyncresource "^1.0.0"
- hdr-histogram-js "^2.0.1"
- hdr-histogram-percentiles-obj "^3.0.0"
- optionalDependencies:
- nice-napi "^1.0.2"
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
+ integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
pkg-dir@^4.2.0:
version "4.2.0"
@@ -4762,20 +5168,24 @@ pluralize@^8.0.0:
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
-postcss-less@6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-6.0.0.tgz#463b34c60f53b648c237f569aeb2e09149d85af4"
- integrity sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==
+postcss-less@3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad"
+ integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==
+ dependencies:
+ postcss "^7.0.14"
postcss-media-query-parser@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=
-postcss-scss@4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.2.tgz#39ddcc0ab32f155d5ab328ee91353d67a52d537b"
- integrity sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==
+postcss-scss@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.1.1.tgz#ec3a75fa29a55e016b90bf3269026c53c1d2b383"
+ integrity sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==
+ dependencies:
+ postcss "^7.0.6"
postcss-selector-parser@2.2.3:
version "2.2.3"
@@ -4795,14 +5205,13 @@ postcss-values-parser@2.0.1:
indexes-of "^1.0.1"
uniq "^1.0.1"
-postcss@8.4.4:
- version "8.4.4"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.4.tgz#d53d4ec6a75fd62557a66bb41978bf47ff0c2869"
- integrity sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q==
+postcss@^7.0.14, postcss@^7.0.6:
+ version "7.0.39"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
dependencies:
- nanoid "^3.1.30"
- picocolors "^1.0.0"
- source-map-js "^1.0.1"
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
prelude-ls@^1.2.1:
version "1.2.1"
@@ -4824,30 +5233,15 @@ pretty-bytes@5.6.0:
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
-pretty-format@^27.0.0, pretty-format@^27.4.6:
- version "27.4.6"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7"
- integrity sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==
+pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.0:
+ version "27.5.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.0.tgz#71e1af7a4b587d259fa4668dcd3e94af077767cb"
+ integrity sha512-xEi6BRPZ+J1AIS4BAtFC/+rh5jXlXObGZjx5+OSpM95vR/PGla78bFVHMy5GdZjP9wk3AHAMHROXq/r69zXltw==
dependencies:
ansi-regex "^5.0.1"
ansi-styles "^5.0.0"
react-is "^17.0.1"
-pretty-format@^27.0.2, pretty-format@^27.4.2:
- version "27.4.2"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.2.tgz#e4ce92ad66c3888423d332b40477c87d1dac1fb8"
- integrity sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==
- dependencies:
- "@jest/types" "^27.4.2"
- ansi-regex "^5.0.1"
- ansi-styles "^5.0.0"
- react-is "^17.0.1"
-
-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.4.2"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
@@ -4857,13 +5251,13 @@ prompts@^2.0.1:
sisteransi "^1.0.5"
prop-types@^15.7.2:
- version "15.7.2"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
- integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ version "15.8.1"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
dependencies:
loose-envify "^1.4.0"
object-assign "^4.1.1"
- react-is "^16.8.1"
+ react-is "^16.13.1"
pseudomap@^1.0.2:
version "1.0.2"
@@ -4885,7 +5279,7 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-react-is@^16.8.1:
+react-is@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -4895,6 +5289,15 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+read-pkg-up@9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-9.0.0.tgz#2f03ba3e1430c56f8f0a4da73274c6d26c283b45"
+ integrity sha512-7dNMZVru/9QQYnYYjboVqpaqT/e24MuhovJWjZHFBmUnCKVz5ZVFNLbd+fJCUsH7uIgkYbX9yQJvab2nc6P7Nw==
+ dependencies:
+ find-up "^6.2.0"
+ read-pkg "^7.0.0"
+ type-fest "^2.5.0"
+
read-pkg-up@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
@@ -4923,6 +5326,16 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
+read-pkg@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-7.0.0.tgz#7009094a9cd58c7efc325d31f1f6cfce1928fa00"
+ integrity sha512-oG2cKegOo2gjy/hrAM+KFHD9IqKdQvWcpWBBxuHbaucziM9PY45EuF6YbenLF7tL9ekXgB6Lfruo9hwdHQZUrA==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.1"
+ normalize-package-data "^3.0.2"
+ parse-json "^5.2.0"
+ type-fest "^2.0.0"
+
refa@^0.9.0:
version "0.9.1"
resolved "https://registry.yarnpkg.com/refa/-/refa-0.9.1.tgz#12731fce378d235731b1f73182b20083c8a75ca8"
@@ -4930,6 +5343,30 @@ refa@^0.9.0:
dependencies:
regexpp "^3.2.0"
+regenerate-unicode-properties@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56"
+ integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.13.4:
+ version "0.13.9"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+
+regenerator-transform@^0.14.2:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
regexp-ast-analysis@^0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/regexp-ast-analysis/-/regexp-ast-analysis-0.2.4.tgz#a497a7c8bfbba51438693821e4b0e3ed43e20f1b"
@@ -4959,9 +5396,9 @@ regexp-util@1.2.2, regexp-util@^1.2.0, regexp-util@^1.2.1:
tslib "^1.9.0"
regexp.prototype.flags@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
- integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307"
+ integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.3"
@@ -4971,6 +5408,30 @@ regexpp@^3.2.0:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
+regexpu-core@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3"
+ integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.0.1"
+ regjsgen "^0.6.0"
+ regjsparser "^0.8.2"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.0.0"
+
+regjsgen@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d"
+ integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==
+
+regjsparser@^0.8.2:
+ version "0.8.4"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f"
+ integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==
+ dependencies:
+ jsesc "~0.5.0"
+
remark-footnotes@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/remark-footnotes/-/remark-footnotes-2.0.0.tgz#9001c4c2ffebba55695d2dd80ffb8b82f7e6303f"
@@ -5042,12 +5503,12 @@ resolve.exports@^1.1.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
-resolve@1.21.0, resolve@^1.10.0, resolve@^1.20.0:
- version "1.21.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
- integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
+resolve@1.22.0, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0:
+ version "1.22.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
+ integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
dependencies:
- is-core-module "^2.8.0"
+ is-core-module "^2.8.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -5080,20 +5541,20 @@ rollup-plugin-inject@^3.0.0:
magic-string "^0.25.3"
rollup-pluginutils "^2.8.1"
-rollup-plugin-license@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/rollup-plugin-license/-/rollup-plugin-license-2.2.0.tgz#0d19139bbe44dda500fbf15530af07c91949e348"
- integrity sha512-xXb1vviEwlJMX+VGUSsglcMA/Rh9d2QzEm94awy4FlnsPqGrXoTYYGOR3UXR6gYIxiJFkr7qmkKF/NXfre/y8g==
+rollup-plugin-license@2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-license/-/rollup-plugin-license-2.6.1.tgz#20f15cc37950f362f8eefdc6e3a2e659d0cad9eb"
+ integrity sha512-JPtlXF0tZKyHztKJsyd3HHmQFSkXei+596Xrb/a/bHIdDhvFuNSKimCKkQpoXyspfeVQk7CNay1MyGpFHAXjvg==
dependencies:
commenting "1.1.0"
- glob "7.1.6"
- lodash "4.17.19"
+ glob "7.2.0"
+ lodash "4.17.21"
magic-string "0.25.7"
mkdirp "1.0.4"
- moment "2.27.0"
- package-name-regex "1.0.8"
+ moment "2.29.1"
+ package-name-regex "2.0.5"
spdx-expression-validate "2.0.0"
- spdx-satisfies "5.0.0"
+ spdx-satisfies "5.0.1"
rollup-plugin-node-polyfills@^0.2.1:
version "0.2.1"
@@ -5159,14 +5620,19 @@ semver-compare@^1.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@7.3.5, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5:
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
+semver@7.3.5, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
dependencies:
lru-cache "^6.0.0"
-semver@^6.0.0, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -5214,10 +5680,10 @@ sigmund@^1.0.1:
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
-signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.5:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
- integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==
+signal-exit@^3.0.2, 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==
simple-html-tokenizer@^0.5.11:
version "0.5.11"
@@ -5248,11 +5714,6 @@ snapshot-diff@0.9.0:
jest-snapshot "^27.0.4"
pretty-format "^27.0.2"
-source-map-js@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf"
- integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==
-
source-map-support@^0.5.6:
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
@@ -5328,10 +5789,10 @@ spdx-ranges@^2.0.0:
resolved "https://registry.yarnpkg.com/spdx-ranges/-/spdx-ranges-2.1.1.tgz#87573927ba51e92b3f4550ab60bfc83dd07bac20"
integrity sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==
-spdx-satisfies@5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/spdx-satisfies/-/spdx-satisfies-5.0.0.tgz#d740b8f14caeada36fb307629dee87146970a256"
- integrity sha512-/hGhwh20BeGmkA+P/lm06RvXD94JduwNxtx/oX3B5ClPt1/u/m5MCaDNo1tV3Y9laLkQr/NRde63b9lLMhlNfw==
+spdx-satisfies@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-satisfies/-/spdx-satisfies-5.0.1.tgz#9feeb2524686c08e5f7933c16248d4fdf07ed6a6"
+ integrity sha512-Nwor6W6gzFp8XX4neaKQ7ChV4wmpSh2sSDemMFSzHxpTw460jxFYeOn+jq4ybnSSw/5sc3pjka9MQPouksQNpw==
dependencies:
spdx-compare "^1.0.0"
spdx-expression-parse "^3.0.0"
@@ -5370,7 +5831,16 @@ string-length@^5.0.1:
char-regex "^2.0.0"
strip-ansi "^7.0.1"
-string-width@4.2.3, string-width@^4.1.0, string-width@^4.2.0:
+string-width@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.0.1.tgz#0d8158335a6cfd8eb95da9b6b262ce314a036ffd"
+ integrity sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==
+ dependencies:
+ emoji-regex "^9.2.2"
+ is-fullwidth-code-point "^4.0.0"
+ strip-ansi "^7.0.1"
+
+string-width@^4.1.0, 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==
@@ -5468,11 +5938,6 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-strip-final-newline@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
- integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
-
strip-indent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
@@ -5506,11 +5971,6 @@ supports-color@^8.0.0:
dependencies:
has-flag "^4.0.0"
-supports-color@^9.0.2:
- version "9.2.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891"
- integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==
-
supports-hyperlinks@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb"
@@ -5534,16 +5994,16 @@ temp-dir@^2.0.0:
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
-tempy@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/tempy/-/tempy-2.0.0.tgz#c434b89486e112151d5e91ef25592c8ee6fec4f6"
- integrity sha512-m+QReZVhpa0Y56fmfoLFRZN4aDFdd3qVd8a9k3RfyTw/1utVYNg+Ar4BY6l4/TlkhYCCJFfhYWt9uy0127buJg==
+tempy@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.1.tgz#30fe901fd869cfb36ee2bd999805aa72fbb035de"
+ integrity sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==
dependencies:
del "^6.0.0"
- is-stream "^3.0.0"
+ is-stream "^2.0.0"
temp-dir "^2.0.0"
- type-fest "^2.0.0"
- unique-string "^3.0.0"
+ type-fest "^0.16.0"
+ unique-string "^2.0.0"
terminal-link@^2.0.0:
version "2.1.1"
@@ -5673,6 +6133,11 @@ type-detect@4.0.8:
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+type-fest@^0.16.0:
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860"
+ integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==
+
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
@@ -5693,15 +6158,10 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-type-fest@^1.0.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1"
- integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
-
-type-fest@^2.0.0:
- version "2.9.0"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.9.0.tgz#7a2d430dd966f52b6bc723da2aaa2c9867530551"
- integrity sha512-uC0hJKi7eAGXUJ/YKk53RhnKxMwzHWgzf4t92oz8Qez28EBgVTfpDTB59y9hMYLzc/Wl85cD7Tv1hLZZoEJtrg==
+type-fest@^2.0.0, type-fest@^2.5.0:
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.11.1.tgz#04ddf5c0dbbd403fb8270d98ad1b4857e7ff7b24"
+ integrity sha512-fPcV5KLAqFfmhHobtAUwEpbpfYhVF7wSLVgbG/7mIGe/Pete7ky/bPAPRkzbWdrj0/EkswFAAR2feJCgigkUKg==
typedarray-to-buffer@^3.1.5:
version "3.1.5"
@@ -5710,10 +6170,10 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
-typescript@4.5.4:
- version "4.5.4"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
- integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
+typescript@4.5.5:
+ version "4.5.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
+ integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
unbox-primitive@^1.0.1:
version "1.0.1"
@@ -5733,6 +6193,29 @@ unherit@^1.0.4:
inherits "^2.0.0"
xtend "^4.0.0"
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
+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:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
+
unicode-regex@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/unicode-regex/-/unicode-regex-3.0.0.tgz#0c20df914c6da0412b3714cd300726e0f7f24698"
@@ -5771,13 +6254,6 @@ unique-string@^2.0.0:
dependencies:
crypto-random-string "^2.0.0"
-unique-string@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a"
- integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==
- dependencies:
- crypto-random-string "^4.0.0"
-
unist-util-is@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797"
@@ -5836,7 +6312,7 @@ v8-compile-cache@^2.0.3:
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
-v8-to-istanbul@^8.0.0:
+v8-to-istanbul@^8.1.0:
version "8.1.1"
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed"
integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==
@@ -5845,15 +6321,6 @@ v8-to-istanbul@^8.0.0:
convert-source-map "^1.6.0"
source-map "^0.7.3"
-v8-to-istanbul@^8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c"
- integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==
- dependencies:
- "@types/istanbul-lib-coverage" "^2.0.1"
- convert-source-map "^1.6.0"
- source-map "^0.7.3"
-
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -6071,7 +6538,7 @@ yaml@^1.10.0:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
-yargs-parser@^20.2.2, yargs-parser@^20.2.7:
+yargs-parser@^20.2.2:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
@@ -6094,7 +6561,7 @@ yocto-queue@^0.1.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
-zod@^3.11.6:
- version "3.11.6"
- resolved "https://registry.yarnpkg.com/zod/-/zod-3.11.6.tgz#e43a5e0c213ae2e02aefe7cb2b1a6fa3d7f1f483"
- integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==
+yocto-queue@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
+ integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==