diff --git a/.eslintrc.json b/.eslintrc.json index 3957c9d..48214c7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -11,6 +11,7 @@ "i18n-text/no-en": "off", "eslint-comments/no-use": "off", "import/no-namespace": "off", + "import/no-named-as-default": "off", "no-shadow": "off", "no-unused-vars": "off", "prefer-template": "off", @@ -60,29 +61,7 @@ }, "import/resolver": { "typescript": { - "alwaysTryTypes": true, // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` - - // Choose from one of the "project" configs below or omit to use /tsconfig.json by default - - // use /path/to/folder/tsconfig.json - "project": "path/to/folder", - - // Multiple tsconfigs (Useful for monorepos) - - // use a glob pattern - "project": "packages/*/tsconfig.json", - - // use an array - "project": [ - "packages/module-a/tsconfig.json", - "packages/module-b/tsconfig.json" - ], - - // use an array of glob patterns - "project": [ - "packages/*/tsconfig.json", - "other-packages/*/tsconfig.json" - ] + "alwaysTryTypes": true // always try to resolve types under `@types` directory even it doesn't contain any source code, like `@types/unist` } } } diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..37ed630 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,26 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: 'bug' +assignees: 'dorny,dharmendrasha,j-catania' +--- + +## Describe the bug +A clear and concise description of what the bug is. + +## To Reproduce +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +## Expected behavior +A clear and concise description of what you expected to happen. + +## Screenshots +If applicable, add screenshots to help explain your problem. + +## Additional context +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md new file mode 100644 index 0000000..d8b8558 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -0,0 +1,13 @@ +--- +name: Feature Request +about: Suggest a feature +title: '' +labels: 'enhancement' +assignees: 'dorny,dharmendrasha,j-catania' +--- + +## Describe + +## Proposed solution + +## Alternatives considered diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..61c651e --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml new file mode 100644 index 0000000..5f4b9d2 --- /dev/null +++ b/.github/workflows/check-dist.yml @@ -0,0 +1,53 @@ +# `dist/index.js` is a special file in Actions. +# When you reference an action with `uses:` in a workflow, +# `index.js` is the code that will run. +# For our project, we generate this file through a build process from other source files. +# We need to make sure the checked-in `index.js` actually matches what we expect it to be. +name: Check dist/ + +on: + push: + branches: + - main + paths-ignore: + - '**.md' + pull_request: + paths-ignore: + - '**.md' + workflow_dispatch: + +jobs: + check-dist: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set Node.js + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + + - name: Install dependencies + run: npm ci + + - name: Rebuild the dist/ directory + run: | + npm run build + npm run package + + - name: Compare the expected and actual dist/ directories + run: | + if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then + echo "Detected uncommitted changes after build. See status below:" + git diff + exit 1 + fi + id: diff + + # If index.js was different than expected, upload the expected version as an artifact + - uses: actions/upload-artifact@v3 + if: ${{ failure() && steps.diff.conclusion == 'failure' }} + with: + name: dist + path: dist/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b38d0df..545b4e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,8 +13,10 @@ jobs: name: Build & Test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - run: node --version + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' - run: npm ci - run: npm run build - run: npm run format-check @@ -23,15 +25,7 @@ jobs: - name: Upload test results if: success() || failure() - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: test-results path: __tests__/__results__/*.xml - - - name: Create test report - uses: ./ - if: success() || failure() - with: - name: JEST Tests - path: __tests__/__results__/*.xml - reporter: jest-junit diff --git a/.github/workflows/manual-run.yml b/.github/workflows/manual-run.yml new file mode 100644 index 0000000..f8b1ee0 --- /dev/null +++ b/.github/workflows/manual-run.yml @@ -0,0 +1,22 @@ +name: Manual run + +on: + workflow_dispatch: + +jobs: + check-dist: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - run: npm ci + - run: npm run build + - run: npm test + + - name: Create test report + uses: ./ + if: success() || failure() + with: + name: JEST Tests + path: __tests__/__results__/*.xml + reporter: jest-junit diff --git a/.github/workflows/test-report.yml b/.github/workflows/test-report.yml index 1cf8442..e3f9555 100644 --- a/.github/workflows/test-report.yml +++ b/.github/workflows/test-report.yml @@ -11,7 +11,7 @@ jobs: name: Workflow test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: ./ with: artifact: test-results diff --git a/.gitignore b/.gitignore index 639696a..f43ecf7 100644 --- a/.gitignore +++ b/.gitignore @@ -100,3 +100,5 @@ lib/**/* # Project specific __tests__/__results__ + +.idea diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..eb800ed --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v18.19.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 869b125..bd75192 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,42 @@ # Changelog +## 1.8.0 +* Add `SwiftXunitParser` class based on `JavaJunitParser` for `swift-xunit` reporter https://github.com/dorny/test-reporter/pull/317 +* Use NodeJS 18 LTS as default runtime https://github.com/dorny/test-reporter/pull/332 +* Escape `<>` characters in suite name https://github.com/dorny/test-reporter/pull/236 +* Update actions runtime to Node20 https://github.com/dorny/test-reporter/pull/315 +* Update check title and remove icon https://github.com/dorny/test-reporter/pull/144 + +## 1.7.0 +* Fix #199: Use ✅ instead of ✔️ for better cross platform look by @petrdvorak in https://github.com/dorny/test-reporter/pull/200 +* Verify content of dist/ folder matches build output by @dorny in https://github.com/dorny/test-reporter/pull/207 +* Gracefully handle empty nested testsuite elements for JUnit. by @rvdlaarschot in https://github.com/dorny/test-reporter/pull/193 +* Gracefully handle empty failure tags by @haudren-woven in https://github.com/dorny/test-reporter/pull/213 +* Fix #208 - java-junit: show annotations on PR changed files by @atsu85 in https://github.com/dorny/test-reporter/pull/209 +* Only report failure if fail-on-error is set by @trond-snekvik in https://github.com/dorny/test-reporter/pull/214 +* Improve clarity on configuring for forkable repos by @abelbraaksma in https://github.com/dorny/test-reporter/pull/211 +* Suppress "Processing test results from" log by @vasanthdharmaraj in https://github.com/dorny/test-reporter/pull/179 +* Skip listing of files if error parsing is disabled by @dorny in https://github.com/dorny/test-reporter/pull/216 +* Correct typo in docs by @tangowithfoxtrot in https://github.com/dorny/test-reporter/pull/254 +* update dependencies by @j-catania in https://github.com/dorny/test-reporter/pull/269 +* Add permissions to example yml files by @TurnrDev in https://github.com/dorny/test-reporter/pull/263 +* add feature fail-on-empty by @gdams in https://github.com/dorny/test-reporter/pull/243 +* Add dependabot configuration by @yeikel in https://github.com/dorny/test-reporter/pull/228 +* Bump ws from 7.3.1 to 7.5.9 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/265 +* Bump actions/checkout from 2 to 4 by @dependabot in https://github.com/dorny/test-reporter/pull/279 +* Add new output for url url html by @luisito666 in https://github.com/dorny/test-reporter/pull/242 +* Update README.md by @IanMoroney in https://github.com/dorny/test-reporter/pull/158 +* Update jest-Junit part of Readme by @ryancasburn-KAI in https://github.com/dorny/test-reporter/pull/176 +* fix: default-valued fields are not mandatory by @TomerFi in https://github.com/dorny/test-reporter/pull/172 +* Bump ansi-regex from 4.1.0 to 4.1.1 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/278 +* Bump decode-uri-component from 0.2.0 to 0.2.2 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/276 +* Bump minimist from 1.2.5 to 1.2.8 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/275 +* Bump qs from 6.5.2 to 6.5.3 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/272 +* Bump json5 from 2.1.3 to 2.2.3 in /reports/jest by @dependabot in https://github.com/dorny/test-reporter/pull/271 +* Bump ansi-regex from 3.0.0 to 3.0.1 in /reports/mocha by @dependabot in https://github.com/dorny/test-reporter/pull/270 +* declare 'url' and 'url_html' as action outputs by @micha-one in https://github.com/dorny/test-reporter/pull/287 +* Avoid split on undefined by @cazou in https://github.com/dorny/test-reporter/pull/258 + ## v1.6.0 - [Update to node16 + recent versions of core and exec packages](https://github.com/dorny/test-reporter/pull/203) - [Update all dependencies to latest versions](https://github.com/dorny/test-reporter/pull/186) diff --git a/README.md b/README.md index 3051846..c564c00 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ This [Github Action](https://github.com/features/actions) displays test results - Flutter / [test](https://pub.dev/packages/test) - Java / [JUnit](https://junit.org/) - JavaScript / [JEST](https://jestjs.io/) / [Mocha](https://mochajs.org/) +- Swift / xUnit For more information see [Supported formats](#supported-formats) section. @@ -33,12 +34,16 @@ If that's fine for you, using this action is as simple as: on: pull_request: push: +permissions: + contents: read + actions: read + checks: write jobs: build-test: name: Build & Test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 # checkout the repo + - uses: actions/checkout@v3 # checkout the repo - run: npm ci # install packages - run: npm test # run tests (configured to use jest-junit reporter) @@ -58,6 +63,8 @@ To workaround this security restriction, it's required to use two separate workf 1. `CI` runs in the context of the PR head branch with the read-only token. It executes the tests and uploads test results as a build artifact 2. `Test Report` runs in the context of the repository main branch with read/write token. It will download test results and create reports +The second workflow will only run after it has been merged into your default branch (typically `main` or `master`), it won't run in a PR unless after the workflow file is part of that branch. + **PR head branch:** *.github/workflows/ci.yml* ```yaml name: 'CI' @@ -67,10 +74,10 @@ jobs: build-test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 # checkout the repo + - uses: actions/checkout@v3 # checkout the repo - run: npm ci # install packages - run: npm test # run tests (configured to use jest-junit reporter) - - uses: actions/upload-artifact@v2 # upload test results + - uses: actions/upload-artifact@v3 # upload test results if: success() || failure() # run this step even if previous step failed with: name: test-results @@ -84,6 +91,10 @@ on: workflows: ['CI'] # runs after CI workflow types: - completed +permissions: + contents: read + actions: read + checks: write jobs: report: runs-on: ubuntu-latest @@ -114,7 +125,7 @@ jobs: # Name of the Check Run which will be created name: '' - # Coma separated list of paths to test results + # Comma-separated list of paths to test results # Supports wildcards via [fast-glob](https://github.com/mrmlnc/fast-glob) # All matched result files must be of the same format path: '' @@ -161,6 +172,9 @@ jobs: # Set action as failed if test report contains any failed test fail-on-error: 'true' + # Set this action as failed if no test results were found + fail-on-empty: 'true' + # Relative path under $GITHUB_WORKSPACE where the repository was checked out. working-directory: '' @@ -177,6 +191,8 @@ jobs: | failed | Count of failed tests | | skipped | Count of skipped tests | | time | Test execution time [ms] | +| url | Check run URL | +| url_html | Check run URL HTML | ## Supported formats @@ -261,14 +277,14 @@ Some heuristic was necessary to figure out the mapping between the line in the s
- jest-Junit + jest-junit -[JEST](https://jestjs.io/) testing framework support requires the usage of [jest-Junit](https://github.com/jest-community/jest-Junit) reporter. +[JEST](https://jestjs.io/) testing framework support requires the usage of [jest-junit](https://github.com/jest-community/jest-junit) reporter. It will create test results in Junit XML format which can be then processed by this action. You can use the following example configuration in `package.json`: ```json "scripts": { - "test": "jest --ci --reporters=default --reporters=jest-Junit" + "test": "jest --ci --reporters=default --reporters=jest-junit" }, "devDependencies": { "jest": "^26.5.3", @@ -307,13 +323,19 @@ Mocha, unfortunately, doesn't have the option to store `json` output directly to There is a work in progress to fix it: [mocha#4607](https://github.com/mochajs/mocha/pull/4607)
+
+ swift-xunit (Experimental) + +Support for Swift test results in xUnit format is experimental - should work but it was not extensively tested. +
+ ## GitHub limitations Unfortunately, there are some known issues and limitations caused by GitHub API: - Test report (i.e. Check Run summary) is markdown text. No custom styling or HTML is possible. - Maximum report size is 65535 bytes. Input parameters `list-suites` and `list-tests` will be automatically adjusted if max size is exceeded. -- Test report can't reference any additional files (e.g. screenshots). You can use `actions/upload-artifact@v2` to upload them and inspect them manually. +- Test report can't reference any additional files (e.g. screenshots). You can use `actions/upload-artifact@v3` to upload them and inspect them manually. - Check Runs are created for specific commit SHA. It's not possible to specify under which workflow test report should belong if more workflows are running for the same SHA. Thanks to this GitHub "feature" it's possible your test report will appear in an unexpected place in GitHub UI. For more information, see [#67](https://github.com/dorny/test-reporter/issues/67). diff --git a/__tests__/__outputs__/jest-react-component-test-results.md b/__tests__/__outputs__/jest-react-component-test-results.md new file mode 100644 index 0000000..c984afd --- /dev/null +++ b/__tests__/__outputs__/jest-react-component-test-results.md @@ -0,0 +1,16 @@ +![Tests passed successfully](https://img.shields.io/badge/tests-1%20passed-success) +
Expand for details + +|Report|Passed|Failed|Skipped|Time| +|:---|---:|---:|---:|---:| +|fixtures/external/jest/jest-react-component-test-results.xml|1:white_check_mark:|||1000ms| +## :white_check_mark: fixtures/external/jest/jest-react-component-test-results.xml +**1** tests were completed in **1000ms** with **1** passed, **0** failed and **0** skipped. +|Test suite|Passed|Failed|Skipped|Time| +|:---|---:|---:|---:|---:| +|[\](#r0s0)|1:white_check_mark:|||798ms| +### :white_check_mark: \ +``` +:white_check_mark: should render properly +``` +
\ No newline at end of file diff --git a/__tests__/__outputs__/swift-xunit.md b/__tests__/__outputs__/swift-xunit.md new file mode 100644 index 0000000..aff1f4f --- /dev/null +++ b/__tests__/__outputs__/swift-xunit.md @@ -0,0 +1,16 @@ +![Tests failed](https://img.shields.io/badge/tests-2%20passed%2C%201%20failed-critical) +|Report|Passed|Failed|Skipped|Time| +|:---|---:|---:|---:|---:| +|fixtures/swift-xunit.xml|2:white_check_mark:|1:x:||220ms| +## :x: fixtures/swift-xunit.xml +**3** tests were completed in **220ms** with **2** passed, **1** failed and **0** skipped. +|Test suite|Passed|Failed|Skipped|Time| +|:---|---:|---:|---:|---:| +|[TestResults](#r0s0)|2:white_check_mark:|1:x:||220ms| +### :x: TestResults +``` +AcmeLibTests.AcmeLibTests + :white_check_mark: test_always_pass + :white_check_mark: test_always_skip + :x: test_always_fail +``` \ No newline at end of file diff --git a/__tests__/__snapshots__/dart-json.test.ts.snap b/__tests__/__snapshots__/dart-json.test.ts.snap index 847db6a..a499822 100644 --- a/__tests__/__snapshots__/dart-json.test.ts.snap +++ b/__tests__/__snapshots__/dart-json.test.ts.snap @@ -3,12 +3,12 @@ exports[`dart-json tests matches report snapshot 1`] = ` TestRunResult { "path": "fixtures/dart-json.json", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Test 1", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Passing test", @@ -19,11 +19,11 @@ TestRunResult { }, TestGroupResult { "name": "Test 1 Test 1.1", - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { + "error": { "details": "package:test_api expect -test\\\\main_test.dart 13:9 main... +test\\main_test.dart 13:9 main... ", "line": 13, "message": "Expected: <2> @@ -36,9 +36,9 @@ test\\\\main_test.dart 13:9 main... "time": 20, }, TestCaseResult { - "error": Object { + "error": { "details": "package:darttest/main.dart 2:3 throwError -test\\\\main_test.dart 17:9 main... +test\\main_test.dart 17:9 main... ", "line": 17, "message": "Exception: Some error", @@ -52,10 +52,10 @@ test\\\\main_test.dart 17:9 main... }, TestGroupResult { "name": "Test 2", - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { - "details": "test\\\\main_test.dart 24:7 main.. + "error": { + "details": "test\\main_test.dart 24:7 main.. ", "line": 24, "message": "Exception: Some error", @@ -72,12 +72,12 @@ test\\\\main_test.dart 17:9 main... "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { + "error": { "details": "dart:isolate _RawReceivePortImpl._handleMessage ", "line": 5, @@ -108,12 +108,12 @@ test\\\\main_test.dart 17:9 main... exports[`dart-json tests report from rrousselGit/provider test results matches snapshot 1`] = ` TestRunResult { "path": "fixtures/external/flutter/provider-test-results.json", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "valueListenableProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "rebuilds when value change", @@ -139,7 +139,7 @@ TestRunResult { "time": 22, }, TestCaseResult { - "error": Object { + "error": { "details": "══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════ The following TestFailure object was thrown running a test: Expected: <2> @@ -178,10 +178,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ListenableProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with MultiProvider", @@ -252,7 +252,7 @@ Unexpected number of calls }, TestGroupResult { "name": "ListenableProvider value constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "pass down key", @@ -269,7 +269,7 @@ Unexpected number of calls }, TestGroupResult { "name": "ListenableProvider stateful constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "called with context", @@ -295,10 +295,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "consumer", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "obtains value from Provider", @@ -321,7 +321,7 @@ Unexpected number of calls }, TestGroupResult { "name": "consumer2", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "obtains value from Provider", @@ -344,7 +344,7 @@ Unexpected number of calls }, TestGroupResult { "name": "consumer3", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "obtains value from Provider", @@ -367,7 +367,7 @@ Unexpected number of calls }, TestGroupResult { "name": "consumer4", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "obtains value from Provider", @@ -390,7 +390,7 @@ Unexpected number of calls }, TestGroupResult { "name": "consumer5", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "obtains value from Provider", @@ -413,7 +413,7 @@ Unexpected number of calls }, TestGroupResult { "name": "consumer6", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "obtains value from Provider", @@ -439,10 +439,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Use builder property, not child", @@ -453,7 +453,7 @@ Unexpected number of calls }, TestGroupResult { "name": "ChangeNotifierProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "value", @@ -515,10 +515,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ChangeNotifierProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "default", @@ -535,7 +535,7 @@ Unexpected number of calls }, TestGroupResult { "name": "ListenableProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "default", @@ -552,7 +552,7 @@ Unexpected number of calls }, TestGroupResult { "name": "Provider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "default", @@ -569,7 +569,7 @@ Unexpected number of calls }, TestGroupResult { "name": "ProxyProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "0", @@ -616,7 +616,7 @@ Unexpected number of calls }, TestGroupResult { "name": "MultiProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "with 1 ChangeNotifierProvider default", @@ -690,10 +690,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "MultiProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throw if providers is null", @@ -719,10 +719,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with MultiProvider", @@ -763,7 +763,7 @@ Unexpected number of calls }, TestGroupResult { "name": "StreamProvider()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "create and dispose stream with builder", @@ -783,10 +783,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "watch in layoutbuilder", @@ -827,7 +827,7 @@ Unexpected number of calls }, TestGroupResult { "name": "BuildContext", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "internal selected value is updated", @@ -985,10 +985,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ReassembleHandler", @@ -1014,10 +1014,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with MultiProvider", @@ -1076,7 +1076,7 @@ Unexpected number of calls }, TestGroupResult { "name": "FutureProvider()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "crashes if builder is null", @@ -1090,10 +1090,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with MultiProvider", @@ -1104,7 +1104,7 @@ Unexpected number of calls }, TestGroupResult { "name": "Provider.of", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws if T is dynamic", @@ -1139,7 +1139,7 @@ Unexpected number of calls }, TestGroupResult { "name": "Provider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws if the provided value is a Listenable/Stream", @@ -1177,10 +1177,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "regression test #377", @@ -1371,7 +1371,7 @@ Unexpected number of calls }, TestGroupResult { "name": "diagnostics", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "InheritedProvider.value", @@ -1406,7 +1406,7 @@ Unexpected number of calls }, TestGroupResult { "name": "InheritedProvider.value()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "markNeedsNotifyDependents during startListening is noop", @@ -1459,7 +1459,7 @@ Unexpected number of calls }, TestGroupResult { "name": "InheritedProvider()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "hasValue", @@ -1614,7 +1614,7 @@ Unexpected number of calls }, TestGroupResult { "name": "DeferredInheritedProvider.value()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "hasValue", @@ -1667,7 +1667,7 @@ Unexpected number of calls }, TestGroupResult { "name": "DeferredInheritedProvider()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "create can't call inherited widgets", @@ -1699,10 +1699,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ListenableProxyProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws if update is missing", @@ -1743,7 +1743,7 @@ Unexpected number of calls }, TestGroupResult { "name": "ListenableProxyProvider variants", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ListenableProxyProvider", @@ -1787,10 +1787,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "asserts that builder/selector are not null", @@ -1900,10 +1900,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "asserts", @@ -1935,10 +1935,10 @@ Unexpected number of calls "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ProxyProvider", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws if the provided value is a Listenable/Stream", @@ -2009,7 +2009,7 @@ Unexpected number of calls }, TestGroupResult { "name": "ProxyProvider variants", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ProxyProvider2", diff --git a/__tests__/__snapshots__/dotnet-trx.test.ts.snap b/__tests__/__snapshots__/dotnet-trx.test.ts.snap index 962392d..4244109 100644 --- a/__tests__/__snapshots__/dotnet-trx.test.ts.snap +++ b/__tests__/__snapshots__/dotnet-trx.test.ts.snap @@ -3,12 +3,12 @@ exports[`dotnet-trx tests matches report snapshot 1`] = ` TestRunResult { "path": "DotnetTests.XUnitTests", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Custom Name", @@ -16,10 +16,10 @@ TestRunResult { "time": 0.1371, }, TestCaseResult { - "error": Object { + "error": { "details": "System.DivideByZeroException : Attempted to divide by zero. - at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.Unit\\\\Calculator.cs:line 9 - at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 33", + at DotnetTests.Unit.Calculator.Div(Int32 a, Int32 b) in C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTests.Unit\\Calculator.cs:line 9 + at DotnetTests.XUnitTests.CalculatorTests.Exception_In_TargetTest() in C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTests.XUnitTests\\CalculatorTests.cs:line 33", "line": 9, "message": "System.DivideByZeroException : Attempted to divide by zero.", "path": "DotnetTests.Unit/Calculator.cs", @@ -29,9 +29,9 @@ TestRunResult { "time": 0.8377, }, TestCaseResult { - "error": Object { + "error": { "details": "System.Exception : Test - at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 39", + at DotnetTests.XUnitTests.CalculatorTests.Exception_In_Test() in C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTests.XUnitTests\\CalculatorTests.cs:line 39", "line": 39, "message": "System.Exception : Test", "path": "DotnetTests.XUnitTests/CalculatorTests.cs", @@ -41,11 +41,11 @@ TestRunResult { "time": 2.5175, }, TestCaseResult { - "error": Object { + "error": { "details": "Assert.Equal() Failure Expected: 3 Actual: 2 - at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 27", + at DotnetTests.XUnitTests.CalculatorTests.Failing_Test() in C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTests.XUnitTests\\CalculatorTests.cs:line 27", "line": 27, "message": "Assert.Equal() Failure Expected: 3 @@ -63,11 +63,11 @@ Actual: 2", "time": 0.0078, }, TestCaseResult { - "error": Object { + "error": { "details": "Assert.True() Failure Expected: True Actual: False - at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 59", + at DotnetTests.XUnitTests.CalculatorTests.Is_Even_Number(Int32 i) in C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTests.XUnitTests\\CalculatorTests.cs:line 59", "line": 59, "message": "Assert.True() Failure Expected: True @@ -91,11 +91,11 @@ Actual: False", "time": 0.0097, }, TestCaseResult { - "error": Object { + "error": { "details": "Assert.True() Failure Expected: True Actual: False - at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\dotnet\\\\DotnetTests.XUnitTests\\\\CalculatorTests.cs:line 67", + at DotnetTests.XUnitTests.CalculatorTests.Theory_With_Custom_Name(Int32 i) in C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\dotnet\\DotnetTests.XUnitTests\\CalculatorTests.cs:line 67", "line": 67, "message": "Assert.True() Failure Expected: True @@ -132,12 +132,12 @@ Actual: False", exports[`dotnet-trx tests report from FluentValidation test results matches snapshot 1`] = ` TestRunResult { "path": "FluentValidation.Tests", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_replace_default_errorcode_resolver", @@ -355,10 +355,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Benchmark", @@ -396,10 +396,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Finds_validators_for_types", @@ -419,10 +419,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Cascade_mode_can_be_set_after_validator_instantiated", @@ -658,10 +658,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_validate_using_validator_for_base_type", @@ -747,10 +747,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Options_should_only_apply_to_current_validator", @@ -776,10 +776,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_define_nested_rules_for_collection", @@ -799,10 +799,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Async_condition_should_work_with_child_collection", @@ -906,10 +906,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Async_condition_should_work_with_complex_property", @@ -1019,10 +1019,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Async_condition_executed_synchronosuly_with_asynchronous_collection_rule", @@ -1138,10 +1138,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "IsValidTests", @@ -1161,10 +1161,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Does_not_invoke_action_if_validation_success", @@ -1190,10 +1190,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Replaces_propertyvalue_placeholder", @@ -1237,10 +1237,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "New_Custom_Returns_single_failure", @@ -1308,10 +1308,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Empty_should_create_EmptyValidator", @@ -1499,139 +1499,139 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\" \\\\r \\\\t \\\\n\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: " \\r \\t \\n")", "result": "success", "time": 0.0247, }, TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\"\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: "")", "result": "success", "time": 0.0314, }, TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\"@someDomain.com\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: "@someDomain.com")", "result": "success", "time": 0.0248, }, TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\"@someDomain@abc.com\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: "@someDomain@abc.com")", "result": "success", "time": 0.0234, }, TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\"0\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: "0")", "result": "success", "time": 0.2222, }, TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\"someName\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: "someName")", "result": "success", "time": 0.023, }, TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\"someName@\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: "someName@")", "result": "success", "time": 0.022699999999999998, }, TestCaseResult { "error": undefined, - "name": "Fails_email_validation_aspnetcore_compatible(email: \\"someName@a@b.com\\")", + "name": "Fails_email_validation_aspnetcore_compatible(email: "someName@a@b.com")", "result": "success", "time": 0.022699999999999998, }, TestCaseResult { "error": undefined, - "name": "Invalid_email_addressex_regex(email: \\"\\")", + "name": "Invalid_email_addressex_regex(email: "")", "result": "success", "time": 0.3859, }, TestCaseResult { "error": undefined, - "name": "Invalid_email_addressex_regex(email: \\"first.last@test..co.uk\\")", + "name": "Invalid_email_addressex_regex(email: "first.last@test..co.uk")", "result": "success", "time": 0.0334, }, TestCaseResult { "error": undefined, - "name": "Invalid_email_addressex_regex(email: \\"testperso\\")", + "name": "Invalid_email_addressex_regex(email: "testperso")", "result": "success", "time": 0.0395, }, TestCaseResult { "error": undefined, - "name": "Invalid_email_addressex_regex(email: \\"thisisaverylongstringcodeplex.com\\")", + "name": "Invalid_email_addressex_regex(email: "thisisaverylongstringcodeplex.com")", "result": "success", "time": 0.0316, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\" @someDomain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: " @someDomain.com")", "result": "success", "time": 0.0173, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"!#$%&'*+-/=?^_\`|~@someDomain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "!#$%&'*+-/=?^_\`|~@someDomain.com")", "result": "success", "time": 0.0174, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"\\\\\\"firstName.lastName\\\\\\"@someDomain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "\\"firstName.lastName\\"@someDomain.com")", "result": "success", "time": 0.0167, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"1234@someDomain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "1234@someDomain.com")", "result": "success", "time": 0.0307, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"firstName.lastName@someDomain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "firstName.lastName@someDomain.com")", "result": "success", "time": 0.0191, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"someName@1234.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "someName@1234.com")", "result": "success", "time": 0.0158, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"someName@some_domain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "someName@some_domain.com")", "result": "success", "time": 0.0162, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"someName@some~domain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "someName@some~domain.com")", "result": "success", "time": 0.0166, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"someName@someDomain.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain.com")", "result": "success", "time": 0.0167, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_aspnetcore_compatible(email: \\"someName@someDomain￯.com\\")", + "name": "Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain￯.com")", "result": "success", "time": 0.0157, }, @@ -1643,73 +1643,73 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"__somename@example.com\\")", + "name": "Valid_email_addresses_regex(email: "__somename@example.com")", "result": "success", "time": 0.0219, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"!def!xyz%abc@example.com\\")", + "name": "Valid_email_addresses_regex(email: "!def!xyz%abc@example.com")", "result": "success", "time": 0.022, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"\\\\\\"Abc@def\\\\\\"@example.com\\")", + "name": "Valid_email_addresses_regex(email: "\\"Abc@def\\"@example.com")", "result": "success", "time": 0.0245, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"\\\\\\"Abc\\\\\\\\@def\\\\\\"@example.com\\")", + "name": "Valid_email_addresses_regex(email: "\\"Abc\\\\@def\\"@example.com")", "result": "success", "time": 0.026, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"\\\\\\"Fred Bloggs\\\\\\"@example.com\\")", + "name": "Valid_email_addresses_regex(email: "\\"Fred Bloggs\\"@example.com")", "result": "success", "time": 0.0258, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"\\\\\\"Joe\\\\\\\\Blow\\\\\\"@example.com\\")", + "name": "Valid_email_addresses_regex(email: "\\"Joe\\\\Blow\\"@example.com")", "result": "success", "time": 0.0244, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"$A12345@example.com\\")", + "name": "Valid_email_addresses_regex(email: "$A12345@example.com")", "result": "success", "time": 0.022600000000000002, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"customer/department=shipping@example.com\\")", + "name": "Valid_email_addresses_regex(email: "customer/department=shipping@example.com")", "result": "success", "time": 0.0234, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"first.last@test.co.uk\\")", + "name": "Valid_email_addresses_regex(email: "first.last@test.co.uk")", "result": "success", "time": 0.022600000000000002, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"testperson@gmail.com\\")", + "name": "Valid_email_addresses_regex(email: "testperson@gmail.com")", "result": "success", "time": 16.3384, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"TestPerson@gmail.com\\")", + "name": "Valid_email_addresses_regex(email: "TestPerson@gmail.com")", "result": "success", "time": 0.0805, }, TestCaseResult { "error": undefined, - "name": "Valid_email_addresses_regex(email: \\"testperson+label@gmail.com\\")", + "name": "Valid_email_addresses_regex(email: "testperson+label@gmail.com")", "result": "success", "time": 0.0275, }, @@ -1726,10 +1726,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Passes_for_ienumerable_that_doesnt_implement_ICollection", @@ -1791,10 +1791,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Flags_enum_invalid_when_using_outofrange_negative_value", @@ -1874,10 +1874,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Comparison_property_uses_custom_resolver", @@ -1945,10 +1945,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Min_and_max_properties_should_be_set", @@ -1992,10 +1992,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "To_and_from_properties_should_be_set", @@ -2117,10 +2117,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Should_extract_member_from_member_expression", @@ -2152,10 +2152,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Async_condition_should_work_with_child_collection", @@ -2367,10 +2367,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Comparison_property_uses_custom_resolver", @@ -2462,10 +2462,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Comparison_property_uses_custom_resolver", @@ -2551,10 +2551,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "To_and_from_properties_should_be_set", @@ -2670,10 +2670,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_use_custom_subclass_with_nongeneric_overload", @@ -2747,10 +2747,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Uses_inline_validator_to_build_rules", @@ -2764,10 +2764,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "All_languages_should_be_loaded", @@ -2836,19 +2836,19 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "Gets_translation_for_bosnian_latin_culture(cultureName: \\"bs-Latn-BA\\")", + "name": "Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn-BA")", "result": "success", "time": 0.011, }, TestCaseResult { "error": undefined, - "name": "Gets_translation_for_bosnian_latin_culture(cultureName: \\"bs-Latn\\")", + "name": "Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn")", "result": "success", "time": 0.0627, }, TestCaseResult { "error": undefined, - "name": "Gets_translation_for_bosnian_latin_culture(cultureName: \\"bs\\")", + "name": "Gets_translation_for_bosnian_latin_culture(cultureName: "bs")", "result": "success", "time": 0.661, }, @@ -2866,19 +2866,19 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "Gets_translation_for_serbian_culture(cultureName: \\"sr-Latn-RS\\")", + "name": "Gets_translation_for_serbian_culture(cultureName: "sr-Latn-RS")", "result": "success", "time": 0.01, }, TestCaseResult { "error": undefined, - "name": "Gets_translation_for_serbian_culture(cultureName: \\"sr-Latn\\")", + "name": "Gets_translation_for_serbian_culture(cultureName: "sr-Latn")", "result": "success", "time": 0.0484, }, TestCaseResult { "error": undefined, - "name": "Gets_translation_for_serbian_culture(cultureName: \\"sr\\")", + "name": "Gets_translation_for_serbian_culture(cultureName: "sr")", "result": "success", "time": 0.4456, }, @@ -2901,10 +2901,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Min_and_max_properties_should_be_set", @@ -3008,10 +3008,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Comparison_property_uses_custom_resolver", @@ -3097,10 +3097,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Comparison_property_uses_custom_resolver", @@ -3204,10 +3204,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Correctly_assigns_default_localized_error_message", @@ -3251,10 +3251,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Uses_localized_name", @@ -3274,10 +3274,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ComplexPropertyGet", @@ -3339,10 +3339,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Adds_argument_and_custom_arguments", @@ -3410,10 +3410,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_use_child_validator_at_model_level", @@ -3433,10 +3433,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Resolves_nested_properties", @@ -3462,10 +3462,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Fails_for_array", @@ -3533,10 +3533,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Comparison_property_uses_custom_resolver", @@ -3610,10 +3610,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Fails_when_nullable_value_type_is_null", @@ -3651,10 +3651,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Not_null_validator_should_not_crash_with_non_nullable_value_type", @@ -3692,10 +3692,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "OnFailure_called_for_each_failed_rule", @@ -3763,10 +3763,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Should_fail_when_predicate_returns_false", @@ -3804,10 +3804,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "AddIndexer_throws_when_nothing_added", @@ -3857,10 +3857,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_access_expression_in_message", @@ -3958,10 +3958,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Adding_a_validator_should_return_builder", @@ -4143,10 +4143,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Async_inside_dependent_rules", @@ -4238,10 +4238,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Applies_multiple_rulesets_to_rule", @@ -4375,10 +4375,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Scale_precision_should_be_valid", @@ -4422,10 +4422,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Async_condition_can_be_used_inside_ruleset", @@ -4685,10 +4685,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Should_validate_property_value_without_instance", @@ -4702,10 +4702,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "IsValidTests_CaseInsensitive_CaseCorrect", @@ -4773,10 +4773,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Add_AddsItem", @@ -4802,10 +4802,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Transforms_collection_element", @@ -4837,10 +4837,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_Provide_conditional_severity", @@ -4890,10 +4890,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_Provide_state_for_item_in_collection", @@ -4925,10 +4925,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Does_not_throw_when_valid", @@ -5020,10 +5020,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_serialize_failure", @@ -5079,10 +5079,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Does_not_throw_when_rule_declared_without_property", @@ -5120,10 +5120,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Can_use_property_with_include", @@ -5191,10 +5191,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Allows_only_one_failure_to_match", @@ -5353,7 +5353,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: \\"\\")", + "name": "ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "")", "result": "success", "time": 0.6089, }, @@ -5389,13 +5389,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: \\"\\")", + "name": "ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "")", "result": "success", "time": 1.7937, }, TestCaseResult { "error": undefined, - "name": "ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: \\"cardNumber\\")", + "name": "ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "cardNumber")", "result": "success", "time": 0.6412, }, @@ -5407,7 +5407,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 42, cardNumber: \\"cardNumber\\")", + "name": "ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 42, cardNumber: "cardNumber")", "result": "success", "time": 0.8127, }, @@ -5521,13 +5521,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: \\"\\")", + "name": "ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "")", "result": "success", "time": 0.5719, }, TestCaseResult { "error": undefined, - "name": "ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: \\"cardNumber\\")", + "name": "ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "cardNumber")", "result": "success", "time": 0.5838, }, @@ -5539,13 +5539,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: \\"cardNumber\\")", + "name": "ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "cardNumber")", "result": "success", "time": 0.897, }, TestCaseResult { "error": undefined, - "name": "ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: \\"\\")", + "name": "ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "")", "result": "success", "time": 0.6807, }, @@ -5599,25 +5599,25 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "Unexpected_message_check(withoutErrMsg: \\"bar\\", errMessages: [\\"bar\\"])", + "name": "Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["bar"])", "result": "success", "time": 0.1548, }, TestCaseResult { "error": undefined, - "name": "Unexpected_message_check(withoutErrMsg: \\"bar\\", errMessages: [\\"foo\\", \\"bar\\"])", + "name": "Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo", "bar"])", "result": "success", "time": 0.1797, }, TestCaseResult { "error": undefined, - "name": "Unexpected_message_check(withoutErrMsg: \\"bar\\", errMessages: [\\"foo\\"])", + "name": "Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo"])", "result": "success", "time": 0.3297, }, TestCaseResult { "error": undefined, - "name": "Unexpected_message_check(withoutErrMsg: \\"bar\\", errMessages: [])", + "name": "Unexpected_message_check(withoutErrMsg: "bar", errMessages: [])", "result": "success", "time": 0.7345999999999999, }, @@ -5647,12 +5647,12 @@ TestRunResult { exports[`dotnet-trx tests report from SilentNotes test results matches snapshot 1`] = ` TestRunResult { "path": "VanillaCloudStorageClientTest", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "AreEqualWorksWithDifferentPassword", @@ -5696,10 +5696,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "FileLifecycleWorks", @@ -5737,10 +5737,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "FileLifecycleWorks", @@ -5790,10 +5790,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ChoosesCorrectUrlForGmxComEmail", @@ -5813,10 +5813,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "FileLifecycleWorks", @@ -5848,10 +5848,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "FileLifecycleWorks", @@ -5883,10 +5883,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "FileLifecycleWorks", @@ -5924,10 +5924,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "AreEqualWorksWithNullDate", @@ -5989,10 +5989,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ParsesAllErrorCodesCorrectly", @@ -6018,10 +6018,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "BuildAuthorizationRequestUrlEscapesParameters", @@ -6083,10 +6083,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "BuildOAuth2AuthorizationRequestUrlWorks", @@ -6124,10 +6124,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "AreEqualsWorksCorrectly", @@ -6177,10 +6177,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "DecryptAfterDesrializationCanReadAllPropertiesBack", diff --git a/__tests__/__snapshots__/java-junit.test.ts.snap b/__tests__/__snapshots__/java-junit.test.ts.snap index 73c5f80..041f380 100644 --- a/__tests__/__snapshots__/java-junit.test.ts.snap +++ b/__tests__/__snapshots__/java-junit.test.ts.snap @@ -3,12 +3,12 @@ exports[`java-junit tests report from apache/pulsar single suite test results matches snapshot 1`] = ` TestRunResult { "path": "fixtures/external/java/TEST-org.apache.pulsar.AddMissingPatchVersionTest.xml", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testVersionStrings", @@ -16,7 +16,7 @@ TestRunResult { "time": 99, }, TestCaseResult { - "error": Object { + "error": { "details": " java.lang.AssertionError: expected [1.2.1] but found [1.2.0] at org.testng.Assert.fail(Assert.java:99) @@ -62,12 +62,12 @@ at java.lang.Thread.run(Thread.java:748) exports[`java-junit tests report from apache/pulsar test results matches snapshot 1`] = ` TestRunResult { "path": "fixtures/external/java/pulsar-test-report.xml", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testVersionStrings", @@ -75,7 +75,7 @@ TestRunResult { "time": 99, }, TestCaseResult { - "error": Object { + "error": { "details": " java.lang.AssertionError: expected [1.2.1] but found [1.2.0] at org.testng.Assert.fail(Assert.java:99) @@ -114,10 +114,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 116, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testMainRunBookieNoConfig", @@ -179,10 +179,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 591.0000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testGetWorkerService", @@ -202,10 +202,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 96, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testOwnedNamespaces", @@ -237,10 +237,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 9184.999999999998, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testOffloadPoliciesAppliedApi", @@ -290,10 +290,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 18584.000000000004, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "httpEndpoint", @@ -313,10 +313,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1389, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAuthentication", @@ -336,10 +336,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 185, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "simple", @@ -353,10 +353,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2384, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "crossColoLookup", @@ -388,10 +388,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1930, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCreateNamespaceWithDefaultBundles", @@ -411,10 +411,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 33168, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testGetAllPartitions", @@ -434,10 +434,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 32357, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSplitMapWithRefreshedStatMap", @@ -505,10 +505,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 75271.99999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testUnloadNotLoadedNamespace", @@ -528,10 +528,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 13704, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testOwnershipForCurrentServer", @@ -545,10 +545,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 15709, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testGetOwnedServiceUnits", @@ -604,10 +604,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 15749.999999999998, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testLoadProtocolHandler", @@ -633,10 +633,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 7398.000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testWrapper", @@ -650,10 +650,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 15, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testStart", @@ -697,10 +697,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 946.0000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testMessagePublishBufferThrottleEnable", @@ -726,10 +726,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 13830, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testResumptionAfterBacklogRelaxed", @@ -869,10 +869,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 40154, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testReleaseOwnershipWithZookeeperDisconnectedBeforeOwnershipNodeDeleted", @@ -928,10 +928,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 114278, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testJvmDirectMemoryUsedMetric", @@ -951,10 +951,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 49, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAckStatsOnPartitionedTopicForExclusiveSubscription", @@ -980,10 +980,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 21163.999999999996, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testManagedCursorMetrics", @@ -997,10 +997,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 281, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testManagedLedgerMetrics", @@ -1014,10 +1014,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 285, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPerTopicStats", @@ -1115,10 +1115,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 83145.00000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testConsumersAfterMarkDelete", @@ -1138,10 +1138,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1806, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSimpleAggregation", @@ -1155,10 +1155,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 40, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSendAndReceiveNamespaceEvents", @@ -1172,10 +1172,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1043, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "noSortedTest", @@ -1195,10 +1195,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 29646, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCloseReleaseAllEntries", @@ -1224,10 +1224,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 28, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAbortOnTopic", @@ -1259,10 +1259,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 93, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testOpenReaderOnNonExistentTxn", @@ -1312,10 +1312,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 80.99999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCloseShouldReleaseBuffer", @@ -1329,10 +1329,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 14, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testTransactionBufferLowWaterMark", @@ -1352,10 +1352,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 37577, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "commitTxnTest", @@ -1381,10 +1381,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 49067.00000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testClientStart", @@ -1410,10 +1410,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 95, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testTransactionMetaStoreAssignAndFailover", @@ -1427,10 +1427,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1151, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "txnAckTestNoBatchAndSharedSubMemoryDeleteTest", @@ -1456,10 +1456,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 57293.00000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRestException", @@ -1485,10 +1485,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 37.00000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testTlsAuthDisallowInsecure", @@ -1550,10 +1550,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 27441.999999999996, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAuthorizedUserAsOriginalPrincipal", @@ -1585,10 +1585,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 8297, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSerializationEmpty", @@ -1620,10 +1620,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testBatchMessageIndexAckForExclusiveSubscription", @@ -1655,10 +1655,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 13732, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testBatchMessageIndexAckForSharedSubscription", @@ -1696,10 +1696,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 43856, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testDisconnectClientWithoutClosingConnection", @@ -1797,10 +1797,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 148203, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCompactedOutMessages", @@ -1814,10 +1814,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1385, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAckResponse", @@ -1831,10 +1831,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 549, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testReadCompactNonPersistentExclusive", @@ -1866,10 +1866,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 12164, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testConsumerDedup", @@ -1919,10 +1919,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 3522.0000000000005, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testConsumerUnsubscribeReference", @@ -1936,10 +1936,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 129, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testTlsClientAuthOverHTTPProtocol", @@ -1965,10 +1965,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 23461, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testTlsClientAuthOverHTTPProtocol", @@ -1994,10 +1994,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 7675.000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testValidate", @@ -2011,10 +2011,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 183, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testChecksumCompatibilityInMixedVersionBrokerCluster", @@ -2040,10 +2040,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 46690, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPublishWithFailure", @@ -2105,10 +2105,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 73214, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testWithoutBatches", @@ -2128,10 +2128,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 5484.999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testReadMessageWithBatchingWithMessageInclusive", @@ -2187,10 +2187,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 35143, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testNegativeAcks", @@ -2390,10 +2390,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 10661.999999999998, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testStartEmptyPatternConsumer", @@ -2467,10 +2467,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 62620, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSharedAckedNormalTopic", @@ -2508,10 +2508,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 33504, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testMultiHostUrlRetrySuccess", @@ -2537,10 +2537,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 15314, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSerializationAndDeserialization", @@ -2554,10 +2554,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 10, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "createTopicDeleteTopicCreateTopic", @@ -2571,10 +2571,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1937, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCheckSequenceId", @@ -2612,10 +2612,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 17976, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCreateConsumerOnNotExistsTopic", @@ -2635,10 +2635,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 4053, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSingleTopicConsumerNoBatchFullName", @@ -2676,10 +2676,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 13659, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testTopicAutoUpdatePartitions", @@ -2789,10 +2789,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 133445.00000000003, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCheckUnAcknowledgedMessageTimer", @@ -2842,10 +2842,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 43828, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "zeroQueueSizeSharedSubscription", @@ -2937,10 +2937,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 15712, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testGetProperties", @@ -2954,10 +2954,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 316, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testChecksumSendCommand", @@ -2971,10 +2971,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCompressDecompress", @@ -3018,10 +3018,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 223.00000000000003, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCompressDecompress", @@ -3299,10 +3299,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 737.0000000000005, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCrc32cHardware", @@ -3346,10 +3346,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 5403.000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testLoadReportSerialization", @@ -3381,10 +3381,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1530, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testInvalidMetadata", @@ -3404,10 +3404,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 161, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testIncludes", @@ -3451,10 +3451,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 64, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testConstructor", @@ -3492,10 +3492,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 98.99999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "namespace", @@ -3515,10 +3515,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 207, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testOptionalSettingPresent", @@ -3550,10 +3550,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 48, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testShortTopicName", @@ -3585,10 +3585,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 529, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testEmptyServiceUriString", @@ -3722,10 +3722,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 237.00000000000006, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAutoFailoverPolicyData", @@ -3739,10 +3739,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 15, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAutoFailoverPolicyType", @@ -3756,10 +3756,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 19, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testInvalidTopicType", @@ -3803,10 +3803,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 64, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testBacklogQuotaIdentity", @@ -3820,10 +3820,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 12, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "simple", @@ -3837,10 +3837,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 9, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testConsumerStats", @@ -3854,10 +3854,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 8, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testDecodeFailed", @@ -3877,10 +3877,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 948, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testLocalPolices", @@ -3894,10 +3894,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 48, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testNamespaceIsolationData", @@ -3911,10 +3911,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 76, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSerialization", @@ -3928,10 +3928,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 45, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testGcsConfiguration", @@ -3975,10 +3975,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 216, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPartitionedTopicStats", @@ -3992,10 +3992,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 12, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPersistencePolicies", @@ -4009,10 +4009,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 19, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPersistentOfflineTopicStats", @@ -4026,10 +4026,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 29, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPersistentTopicStatsAggregation", @@ -4049,10 +4049,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 51, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "propertyAdmin", @@ -4084,10 +4084,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1386, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPublisherStats", @@ -4107,10 +4107,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 37, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testReplicatorStatsAdd", @@ -4130,10 +4130,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testResourceQuotaDefault", @@ -4153,10 +4153,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 45, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRetentionPolices", @@ -4170,10 +4170,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 8, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAutoFailoverPolicyFactory", @@ -4187,10 +4187,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 22, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testMinAvailablePolicty", @@ -4204,10 +4204,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testBrokerAssignment", @@ -4257,10 +4257,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 265, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testFindBrokers", @@ -4310,10 +4310,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 309.00000000000006, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testEncoder", @@ -4333,10 +4333,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 4999.000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSkipBrokerEntryMetadata", @@ -4386,10 +4386,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2812.0000000000005, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSnapshot", @@ -4433,10 +4433,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 3232.9999999999995, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testChannelRead", @@ -4450,10 +4450,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 3690, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testInvokeJVMInternals", @@ -4467,10 +4467,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 82, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testMap", @@ -4484,10 +4484,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 242, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testFileNotModified", @@ -4531,10 +4531,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 6161.000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testMultipleTryAcquire", @@ -4608,10 +4608,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 7199.999999999998, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testCreateInstanceNoNoArgConstructor", @@ -4691,10 +4691,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 172, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testParseRelativeTime", @@ -4708,10 +4708,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 39, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testResetWords", @@ -4731,10 +4731,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 13.000000000000002, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRecycle", @@ -4754,10 +4754,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 63, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRehashingWithDeletes", @@ -4843,10 +4843,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 28351.000000000004, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "concurrentInsertionsAndReads", @@ -4944,10 +4944,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1519.0000000000002, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRemove", @@ -5027,10 +5027,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 9241, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "concurrentInsertions", @@ -5104,10 +5104,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 7114.999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAddForDifferentKey", @@ -5193,10 +5193,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1355.9999999999998, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "concurrentInsertions", @@ -5258,10 +5258,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 342, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testUpdateObject", @@ -5281,10 +5281,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 64, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "removeTest", @@ -5328,10 +5328,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 350, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testItems", @@ -5429,10 +5429,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 3092.9999999999995, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testQueue", @@ -5458,10 +5458,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 238, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "toCompletableFuture_shouldCompleteExceptionally_channelFutureCompletedAfter", @@ -5499,10 +5499,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1549.0000000000002, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRedirectUrlWithServerStarted", @@ -5516,10 +5516,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 4904, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAuthorizationWithAnonymousUser", @@ -5539,10 +5539,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 27527, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPulsarFunctionState", @@ -5568,10 +5568,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 42238, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testFunctionsCreation", @@ -5585,10 +5585,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 12012, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAuthorization", @@ -5602,10 +5602,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 30213, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "replayableProxyContentProviderTest", @@ -5619,10 +5619,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 474, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAuthenticatedProxyAsNonAdmin", @@ -5636,10 +5636,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2159, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testFunctionWorkerRedirect", @@ -5653,10 +5653,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 10, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test", @@ -5670,10 +5670,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 125, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testTlsSyncProducerAndConsumer", @@ -5687,10 +5687,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2279, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAuthentication", @@ -5704,10 +5704,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 16696, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testInboundConnection", @@ -5721,10 +5721,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1792, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testSimpleProduceAndConsume", @@ -5738,10 +5738,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 511, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testForwardAuthData", @@ -5755,10 +5755,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 31924, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testProxyToEndsInSlash", @@ -5826,10 +5826,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1660, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testProducerFailed", @@ -5855,10 +5855,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 6701.000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPartitions", @@ -5884,10 +5884,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 7220.000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testLookup", @@ -5901,10 +5901,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2568, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRegexSubscription", @@ -5942,10 +5942,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1345.9999999999998, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testIncorrectRoles", @@ -5959,10 +5959,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 10403, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testChangeLogLevel", @@ -5988,10 +5988,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 533, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testPartitions", @@ -6035,10 +6035,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2946.9999999999995, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testProducer", @@ -6058,10 +6058,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 414.00000000000006, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testServiceStartup", @@ -6075,10 +6075,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 4, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testProxyAuthorization", @@ -6092,10 +6092,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2128, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "tlsCiphersAndProtocols", @@ -6181,10 +6181,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 32897, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testDiscoveryService", @@ -6198,10 +6198,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 2045, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testAuthWithRandoCert", @@ -6227,10 +6227,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 8235, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testUnauthenticatedProxy", @@ -6250,10 +6250,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 113.99999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test", @@ -6267,10 +6267,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 29041, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testIsUsingAvroSchemaParser", @@ -6296,10 +6296,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 30859, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testConsumerCompatibilityCheckCanReadLastTest", @@ -6445,10 +6445,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 107437.00000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testServiceException", @@ -6468,10 +6468,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 40751.99999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "shouldFailIfEnumParameterIsMissing", @@ -6515,10 +6515,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 23, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod", @@ -6556,10 +6556,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 36.00000000000001, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "shouldCallSetupBeforeRetrying", @@ -6597,10 +6597,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 27, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "shouldCallSetupOnce1", @@ -6626,10 +6626,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testHelp", @@ -6649,10 +6649,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 17, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testBooleanFormat", @@ -6684,10 +6684,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 49.99999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testLists", @@ -6731,10 +6731,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 59, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "unauthenticatedSocketTest", @@ -6766,10 +6766,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 28904.000000000004, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test", @@ -6783,10 +6783,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 1263, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "configTest", @@ -6806,10 +6806,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 8943, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "socketTest", @@ -6823,10 +6823,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 10821, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "socketTest", @@ -6840,10 +6840,10 @@ at java.lang.Thread.run(Thread.java:748) "totalTime": 7280, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "anonymousSocketTest", diff --git a/__tests__/__snapshots__/jest-junit.test.ts.snap b/__tests__/__snapshots__/jest-junit.test.ts.snap index 3a04722..f29b5c8 100644 --- a/__tests__/__snapshots__/jest-junit.test.ts.snap +++ b/__tests__/__snapshots__/jest-junit.test.ts.snap @@ -1,14 +1,40 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`jest-junit tests report from #235 testing react components named 1`] = ` +TestRunResult { + "path": "fixtures/external/jest/jest-react-component-test-results.xml", + "suites": [ + TestSuiteResult { + "groups": [ + TestGroupResult { + "name": "", + "tests": [ + TestCaseResult { + "error": undefined, + "name": " should render properly", + "result": "success", + "time": 704, + }, + ], + }, + ], + "name": "\\", + "totalTime": 798, + }, + ], + "totalTime": 1000, +} +`; + exports[`jest-junit tests report from ./reports/jest test results matches snapshot 1`] = ` TestRunResult { "path": "fixtures/jest-junit.xml", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Test 1", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Passing test", @@ -19,18 +45,18 @@ TestRunResult { }, TestGroupResult { "name": "Test 1 › Test 1.1", - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { + "error": { "details": "Error: expect(received).toBeTruthy() Received: false - at Object. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\__tests__\\\\main.test.js:10:21) - at Object.asyncJestTest (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmineAsyncInstall.js:106:37) - at C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:45:12 + at Object. (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\__tests__\\main.test.js:10:21) + at Object.asyncJestTest (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmineAsyncInstall.js:106:37) + at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:45:12 at new Promise () - at mapper (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:28:19) - at C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:75:41 + at mapper (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:28:19) + at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:75:41 at processTicksAndRejections (internal/process/task_queues.js:97:5)", "line": 10, "path": "__tests__/main.test.js", @@ -40,15 +66,15 @@ Received: false "time": 2, }, TestCaseResult { - "error": Object { + "error": { "details": "Error: Some error - at Object.throwError (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\lib\\\\main.js:2:9) - at Object. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\__tests__\\\\main.test.js:14:11) - at Object.asyncJestTest (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmineAsyncInstall.js:106:37) - at C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:45:12 + at Object.throwError (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\lib\\main.js:2:9) + at Object. (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\__tests__\\main.test.js:14:11) + at Object.asyncJestTest (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmineAsyncInstall.js:106:37) + at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:45:12 at new Promise () - at mapper (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:28:19) - at C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:75:41 + at mapper (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:28:19) + at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:75:41 at processTicksAndRejections (internal/process/task_queues.js:97:5)", "line": 2, "path": "lib/main.js", @@ -61,16 +87,16 @@ Received: false }, TestGroupResult { "name": "Test 2", - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { + "error": { "details": "Error: Some error - at Object. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\__tests__\\\\main.test.js:21:11) - at Object.asyncJestTest (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmineAsyncInstall.js:106:37) - at C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:45:12 + at Object. (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\__tests__\\main.test.js:21:11) + at Object.asyncJestTest (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmineAsyncInstall.js:106:37) + at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:45:12 at new Promise () - at mapper (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:28:19) - at C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\queueRunner.js:75:41 + at mapper (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:28:19) + at C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\queueRunner.js:75:41 at processTicksAndRejections (internal/process/task_queues.js:97:5)", "line": 21, "path": "__tests__/main.test.js", @@ -82,30 +108,30 @@ Received: false ], }, ], - "name": "__tests__\\\\main.test.js", + "name": "__tests__\\main.test.js", "totalTime": 486, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { + "error": { "details": ": Timeout - Async callback was not invoked within the 1 ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 1 ms timeout specified by jest.setTimeout.Error: - at new Spec (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmine\\\\Spec.js:116:22) - at new Spec (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\setup_jest_globals.js:78:9) - at specFactory (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmine\\\\Env.js:523:24) - at Env.it (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmine\\\\Env.js:592:24) - at Env.it (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmineAsyncInstall.js:134:23) - at it (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\jasmine\\\\jasmineLight.js:100:21) - at Object. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\__tests__\\\\second.test.js:1:34) - at Runtime._execModule (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-runtime\\\\build\\\\index.js:1245:24) - at Runtime._loadModule (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-runtime\\\\build\\\\index.js:844:12) - at Runtime.requireModule (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-runtime\\\\build\\\\index.js:694:10) - at jasmine2 (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-jasmine2\\\\build\\\\index.js:230:13) - at runTestInternal (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-runner\\\\build\\\\runTest.js:380:22) - at runTest (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-check\\\\reports\\\\jest\\\\node_modules\\\\jest-runner\\\\build\\\\runTest.js:472:34)", + at new Spec (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmine\\Spec.js:116:22) + at new Spec (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\setup_jest_globals.js:78:9) + at specFactory (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmine\\Env.js:523:24) + at Env.it (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmine\\Env.js:592:24) + at Env.it (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmineAsyncInstall.js:134:23) + at it (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\jasmine\\jasmineLight.js:100:21) + at Object. (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\__tests__\\second.test.js:1:34) + at Runtime._execModule (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-runtime\\build\\index.js:1245:24) + at Runtime._loadModule (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-runtime\\build\\index.js:844:12) + at Runtime.requireModule (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-runtime\\build\\index.js:694:10) + at jasmine2 (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-jasmine2\\build\\index.js:230:13) + at runTestInternal (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-runner\\build\\runTest.js:380:22) + at runTest (C:\\Users\\Michal\\Workspace\\dorny\\test-check\\reports\\jest\\node_modules\\jest-runner\\build\\runTest.js:472:34)", "line": 1, "path": "__tests__/second.test.js", }, @@ -122,7 +148,7 @@ Received: false ], }, ], - "name": "__tests__\\\\second.test.js", + "name": "__tests__\\second.test.js", "totalTime": 82, }, ], @@ -133,12 +159,12 @@ Received: false exports[`jest-junit tests report from facebook/jest test results matches snapshot 1`] = ` TestRunResult { "path": "fixtures/external/jest/jest-test-results.xml", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "picks a name based on the rootDir", @@ -173,7 +199,7 @@ TestRunResult { }, TestGroupResult { "name": "rootDir", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws if the options is missing a rootDir property", @@ -184,7 +210,7 @@ TestRunResult { }, TestGroupResult { "name": "automock", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "falsy automock is not overwritten", @@ -195,7 +221,7 @@ TestRunResult { }, TestGroupResult { "name": "collectCoverageOnlyFrom", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "normalizes all paths relative to rootDir", @@ -218,7 +244,7 @@ TestRunResult { }, TestGroupResult { "name": "collectCoverageFrom", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "substitutes tokens", @@ -229,7 +255,7 @@ TestRunResult { }, TestGroupResult { "name": "findRelatedTests", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "it generates --coverageCoverageFrom patterns when needed", @@ -240,7 +266,7 @@ TestRunResult { }, TestGroupResult { "name": "roots", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "normalizes all paths relative to rootDir", @@ -263,7 +289,7 @@ TestRunResult { }, TestGroupResult { "name": "transform", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "normalizes the path", @@ -280,7 +306,7 @@ TestRunResult { }, TestGroupResult { "name": "haste", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "normalizes the path for hasteImplModulePath", @@ -291,7 +317,7 @@ TestRunResult { }, TestGroupResult { "name": "setupFilesAfterEnv", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "normalizes the path according to rootDir", @@ -314,7 +340,7 @@ TestRunResult { }, TestGroupResult { "name": "setupTestFrameworkScriptFile", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "logs a deprecation warning when \`setupTestFrameworkScriptFile\` is used", @@ -331,7 +357,7 @@ TestRunResult { }, TestGroupResult { "name": "coveragePathIgnorePatterns", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not normalize paths relative to rootDir", @@ -354,7 +380,7 @@ TestRunResult { }, TestGroupResult { "name": "watchPathIgnorePatterns", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not normalize paths relative to rootDir", @@ -377,7 +403,7 @@ TestRunResult { }, TestGroupResult { "name": "testPathIgnorePatterns", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not normalize paths relative to rootDir", @@ -400,7 +426,7 @@ TestRunResult { }, TestGroupResult { "name": "modulePathIgnorePatterns", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not normalize paths relative to rootDir", @@ -423,7 +449,7 @@ TestRunResult { }, TestGroupResult { "name": "testRunner", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to Circus", @@ -446,7 +472,7 @@ TestRunResult { }, TestGroupResult { "name": "coverageDirectory", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to /coverage", @@ -457,7 +483,7 @@ TestRunResult { }, TestGroupResult { "name": "testEnvironment", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resolves to an environment and prefers jest-environment-\`name\`", @@ -480,7 +506,7 @@ TestRunResult { }, TestGroupResult { "name": "babel-jest", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "correctly identifies and uses babel-jest", @@ -497,7 +523,7 @@ TestRunResult { }, TestGroupResult { "name": "Upgrade help", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "logs a warning when \`scriptPreprocessor\` and/or \`preprocessorIgnorePatterns\` are used", @@ -508,7 +534,7 @@ TestRunResult { }, TestGroupResult { "name": "testRegex", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testRegex empty string is mapped to empty array", @@ -531,7 +557,7 @@ TestRunResult { }, TestGroupResult { "name": "testMatch", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testMatch default not applied if testRegex is set", @@ -560,7 +586,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleDirectories", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to node_modules", @@ -577,7 +603,7 @@ TestRunResult { }, TestGroupResult { "name": "preset", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws when preset not found", @@ -586,7 +612,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "throws when module was found but no \\"jest-preset.js\\" or \\"jest-preset.json\\" files", + "name": "throws when module was found but no "jest-preset.js" or "jest-preset.json" files", "result": "success", "time": 1, }, @@ -610,7 +636,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "works with \\"react-native\\"", + "name": "works with "react-native"", "result": "success", "time": 3, }, @@ -648,7 +674,7 @@ TestRunResult { }, TestGroupResult { "name": "preset with globals", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should merge the globals preset correctly", @@ -659,7 +685,7 @@ TestRunResult { }, TestGroupResult { "name": "preset without setupFiles", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should normalize setupFiles correctly", @@ -670,7 +696,7 @@ TestRunResult { }, TestGroupResult { "name": "preset without setupFilesAfterEnv", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should normalize setupFilesAfterEnv correctly", @@ -681,7 +707,7 @@ TestRunResult { }, TestGroupResult { "name": "runner", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to \`jest-runner\`", @@ -710,7 +736,7 @@ TestRunResult { }, TestGroupResult { "name": "watchPlugins", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to undefined", @@ -745,7 +771,7 @@ TestRunResult { }, TestGroupResult { "name": "testPathPattern", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to empty", @@ -768,7 +794,7 @@ TestRunResult { }, TestGroupResult { "name": "testPathPattern --testPathPattern", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses --testPathPattern if set", @@ -791,7 +817,7 @@ TestRunResult { }, TestGroupResult { "name": "testPathPattern --testPathPattern posix", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not escape the pattern", @@ -802,10 +828,10 @@ TestRunResult { }, TestGroupResult { "name": "testPathPattern --testPathPattern win32", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "preserves any use of \\"\\\\\\"", + "name": "preserves any use of "\\"", "result": "success", "time": 1, }, @@ -831,7 +857,7 @@ TestRunResult { }, TestGroupResult { "name": "testPathPattern ", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses if set", @@ -854,7 +880,7 @@ TestRunResult { }, TestGroupResult { "name": "testPathPattern posix", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not escape the pattern", @@ -865,10 +891,10 @@ TestRunResult { }, TestGroupResult { "name": "testPathPattern win32", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "preserves any use of \\"\\\\\\"", + "name": "preserves any use of "\\"", "result": "success", "time": 15, }, @@ -894,7 +920,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleFileExtensions", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to something useful", @@ -917,7 +943,7 @@ TestRunResult { }, TestGroupResult { "name": "cwd", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is set to process.cwd", @@ -934,7 +960,7 @@ TestRunResult { }, TestGroupResult { "name": "Defaults", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be accepted by normalize", @@ -945,7 +971,7 @@ TestRunResult { }, TestGroupResult { "name": "displayName", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw an error when displayName is is an empty object", @@ -1004,7 +1030,7 @@ TestRunResult { }, TestGroupResult { "name": "testTimeout", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return timeout value if defined", @@ -1021,7 +1047,7 @@ TestRunResult { }, TestGroupResult { "name": "extensionsToTreatAsEsm", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass valid config through", @@ -1059,10 +1085,10 @@ TestRunResult { "totalTime": 798, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Repl cli", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs without errors", @@ -1076,10 +1102,10 @@ TestRunResult { "totalTime": 1172, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "chalk", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "level 0", @@ -1108,7 +1134,7 @@ TestRunResult { }, TestGroupResult { "name": "matcher error toMatchInlineSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Expected properties must be an object (non-null) without snapshot", @@ -1137,7 +1163,7 @@ TestRunResult { }, TestGroupResult { "name": "matcher error toMatchSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Expected properties must be an object (non-null)", @@ -1166,7 +1192,7 @@ TestRunResult { }, TestGroupResult { "name": "matcher error toMatchSnapshot received value must be an object", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(non-null)", @@ -1183,7 +1209,7 @@ TestRunResult { }, TestGroupResult { "name": "matcher error toThrowErrorMatchingInlineSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Inline snapshot must be a string", @@ -1200,7 +1226,7 @@ TestRunResult { }, TestGroupResult { "name": "matcher error toThrowErrorMatchingSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Received value must be a function", @@ -1217,7 +1243,7 @@ TestRunResult { }, TestGroupResult { "name": "other error toThrowErrorMatchingSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Received function did not throw", @@ -1228,7 +1254,7 @@ TestRunResult { }, TestGroupResult { "name": "pass false toMatchInlineSnapshot with properties equals false", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "with snapshot", @@ -1245,7 +1271,7 @@ TestRunResult { }, TestGroupResult { "name": "pass false toMatchInlineSnapshot with properties", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "equals true", @@ -1256,7 +1282,7 @@ TestRunResult { }, TestGroupResult { "name": "pass false toMatchSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "New snapshot was not written (multi line)", @@ -1273,7 +1299,7 @@ TestRunResult { }, TestGroupResult { "name": "pass false toMatchSnapshot with properties equals false", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isLineDiffable false", @@ -1290,7 +1316,7 @@ TestRunResult { }, TestGroupResult { "name": "pass false toMatchSnapshot with properties", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "equals true", @@ -1301,7 +1327,7 @@ TestRunResult { }, TestGroupResult { "name": "pass false toThrowErrorMatchingInlineSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "with snapshot", @@ -1312,7 +1338,7 @@ TestRunResult { }, TestGroupResult { "name": "pass true toMatchSnapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "without properties", @@ -1323,7 +1349,7 @@ TestRunResult { }, TestGroupResult { "name": "printPropertiesAndReceived", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "omit missing properties", @@ -1334,7 +1360,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived backtick", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "single line expected and received", @@ -1345,7 +1371,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived empty string", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "expected and received single line", @@ -1362,7 +1388,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived escape", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "double quote marks in string", @@ -1391,7 +1417,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived expand", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "false", @@ -1408,7 +1434,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fallback to line diff", @@ -1437,7 +1463,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived has no common after clean up chaff", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "array", @@ -1454,7 +1480,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived MAX_DIFF_STRING_LENGTH unquoted", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "both are less", @@ -1477,7 +1503,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived MAX_DIFF_STRING_LENGTH quoted", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "both are less", @@ -1500,7 +1526,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived isLineDiffable false", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "asymmetric matcher", @@ -1541,7 +1567,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived isLineDiffable true", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "array", @@ -1570,7 +1596,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived ignore indentation", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "markup delete", @@ -1593,7 +1619,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived ignore indentation object", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "delete", @@ -1610,7 +1636,7 @@ TestRunResult { }, TestGroupResult { "name": "printSnapshotAndReceived without serialize", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "backtick single line expected and received", @@ -1648,10 +1674,10 @@ TestRunResult { "totalTime": 1188, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "get configuration defaults", @@ -1665,10 +1691,10 @@ TestRunResult { "totalTime": 672, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "isCoreModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns false if \`hasCoreModules\` is false.", @@ -1697,7 +1723,7 @@ TestRunResult { }, TestGroupResult { "name": "findNodeModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is possible to override the default resolver", @@ -1714,7 +1740,7 @@ TestRunResult { }, TestGroupResult { "name": "resolveModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is possible to resolve node modules", @@ -1755,7 +1781,7 @@ TestRunResult { }, TestGroupResult { "name": "getMockModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is possible to use custom resolver to resolve deps inside mock modules with moduleNameMapper", @@ -1766,7 +1792,7 @@ TestRunResult { }, TestGroupResult { "name": "nodeModulesPaths", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "provides custom module paths after node_modules", @@ -1777,16 +1803,16 @@ TestRunResult { }, TestGroupResult { "name": "Resolver.getModulePaths() -> nodeModulesPaths()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "can resolve node modules relative to absolute paths in \\"moduleDirectories\\" on Windows platforms", + "name": "can resolve node modules relative to absolute paths in "moduleDirectories" on Windows platforms", "result": "success", "time": 21, }, TestCaseResult { "error": undefined, - "name": "can resolve node modules relative to absolute paths in \\"moduleDirectories\\" on Posix platforms", + "name": "can resolve node modules relative to absolute paths in "moduleDirectories" on Posix platforms", "result": "success", "time": 8, }, @@ -1797,10 +1823,10 @@ TestRunResult { "totalTime": 1308, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "toEqual", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be reflexive", @@ -1820,10 +1846,10 @@ TestRunResult { "totalTime": 1062, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "snapshots needs update with npm test", @@ -1855,10 +1881,10 @@ TestRunResult { "totalTime": 366, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "readConfigs() throws when called without project paths", @@ -1884,10 +1910,10 @@ TestRunResult { "totalTime": 135, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "generateEmptyCoverage", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "generates an empty coverage object for a file without running it", @@ -1913,10 +1939,10 @@ TestRunResult { "totalTime": 1129, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Any.asymmetricMatch()", @@ -2152,10 +2178,10 @@ TestRunResult { "totalTime": 207, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "onRunComplete", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "getLastError() returns an error when threshold is not met for global", @@ -2240,10 +2266,10 @@ TestRunResult { "totalTime": 397, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "saveInlineSnapshots() replaces empty function call with a template literal", @@ -2383,10 +2409,10 @@ TestRunResult { "totalTime": 1149, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "readConfig() throws when an object is passed without a file path", @@ -2400,10 +2426,10 @@ TestRunResult { "totalTime": 76, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "When offset is -1", @@ -2441,10 +2467,10 @@ TestRunResult { "totalTime": 57, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "toThrowError", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "to throw or not to throw", @@ -2467,7 +2493,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError substring", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -2514,7 +2540,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError regexp", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -2555,7 +2581,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError error class", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -2602,7 +2628,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError error-message pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2619,7 +2645,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError error-message fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2642,7 +2668,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric any-Class pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2659,7 +2685,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric any-Class fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2676,7 +2702,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric anything pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2693,7 +2719,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric anything fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2710,7 +2736,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric no-symbol pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2727,7 +2753,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric no-symbol fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2744,7 +2770,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric objectContaining pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2761,7 +2787,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError asymmetric objectContaining fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2778,7 +2804,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError promise/async throws if Error-like object is returned", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -2807,7 +2833,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrowError expected is undefined", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "threw, but should not have (non-error falsey)", @@ -2818,7 +2844,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "to throw or not to throw", @@ -2841,7 +2867,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow substring", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -2888,7 +2914,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow regexp", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -2929,7 +2955,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow error class", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -2976,7 +3002,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow error-message pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -2993,7 +3019,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow error-message fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3016,7 +3042,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric any-Class pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3033,7 +3059,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric any-Class fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3050,7 +3076,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric anything pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3067,7 +3093,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric anything fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3084,7 +3110,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric no-symbol pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3101,7 +3127,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric no-symbol fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3118,7 +3144,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric objectContaining pass", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3135,7 +3161,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow asymmetric objectContaining fail", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -3152,7 +3178,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow promise/async throws if Error-like object is returned", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes", @@ -3181,7 +3207,7 @@ TestRunResult { }, TestGroupResult { "name": "toThrow expected is undefined", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "threw, but should not have (non-error falsey)", @@ -3195,10 +3221,10 @@ TestRunResult { "totalTime": 257, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "recursively validates default Jest config", @@ -3333,7 +3359,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "Comments in config JSON using \\"//\\" key are not warned", + "name": "Comments in config JSON using "//" key are not warned", "result": "success", "time": 0, }, @@ -3344,10 +3370,10 @@ TestRunResult { "totalTime": 283, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "defaults", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns cached object if called multiple times", @@ -3370,7 +3396,7 @@ TestRunResult { }, TestGroupResult { "name": "custom resolver in project config", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns cached object if called multiple times", @@ -3393,7 +3419,7 @@ TestRunResult { }, TestGroupResult { "name": "malformed custom resolver in project config", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "missing resolveSnapshotPath throws", @@ -3425,10 +3451,10 @@ TestRunResult { "totalTime": 98, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resolves to the result of generateEmptyCoverage upon success", @@ -3448,10 +3474,10 @@ TestRunResult { "totalTime": 199, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Returns source string with inline maps when no transformOptions is passed", @@ -3468,28 +3494,28 @@ TestRunResult { }, TestGroupResult { "name": "caller option correctly merges from defaults and options", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "{\\"supportsDynamicImport\\":true,\\"supportsStaticESM\\":true} -> {\\"supportsDynamicImport\\":true,\\"supportsStaticESM\\":true}", + "name": "{"supportsDynamicImport":true,"supportsStaticESM":true} -> {"supportsDynamicImport":true,"supportsStaticESM":true}", "result": "success", "time": 6, }, TestCaseResult { "error": undefined, - "name": "{\\"supportsDynamicImport\\":false,\\"supportsStaticESM\\":false} -> {\\"supportsDynamicImport\\":false,\\"supportsStaticESM\\":false}", + "name": "{"supportsDynamicImport":false,"supportsStaticESM":false} -> {"supportsDynamicImport":false,"supportsStaticESM":false}", "result": "success", "time": 11, }, TestCaseResult { "error": undefined, - "name": "{\\"supportsStaticESM\\":false} -> {\\"supportsDynamicImport\\":false,\\"supportsStaticESM\\":false}", + "name": "{"supportsStaticESM":false} -> {"supportsDynamicImport":false,"supportsStaticESM":false}", "result": "success", "time": 13, }, TestCaseResult { "error": undefined, - "name": "{\\"supportsDynamicImport\\":true} -> {\\"supportsDynamicImport\\":true,\\"supportsStaticESM\\":false}", + "name": "{"supportsDynamicImport":true} -> {"supportsDynamicImport":true,"supportsStaticESM":false}", "result": "success", "time": 11, }, @@ -3500,19 +3526,19 @@ TestRunResult { "totalTime": 371, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Resolve config path .js", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "file path with \\".js\\"", + "name": "file path with ".js"", "result": "success", "time": 9, }, TestCaseResult { "error": undefined, - "name": "directory path with \\".js\\"", + "name": "directory path with ".js"", "result": "success", "time": 11, }, @@ -3520,16 +3546,16 @@ TestRunResult { }, TestGroupResult { "name": "Resolve config path .ts", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "file path with \\".ts\\"", + "name": "file path with ".ts"", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "directory path with \\".ts\\"", + "name": "directory path with ".ts"", "result": "success", "time": 3, }, @@ -3537,16 +3563,16 @@ TestRunResult { }, TestGroupResult { "name": "Resolve config path .mjs", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "file path with \\".mjs\\"", + "name": "file path with ".mjs"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "directory path with \\".mjs\\"", + "name": "directory path with ".mjs"", "result": "success", "time": 7, }, @@ -3554,16 +3580,16 @@ TestRunResult { }, TestGroupResult { "name": "Resolve config path .cjs", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "file path with \\".cjs\\"", + "name": "file path with ".cjs"", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "directory path with \\".cjs\\"", + "name": "directory path with ".cjs"", "result": "success", "time": 2, }, @@ -3571,16 +3597,16 @@ TestRunResult { }, TestGroupResult { "name": "Resolve config path .json", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "file path with \\".json\\"", + "name": "file path with ".json"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "directory path with \\".json\\"", + "name": "directory path with ".json"", "result": "success", "time": 3, }, @@ -3591,10 +3617,10 @@ TestRunResult { "totalTime": 183, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "groupTestsBySuites", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should handle empty results", @@ -3668,10 +3694,10 @@ TestRunResult { "totalTime": 425, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "keyToTestName()", @@ -3740,7 +3766,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "serialize handles \\\\r\\\\n", + "name": "serialize handles \\r\\n", "result": "success", "time": 1, }, @@ -3748,7 +3774,7 @@ TestRunResult { }, TestGroupResult { "name": "ExtraLineBreaks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "0 empty string", @@ -3795,7 +3821,7 @@ TestRunResult { }, TestGroupResult { "name": "removeLinesBeforeExternalMatcherTrap", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "contains external matcher trap", @@ -3812,7 +3838,7 @@ TestRunResult { }, TestGroupResult { "name": "DeepMerge with property matchers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Correctly merges a nested object", @@ -3850,10 +3876,10 @@ TestRunResult { "totalTime": 214, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test always", @@ -3948,7 +3974,7 @@ TestRunResult { }, TestGroupResult { "name": "node-notifier is an optional dependency", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "without node-notifier uses mock function that throws an error", @@ -3974,10 +4000,10 @@ TestRunResult { "totalTime": 166, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime CLI", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails with no path", @@ -4009,10 +4035,10 @@ TestRunResult { "totalTime": 4094.0000000000005, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is available globally when matcher is unary", @@ -4080,10 +4106,10 @@ TestRunResult { "totalTime": 99, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getCallsite", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "without source map", @@ -4109,10 +4135,10 @@ TestRunResult { "totalTime": 86, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "maps special values to valid options", @@ -4144,10 +4170,10 @@ TestRunResult { "totalTime": 53, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls handler on change value", @@ -4173,10 +4199,10 @@ TestRunResult { "totalTime": 91, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "docblock", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "extracts valid docblock with line comment", @@ -4400,10 +4426,10 @@ TestRunResult { "totalTime": 177, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "dedentLines non-null", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "no lines", @@ -4456,7 +4482,7 @@ TestRunResult { }, TestGroupResult { "name": "dedentLines null", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "object key multi-line", @@ -4518,10 +4544,10 @@ TestRunResult { "totalTime": 94, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getMaxWorkers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Returns 1 when runInBand", @@ -4550,7 +4576,7 @@ TestRunResult { }, TestGroupResult { "name": "getMaxWorkers % based", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "50% = 2 workers", @@ -4576,10 +4602,10 @@ TestRunResult { "totalTime": 67, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "wrapAnsiString()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "wraps a long string containing ansi chars", @@ -4596,7 +4622,7 @@ TestRunResult { }, TestGroupResult { "name": "trimAndFormatPath()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "trims dirname", @@ -4631,7 +4657,7 @@ TestRunResult { }, TestGroupResult { "name": "printDisplayName", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should default displayName color to white when displayName is a string", @@ -4657,10 +4683,10 @@ TestRunResult { "totalTime": 85, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throw matcher can take func", @@ -4671,7 +4697,7 @@ TestRunResult { }, TestGroupResult { "name": "throw matcher from promise", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "can take error", @@ -4691,10 +4717,10 @@ TestRunResult { "totalTime": 481, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "matcher returns matcher name, expected and actual values", @@ -4708,10 +4734,10 @@ TestRunResult { "totalTime": 131, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "validate pattern function", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "without passed args returns true", @@ -4743,10 +4769,10 @@ TestRunResult { "totalTime": 52, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "isBuiltinModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return true for the \`path\` module", @@ -4778,10 +4804,10 @@ TestRunResult { "totalTime": 36, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throw when directly imported", @@ -4795,10 +4821,10 @@ TestRunResult { "totalTime": 533, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "replacePathSepForRegex() posix", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the path", @@ -4809,7 +4835,7 @@ TestRunResult { }, TestGroupResult { "name": "replacePathSepForRegex() win32", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should replace POSIX path separators", @@ -4859,10 +4885,10 @@ TestRunResult { "totalTime": 56, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "mock with 0 calls and default name", @@ -4930,10 +4956,10 @@ TestRunResult { "totalTime": 45, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getWatermarks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "that watermarks use thresholds as upper target", @@ -4953,10 +4979,10 @@ TestRunResult { "totalTime": 37, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "normal output, everything goes to stdout", @@ -4976,10 +5002,10 @@ TestRunResult { "totalTime": 148, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call \`terminal-link\` correctly", @@ -5011,10 +5037,10 @@ TestRunResult { "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "toEqual duck type Text", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -5031,7 +5057,7 @@ TestRunResult { }, TestGroupResult { "name": "toEqual duck type Element", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -5048,7 +5074,7 @@ TestRunResult { }, TestGroupResult { "name": "toEqual duck type Fragment", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -5065,7 +5091,7 @@ TestRunResult { }, TestGroupResult { "name": "toEqual document createTextNode", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -5082,7 +5108,7 @@ TestRunResult { }, TestGroupResult { "name": "toEqual document createElement", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -5099,7 +5125,7 @@ TestRunResult { }, TestGroupResult { "name": "toEqual document createDocumentFragment", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "isNot false", @@ -5119,10 +5145,10 @@ TestRunResult { "totalTime": 99, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "NodeEnvironment", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses a copy of the process object", @@ -5166,10 +5192,10 @@ TestRunResult { "totalTime": 184, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Retrieves the snapshot status", @@ -5195,10 +5221,10 @@ TestRunResult { "totalTime": 28, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "validates yargs special options", @@ -5242,10 +5268,10 @@ TestRunResult { "totalTime": 83, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "creates a snapshot summary", @@ -5277,10 +5303,10 @@ TestRunResult { "totalTime": 49, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "for multiline test name returns", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test name with highlighted pattern and replaced line breaks", @@ -5291,7 +5317,7 @@ TestRunResult { }, TestGroupResult { "name": "for one line test name with pattern in the head returns", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test name with highlighted pattern", @@ -5314,7 +5340,7 @@ TestRunResult { }, TestGroupResult { "name": "for one line test name pattern in the middle", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test name with highlighted pattern returns", @@ -5343,7 +5369,7 @@ TestRunResult { }, TestGroupResult { "name": "for one line test name pattern in the tail returns", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test name with highlighted pattern", @@ -5369,10 +5395,10 @@ TestRunResult { "totalTime": 129, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "shouldInstrument should return true", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "when testRegex is provided and file is not a test file", @@ -5443,7 +5469,7 @@ TestRunResult { }, TestGroupResult { "name": "shouldInstrument should return false", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "if collectCoverage is falsy", @@ -5535,10 +5561,10 @@ TestRunResult { "totalTime": 155, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ScriptTransformer", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "transforms a file properly", @@ -5678,10 +5704,10 @@ TestRunResult { "totalTime": 1660, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "simple test", @@ -5701,10 +5727,10 @@ TestRunResult { "totalTime": 2902, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "moduleMocker getMetadata", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the function \`name\` property", @@ -5769,7 +5795,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker generateFromMetadata", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "forwards the function name property", @@ -5972,7 +5998,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker generateFromMetadata mocked functions", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "tracks calls to mocks", @@ -6043,7 +6069,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker generateFromMetadata return values", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "tracks return values", @@ -6066,7 +6092,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker generateFromMetadata invocationCallOrder", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "tracks invocationCallOrder made by mocks", @@ -6095,7 +6121,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker getMockImplementation", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should mock calls to a mock function", @@ -6106,7 +6132,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker mockImplementationOnce", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should mock constructor", @@ -6129,7 +6155,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "mockReturnValue does not override mockImplementationOnce", @@ -6182,7 +6208,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker spyOn", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work", @@ -6211,7 +6237,7 @@ TestRunResult { }, TestGroupResult { "name": "moduleMocker spyOnProperty", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work - getter", @@ -6261,10 +6287,10 @@ TestRunResult { "totalTime": 509, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "beforeEach is executed before each test in current/child describe blocks", @@ -6290,10 +6316,10 @@ TestRunResult { "totalTime": 3762, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime requireModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "finds haste modules", @@ -6454,7 +6480,7 @@ TestRunResult { }, TestGroupResult { "name": "Runtime requireModule on node >=12.12.0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "overrides module.createRequire", @@ -6468,10 +6494,10 @@ TestRunResult { "totalTime": 2439, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime jest.mock", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses explicitly set mocks instead of automocking", @@ -6494,7 +6520,7 @@ TestRunResult { }, TestGroupResult { "name": "Runtime jest.setMock", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses explicitly set mocks instead of automocking", @@ -6508,10 +6534,10 @@ TestRunResult { "totalTime": 743, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "test/it error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "it doesn't throw an error with valid arguments", @@ -6567,10 +6593,10 @@ TestRunResult { "totalTime": 300, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "BaseWorkerPool", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when createWorker is not defined", @@ -6623,7 +6649,7 @@ TestRunResult { }, TestGroupResult { "name": "BaseWorkerPool end", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ends all workers", @@ -6649,10 +6675,10 @@ TestRunResult { "totalTime": 653, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not incorrectly match identity-obj-proxy as Immutable object", @@ -6663,7 +6689,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.OrderedSet", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty collection {min: true}", @@ -6740,7 +6766,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.List", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty collection {min: true}", @@ -6817,7 +6843,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.Stack", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty collection {min: true}", @@ -6894,7 +6920,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.Set", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty collection {min: true}", @@ -6971,7 +6997,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.Map", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty collection {min: true}", @@ -7030,7 +7056,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.OrderedMap", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty collection {min: true}", @@ -7095,7 +7121,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.Record", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty record {min: true}", @@ -7160,7 +7186,7 @@ TestRunResult { }, TestGroupResult { "name": "indentation of heterogeneous collections", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "empty Immutable.List as child of Object", @@ -7189,7 +7215,7 @@ TestRunResult { }, TestGroupResult { "name": "indent option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "default implicit: 2 spaces", @@ -7218,7 +7244,7 @@ TestRunResult { }, TestGroupResult { "name": "maxDepth option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Immutable.List as child of Object", @@ -7247,7 +7273,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.Seq", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports an empty sequence from array {min: true}", @@ -7336,7 +7362,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.Seq lazy entries", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "from object properties", @@ -7353,7 +7379,7 @@ TestRunResult { }, TestGroupResult { "name": "Immutable.Seq lazy values", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "from Immutable.Range", @@ -7391,10 +7417,10 @@ TestRunResult { "totalTime": 443, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime requireModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "installs source maps if available", @@ -7408,10 +7434,10 @@ TestRunResult { "totalTime": 584, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "JSDomEnvironment", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should configure setTimeout/setInterval to use the browser api", @@ -7431,10 +7457,10 @@ TestRunResult { "totalTime": 783, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "babel-plugin-jest-hoist", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "automatic react runtime", @@ -7466,10 +7492,10 @@ TestRunResult { "totalTime": 347, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes fork options down to child_process.fork, adding the defaults", @@ -7579,10 +7605,10 @@ TestRunResult { "totalTime": 184, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "jest-each .test", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -7653,7 +7679,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.concurrent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -7724,7 +7750,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.concurrent.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -7795,7 +7821,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.concurrent.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -7890,7 +7916,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -7961,7 +7987,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .it", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -8032,7 +8058,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .fit", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -8103,7 +8129,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .it.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -8174,7 +8200,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .describe", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -8245,7 +8271,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .fdescribe", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -8316,7 +8342,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .describe.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with an array", @@ -8387,7 +8413,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each done callback", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls [ 'test' ] with done when cb function has more args than params of given test row", @@ -8452,7 +8478,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .xtest", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -8481,7 +8507,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -8510,7 +8536,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .xit", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -8539,7 +8565,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .it.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -8568,7 +8594,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .xdescribe", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -8597,7 +8623,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .describe.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -8629,10 +8655,10 @@ TestRunResult { "totalTime": 192, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "jest-each .test", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -8751,7 +8777,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.concurrent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -8888,7 +8914,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.concurrent.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9007,7 +9033,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.concurrent.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9144,7 +9170,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9263,7 +9289,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .it", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9382,7 +9408,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .fit", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9501,7 +9527,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .it.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9620,7 +9646,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .describe", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9739,7 +9765,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .fdescribe", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9858,7 +9884,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .describe.only", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error when there are additional words in first column heading", @@ -9977,7 +10003,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each done callback", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls [ 'test' ] with done when cb function has more args than params of given test row", @@ -10036,7 +10062,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .xtest", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -10059,7 +10085,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .test.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -10082,7 +10108,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .xit", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -10105,7 +10131,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .it.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -10128,7 +10154,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .xdescribe", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -10151,7 +10177,7 @@ TestRunResult { }, TestGroupResult { "name": "jest-each .describe.skip", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls global with given title", @@ -10177,10 +10203,10 @@ TestRunResult { "totalTime": 483, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports a single element with no props or children", @@ -10393,7 +10419,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "throws if theme option is not of type \\"object\\"", + "name": "throws if theme option is not of type "object"", "result": "success", "time": 0, }, @@ -10449,7 +10475,7 @@ TestRunResult { }, TestGroupResult { "name": "test object for subset match", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "undefined props", @@ -10466,7 +10492,7 @@ TestRunResult { }, TestGroupResult { "name": "indent option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "default implicit: 2 spaces", @@ -10495,7 +10521,7 @@ TestRunResult { }, TestGroupResult { "name": "maxDepth option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "elements", @@ -10512,7 +10538,7 @@ TestRunResult { }, TestGroupResult { "name": "React.memo without displayName", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "renders the component name", @@ -10523,7 +10549,7 @@ TestRunResult { }, TestGroupResult { "name": "React.memo with displayName", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "renders the displayName of component before memoizing", @@ -10543,10 +10569,10 @@ TestRunResult { "totalTime": 325, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "tests are not marked done until their parent afterAll runs", @@ -10590,10 +10616,10 @@ TestRunResult { "totalTime": 5755, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "prettyFormat()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints empty arguments", @@ -11072,7 +11098,7 @@ TestRunResult { }, TestGroupResult { "name": "prettyFormat() indent option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "default implicit: 2 spaces", @@ -11101,7 +11127,7 @@ TestRunResult { }, TestGroupResult { "name": "prettyFormat() min", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints some basic values in min mode", @@ -11127,10 +11153,10 @@ TestRunResult { "totalTime": 219, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Farm", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "sends a request to one worker", @@ -11198,10 +11224,10 @@ TestRunResult { "totalTime": 158, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "lazily requires the file", @@ -11228,13 +11254,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "calls the main module if the method call is \\"default\\"", + "name": "calls the main module if the method call is "default"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "calls the main export if the method call is \\"default\\" and it is a Babel transpiled one", + "name": "calls the main export if the method call is "default" and it is a Babel transpiled one", "result": "success", "time": 1, }, @@ -11269,10 +11295,10 @@ TestRunResult { "totalTime": 120, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "queueRunner", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs every function in the queue.", @@ -11316,10 +11342,10 @@ TestRunResult { "totalTime": 93, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passes fork options down to child_process.fork, adding the defaults", @@ -11417,10 +11443,10 @@ TestRunResult { "totalTime": 258, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "lazily requires the file", @@ -11447,13 +11473,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "calls the main module if the method call is \\"default\\"", + "name": "calls the main module if the method call is "default"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "calls the main export if the method call is \\"default\\" and it is a Babel transpiled one", + "name": "calls the main export if the method call is "default" and it is a Babel transpiled one", "result": "success", "time": 1, }, @@ -11488,10 +11514,10 @@ TestRunResult { "totalTime": 135, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "injects the serializable module map into each worker in watch mode", @@ -11511,13 +11537,13 @@ TestRunResult { "totalTime": 905, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "beforeEach hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "beforeEach throws an error when \\"String\\" is provided as a first argument to it", + "name": "beforeEach throws an error when "String" is provided as a first argument to it", "result": "success", "time": 19, }, @@ -11567,10 +11593,10 @@ TestRunResult { }, TestGroupResult { "name": "beforeAll hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "beforeAll throws an error when \\"String\\" is provided as a first argument to it", + "name": "beforeAll throws an error when "String" is provided as a first argument to it", "result": "success", "time": 0, }, @@ -11620,10 +11646,10 @@ TestRunResult { }, TestGroupResult { "name": "afterEach hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "afterEach throws an error when \\"String\\" is provided as a first argument to it", + "name": "afterEach throws an error when "String" is provided as a first argument to it", "result": "success", "time": 0, }, @@ -11673,10 +11699,10 @@ TestRunResult { }, TestGroupResult { "name": "afterAll hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "afterAll throws an error when \\"String\\" is provided as a first argument to it", + "name": "afterAll throws an error when "String" is provided as a first argument to it", "result": "success", "time": 1, }, @@ -11729,10 +11755,10 @@ TestRunResult { "totalTime": 127, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Using V8 implementation", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws the error with an invalid serialization", @@ -11743,7 +11769,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11760,7 +11786,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 1", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11777,7 +11803,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 2", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11794,7 +11820,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 3", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11811,7 +11837,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 4", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11828,7 +11854,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 5", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11845,7 +11871,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 6", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11862,7 +11888,7 @@ TestRunResult { }, TestGroupResult { "name": "Using V8 implementation Object 7", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes/deserializes in memory", @@ -11882,10 +11908,10 @@ TestRunResult { "totalTime": 158, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "CustomConsole assert", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "do not log when the assertion is truthy", @@ -11914,7 +11940,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole count", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "count using the default counter", @@ -11943,7 +11969,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole group", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "group without label", @@ -11972,7 +11998,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole time", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the time between time() and timeEnd() on default timer", @@ -11989,7 +12015,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole dir", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should print the deepest value", @@ -12000,7 +12026,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole timeLog", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the time between time() and timeEnd() on default timer", @@ -12029,7 +12055,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole console", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be able to initialize console instance", @@ -12043,10 +12069,10 @@ TestRunResult { "totalTime": 171, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "CustomConsole log", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should print to stdout", @@ -12057,7 +12083,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should print to stderr", @@ -12068,7 +12094,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole warn", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should print to stderr", @@ -12079,7 +12105,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole assert", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "do not log when the assertion is truthy", @@ -12108,7 +12134,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole count", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "count using the default counter", @@ -12137,7 +12163,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole group", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "group without label", @@ -12166,7 +12192,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole time", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the time between time() and timeEnd() on default timer", @@ -12183,7 +12209,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole dir", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should print the deepest value", @@ -12194,7 +12220,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole timeLog", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the time between time() and timeEnd() on default timer", @@ -12223,7 +12249,7 @@ TestRunResult { }, TestGroupResult { "name": "CustomConsole console", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be able to initialize console instance", @@ -12237,10 +12263,10 @@ TestRunResult { "totalTime": 115, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "DOMCollection plugin for object properties", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports DOMStringMap", @@ -12263,7 +12289,7 @@ TestRunResult { }, TestGroupResult { "name": "DOMCollection plugin for list items", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports HTMLCollection for getElementsByTagName", @@ -12313,10 +12339,10 @@ TestRunResult { "totalTime": 64, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "test/it.todo error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "todo throws error when given no arguments", @@ -12342,10 +12368,10 @@ TestRunResult { "totalTime": 81, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "sorts by file size if there is no timing information", @@ -12401,10 +12427,10 @@ TestRunResult { "totalTime": 251, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Suite", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "doesn't throw on addExpectationResult when there are no children", @@ -12418,10 +12444,10 @@ TestRunResult { "totalTime": 84, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports any(String)", @@ -12618,7 +12644,7 @@ TestRunResult { }, TestGroupResult { "name": "indent option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "default implicit: 2 spaces", @@ -12647,7 +12673,7 @@ TestRunResult { }, TestGroupResult { "name": "maxDepth option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "matchers as leaf nodes", @@ -12667,10 +12693,10 @@ TestRunResult { "totalTime": 137, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ConvertAnsi plugin", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports style.red", @@ -12714,10 +12740,10 @@ TestRunResult { "totalTime": 43, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getConsoleOutput", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "takes noStackTrace and pass it on for assert", @@ -12797,10 +12823,10 @@ TestRunResult { "totalTime": 56, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "expectationResultFactory", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the result if passed.", @@ -12850,10 +12876,10 @@ TestRunResult { "totalTime": 70, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "array .add", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the result of adding 0 to 0", @@ -12876,7 +12902,7 @@ TestRunResult { }, TestGroupResult { "name": "concurrent .add", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the result of adding 0 to 0", @@ -12899,7 +12925,7 @@ TestRunResult { }, TestGroupResult { "name": "template .add", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns 0 when given 0 and 0", @@ -12922,7 +12948,7 @@ TestRunResult { }, TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when not called with the right number of arguments", @@ -12936,10 +12962,10 @@ TestRunResult { "totalTime": 44, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "pretty-format", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints global window as constructor name alone", @@ -12950,7 +12976,7 @@ TestRunResult { }, TestGroupResult { "name": "DOMElement Plugin", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports a single HTML element", @@ -13105,7 +13131,7 @@ TestRunResult { }, TestGroupResult { "name": "DOMElement Plugin matches constructor name of SVG elements", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "jsdom 9 and 10", @@ -13125,10 +13151,10 @@ TestRunResult { "totalTime": 148, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "formatTestResults", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "includes test full name", @@ -13142,10 +13168,10 @@ TestRunResult { "totalTime": 53, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "exposes the right API using default working", @@ -13201,13 +13227,13 @@ TestRunResult { "totalTime": 230, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "beforeEach hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "beforeEach throws an error when \\"String\\" is provided as a first argument to it", + "name": "beforeEach throws an error when "String" is provided as a first argument to it", "result": "success", "time": 2, }, @@ -13257,10 +13283,10 @@ TestRunResult { }, TestGroupResult { "name": "beforeAll hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "beforeAll throws an error when \\"String\\" is provided as a first argument to it", + "name": "beforeAll throws an error when "String" is provided as a first argument to it", "result": "success", "time": 0, }, @@ -13310,10 +13336,10 @@ TestRunResult { }, TestGroupResult { "name": "afterEach hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "afterEach throws an error when \\"String\\" is provided as a first argument to it", + "name": "afterEach throws an error when "String" is provided as a first argument to it", "result": "success", "time": 0, }, @@ -13363,10 +13389,10 @@ TestRunResult { }, TestGroupResult { "name": "afterAll hooks error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "afterAll throws an error when \\"String\\" is provided as a first argument to it", + "name": "afterAll throws an error when "String" is provided as a first argument to it", "result": "success", "time": 1, }, @@ -13419,10 +13445,10 @@ TestRunResult { "totalTime": 51, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Jasmine2Reporter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "reports nested suites", @@ -13436,10 +13462,10 @@ TestRunResult { "totalTime": 107, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "test/it.todo error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "it throws error when given no arguments", @@ -13465,10 +13491,10 @@ TestRunResult { "totalTime": 27, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "test/it error throwing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "it throws error with missing callback function", @@ -13512,10 +13538,10 @@ TestRunResult { "totalTime": 32, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "iterators", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works for arrays", @@ -13547,10 +13573,10 @@ TestRunResult { "totalTime": 43, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "pTimeout", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls \`clearTimeout\` and resolves when \`promise\` resolves.", @@ -13576,10 +13602,10 @@ TestRunResult { "totalTime": 44, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "creation of a cache key", @@ -13593,10 +13619,10 @@ TestRunResult { "totalTime": 75, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "concurrent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add 1 to number", @@ -13622,10 +13648,10 @@ TestRunResult { "totalTime": 24, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "global.test", @@ -13639,10 +13665,10 @@ TestRunResult { "totalTime": 23, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ReactElement Plugin", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "serializes forwardRef without displayName", @@ -13668,10 +13694,10 @@ TestRunResult { "totalTime": 64, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the shared tasks in FIFO ordering", @@ -13697,10 +13723,10 @@ TestRunResult { "totalTime": 48, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the tasks in order", @@ -13738,10 +13764,10 @@ TestRunResult { "totalTime": 63, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "SearchSource isTestFilePath", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports ../ paths and unix separators via testRegex", @@ -13764,7 +13790,7 @@ TestRunResult { }, TestGroupResult { "name": "SearchSource testPathsMatching", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "finds tests matching a pattern via testRegex", @@ -13847,7 +13873,7 @@ TestRunResult { }, TestGroupResult { "name": "SearchSource findRelatedTests", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "makes sure a file is related to itself", @@ -13870,7 +13896,7 @@ TestRunResult { }, TestGroupResult { "name": "SearchSource findRelatedTestsFromPattern", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns empty search result for empty input", @@ -13911,7 +13937,7 @@ TestRunResult { }, TestGroupResult { "name": "SearchSource findRelatedSourcesFromTestsInChangedFiles", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "return empty set if no SCM", @@ -13931,10 +13957,10 @@ TestRunResult { "totalTime": 2596, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw if passed two arguments", @@ -13945,7 +13971,7 @@ TestRunResult { }, TestGroupResult { "name": ".rejects", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -13966,13 +13992,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "fails non-promise value \\"a\\" synchronously", + "name": "fails non-promise value "a" synchronously", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "fails non-promise value \\"a\\"", + "name": "fails non-promise value "a"", "result": "success", "time": 2, }, @@ -14002,13 +14028,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "fails non-promise value {\\"a\\": 1} synchronously", + "name": "fails non-promise value {"a": 1} synchronously", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "fails non-promise value {\\"a\\": 1}", + "name": "fails non-promise value {"a": 1}", "result": "success", "time": 0, }, @@ -14070,7 +14096,7 @@ TestRunResult { }, TestGroupResult { "name": ".resolves", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should resolve", @@ -14079,13 +14105,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "fails non-promise value \\"a\\" synchronously", + "name": "fails non-promise value "a" synchronously", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "fails non-promise value \\"a\\"", + "name": "fails non-promise value "a"", "result": "success", "time": 0, }, @@ -14115,13 +14141,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "fails non-promise value {\\"a\\": 1} synchronously", + "name": "fails non-promise value {"a": 1} synchronously", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "fails non-promise value {\\"a\\": 1}", + "name": "fails non-promise value {"a": 1}", "result": "success", "time": 0, }, @@ -14183,7 +14209,7 @@ TestRunResult { }, TestGroupResult { "name": ".toBe()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not throw", @@ -14216,25 +14242,25 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "fails for: {\\"a\\": 1} and {\\"a\\": 1}", + "name": "fails for: {"a": 1} and {"a": 1}", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "fails for: {\\"a\\": 1} and {\\"a\\": 5}", + "name": "fails for: {"a": 1} and {"a": 5}", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "fails for: {\\"a\\": [Function a], \\"b\\": 2} and {\\"a\\": Any, \\"b\\": 2}", + "name": "fails for: {"a": [Function a], "b": 2} and {"a": Any, "b": 2}", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "fails for: {\\"a\\": undefined, \\"b\\": 2} and {\\"b\\": 2}", + "name": "fails for: {"a": undefined, "b": 2} and {"b": 2}", "result": "success", "time": 8, }, @@ -14270,37 +14296,37 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "fails for: \\"abc\\" and \\"cde\\"", + "name": "fails for: "abc" and "cde"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "fails for: \\"painless JavaScript testing\\" and \\"delightful JavaScript testing\\"", + "name": "fails for: "painless JavaScript testing" and "delightful JavaScript testing"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "fails for: \\"\\" and \\"compare one-line string to empty string\\"", + "name": "fails for: "" and "compare one-line string to empty string"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "fails for: \\"with -trailing space\\" and \\"without trailing space\\"", + "name": "fails for: "with +trailing space" and "without trailing space"", "result": "success", "time": 8, }, TestCaseResult { "error": undefined, - "name": "fails for: \\"four + "name": "fails for: "four 4 line -string\\" and \\"3 +string" and "3 line -string\\"", +string"", "result": "success", "time": 0, }, @@ -14330,7 +14356,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "fails for: {\\"a\\": 1n} and {\\"a\\": 1n}", + "name": "fails for: {"a": 1n} and {"a": 1n}", "result": "success", "time": 0, }, @@ -14348,7 +14374,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "fails for '\\"a\\"' with '.not'", + "name": "fails for '"a"' with '.not'", "result": "success", "time": 0, }, @@ -14404,7 +14430,7 @@ string\\"", }, TestGroupResult { "name": ".toStrictEqual()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not ignore keys with undefined values", @@ -14481,7 +14507,7 @@ string\\"", }, TestGroupResult { "name": ".toEqual()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "{pass: false} expect(true).toEqual(false)", @@ -14532,13 +14558,13 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"abc\\").toEqual({\\"0\\": \\"a\\", \\"1\\": \\"b\\", \\"2\\": \\"c\\"})", + "name": "{pass: false} expect("abc").toEqual({"0": "a", "1": "b", "2": "c"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"0\\": \\"a\\", \\"1\\": \\"b\\", \\"2\\": \\"c\\"}).toEqual(\\"abc\\")", + "name": "{pass: false} expect({"0": "a", "1": "b", "2": "c"}).toEqual("abc")", "result": "success", "time": 1, }, @@ -14550,75 +14576,75 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": 1}).toEqual({\\"a\\": 2})", + "name": "{pass: false} expect({"a": 1}).toEqual({"a": 2})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": 5}).toEqual({\\"b\\": 6})", + "name": "{pass: false} expect({"a": 5}).toEqual({"b": 6})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"foo\\": {\\"bar\\": 1}}).toEqual({\\"foo\\": {}})", + "name": "{pass: false} expect({"foo": {"bar": 1}}).toEqual({"foo": {}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"getterAndSetter\\": {}}).toEqual({\\"getterAndSetter\\": {\\"foo\\": \\"bar\\"}})", + "name": "{pass: false} expect({"getterAndSetter": {}}).toEqual({"getterAndSetter": {"foo": "bar"}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"frozenGetterAndSetter\\": {}}).toEqual({\\"frozenGetterAndSetter\\": {\\"foo\\": \\"bar\\"}})", + "name": "{pass: false} expect({"frozenGetterAndSetter": {}}).toEqual({"frozenGetterAndSetter": {"foo": "bar"}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"getter\\": {}}).toEqual({\\"getter\\": {\\"foo\\": \\"bar\\"}})", + "name": "{pass: false} expect({"getter": {}}).toEqual({"getter": {"foo": "bar"}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"frozenGetter\\": {}}).toEqual({\\"frozenGetter\\": {\\"foo\\": \\"bar\\"}})", + "name": "{pass: false} expect({"frozenGetter": {}}).toEqual({"frozenGetter": {"foo": "bar"}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"setter\\": undefined}).toEqual({\\"setter\\": {\\"foo\\": \\"bar\\"}})", + "name": "{pass: false} expect({"setter": undefined}).toEqual({"setter": {"foo": "bar"}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"frozenSetter\\": undefined}).toEqual({\\"frozenSetter\\": {\\"foo\\": \\"bar\\"}})", + "name": "{pass: false} expect({"frozenSetter": undefined}).toEqual({"frozenSetter": {"foo": "bar"}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"banana\\").toEqual(\\"apple\\")", + "name": "{pass: false} expect("banana").toEqual("apple")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"1 234,57 $\\").toEqual(\\"1 234,57 $\\")", + "name": "{pass: false} expect("1 234,57 $").toEqual("1 234,57 $")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"type TypeName = T extends Function ? \\\\\\"function\\\\\\" : \\\\\\"object\\\\\\";\\").toEqual(\\"type TypeName = T extends Function -? \\\\\\"function\\\\\\" -: \\\\\\"object\\\\\\";\\")", + "name": "{pass: false} expect("type TypeName = T extends Function ? \\"function\\" : \\"object\\";").toEqual("type TypeName = T extends Function +? \\"function\\" +: \\"object\\";")", "result": "success", "time": 1, }, @@ -14708,55 +14734,55 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Map {1 => \\"one\\", 2 => \\"two\\"}).toEqual(Map {1 => \\"one\\"})", + "name": "{pass: false} expect(Map {1 => "one", 2 => "two"}).toEqual(Map {1 => "one"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Map {\\"a\\" => 0}).toEqual(Map {\\"b\\" => 0})", + "name": "{pass: false} expect(Map {"a" => 0}).toEqual(Map {"b" => 0})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Map {\\"v\\" => 1}).toEqual(Map {\\"v\\" => 2})", + "name": "{pass: false} expect(Map {"v" => 1}).toEqual(Map {"v" => 2})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Map {[\\"v\\"] => 1}).toEqual(Map {[\\"v\\"] => 2})", + "name": "{pass: false} expect(Map {["v"] => 1}).toEqual(Map {["v"] => 2})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Map {[1] => Map {[1] => \\"one\\"}}).toEqual(Map {[1] => Map {[1] => \\"two\\"}})", + "name": "{pass: false} expect(Map {[1] => Map {[1] => "one"}}).toEqual(Map {[1] => Map {[1] => "two"}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Immutable.Map {\\"a\\": 0}).toEqual(Immutable.Map {\\"b\\": 0})", + "name": "{pass: false} expect(Immutable.Map {"a": 0}).toEqual(Immutable.Map {"b": 0})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Immutable.Map {\\"v\\": 1}).toEqual(Immutable.Map {\\"v\\": 2})", + "name": "{pass: false} expect(Immutable.Map {"v": 1}).toEqual(Immutable.Map {"v": 2})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Immutable.OrderedMap {1: \\"one\\", 2: \\"two\\"}).toEqual(Immutable.OrderedMap {2: \\"two\\", 1: \\"one\\"})", + "name": "{pass: false} expect(Immutable.OrderedMap {1: "one", 2: "two"}).toEqual(Immutable.OrderedMap {2: "two", 1: "one"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 99}}}).toEqual(Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 11}}})", + "name": "{pass: false} expect(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}}).toEqual(Immutable.Map {"1": Immutable.Map {"2": {"a": 11}}})", "result": "success", "time": 1, }, @@ -14768,13 +14794,13 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": 1, \\"b\\": 2}).toEqual(ObjectContaining {\\"a\\": 2})", + "name": "{pass: false} expect({"a": 1, "b": 2}).toEqual(ObjectContaining {"a": 2})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(false).toEqual(ObjectContaining {\\"a\\": 2})", + "name": "{pass: false} expect(false).toEqual(ObjectContaining {"a": 2})", "result": "success", "time": 0, }, @@ -14792,13 +14818,13 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"abd\\").toEqual(StringContaining \\"bc\\")", + "name": "{pass: false} expect("abd").toEqual(StringContaining "bc")", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"abd\\").toEqual(StringMatching /bc/i)", + "name": "{pass: false} expect("abd").toEqual(StringMatching /bc/i)", "result": "success", "time": 0, }, @@ -14816,19 +14842,19 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"Eve\\").toEqual({\\"asymmetricMatch\\": [Function asymmetricMatch]})", + "name": "{pass: false} expect("Eve").toEqual({"asymmetricMatch": [Function asymmetricMatch]})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"target\\": {\\"nodeType\\": 1, \\"value\\": \\"a\\"}}).toEqual({\\"target\\": {\\"nodeType\\": 1, \\"value\\": \\"b\\"}})", + "name": "{pass: false} expect({"target": {"nodeType": 1, "value": "a"}}).toEqual({"target": {"nodeType": 1, "value": "b"}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"nodeName\\": \\"div\\", \\"nodeType\\": 1}).toEqual({\\"nodeName\\": \\"p\\", \\"nodeType\\": 1})", + "name": "{pass: false} expect({"nodeName": "div", "nodeType": 1}).toEqual({"nodeName": "p", "nodeType": 1})", "result": "success", "time": 1, }, @@ -14888,19 +14914,19 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"abc\\").not.toEqual(\\"abc\\")", + "name": "{pass: true} expect("abc").not.toEqual("abc")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"abc\\").not.toEqual(\\"abc\\")", + "name": "{pass: true} expect("abc").not.toEqual("abc")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"abc\\").not.toEqual(\\"abc\\")", + "name": "{pass: true} expect("abc").not.toEqual("abc")", "result": "success", "time": 1, }, @@ -14936,7 +14962,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 99}).not.toEqual({\\"a\\": 99})", + "name": "{pass: true} expect({"a": 99}).not.toEqual({"a": 99})", "result": "success", "time": 1, }, @@ -14978,7 +15004,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Set {{\\"a\\": 1}, {\\"b\\": 2}}).not.toEqual(Set {{\\"b\\": 2}, {\\"a\\": 1}})", + "name": "{pass: true} expect(Set {{"a": 1}, {"b": 2}}).not.toEqual(Set {{"b": 2}, {"a": 1}})", "result": "success", "time": 0, }, @@ -15020,43 +15046,43 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Map {1 => \\"one\\", 2 => \\"two\\"}).not.toEqual(Map {1 => \\"one\\", 2 => \\"two\\"})", + "name": "{pass: true} expect(Map {1 => "one", 2 => "two"}).not.toEqual(Map {1 => "one", 2 => "two"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Map {1 => \\"one\\", 2 => \\"two\\"}).not.toEqual(Map {2 => \\"two\\", 1 => \\"one\\"})", + "name": "{pass: true} expect(Map {1 => "one", 2 => "two"}).not.toEqual(Map {2 => "two", 1 => "one"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Map {[1] => \\"one\\", [2] => \\"two\\", [3] => \\"three\\", [3] => \\"four\\"}).not.toEqual(Map {[3] => \\"three\\", [3] => \\"four\\", [2] => \\"two\\", [1] => \\"one\\"})", + "name": "{pass: true} expect(Map {[1] => "one", [2] => "two", [3] => "three", [3] => "four"}).not.toEqual(Map {[3] => "three", [3] => "four", [2] => "two", [1] => "one"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Map {[1] => Map {[1] => \\"one\\"}, [2] => Map {[2] => \\"two\\"}}).not.toEqual(Map {[2] => Map {[2] => \\"two\\"}, [1] => Map {[1] => \\"one\\"}})", + "name": "{pass: true} expect(Map {[1] => Map {[1] => "one"}, [2] => Map {[2] => "two"}}).not.toEqual(Map {[2] => Map {[2] => "two"}, [1] => Map {[1] => "one"}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Map {[1] => \\"one\\", [2] => \\"two\\"}).not.toEqual(Map {[2] => \\"two\\", [1] => \\"one\\"})", + "name": "{pass: true} expect(Map {[1] => "one", [2] => "two"}).not.toEqual(Map {[2] => "two", [1] => "one"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Map {{\\"a\\": 1} => \\"one\\", {\\"b\\": 2} => \\"two\\"}).not.toEqual(Map {{\\"b\\": 2} => \\"two\\", {\\"a\\": 1} => \\"one\\"})", + "name": "{pass: true} expect(Map {{"a": 1} => "one", {"b": 2} => "two"}).not.toEqual(Map {{"b": 2} => "two", {"a": 1} => "one"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Map {1 => [\\"one\\"], 2 => [\\"two\\"]}).not.toEqual(Map {2 => [\\"two\\"], 1 => [\\"one\\"]})", + "name": "{pass: true} expect(Map {1 => ["one"], 2 => ["two"]}).not.toEqual(Map {2 => ["two"], 1 => ["one"]})", "result": "success", "time": 1, }, @@ -15068,25 +15094,25 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Immutable.Map {1: \\"one\\", 2: \\"two\\"}).not.toEqual(Immutable.Map {1: \\"one\\", 2: \\"two\\"})", + "name": "{pass: true} expect(Immutable.Map {1: "one", 2: "two"}).not.toEqual(Immutable.Map {1: "one", 2: "two"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Immutable.Map {1: \\"one\\", 2: \\"two\\"}).not.toEqual(Immutable.Map {2: \\"two\\", 1: \\"one\\"})", + "name": "{pass: true} expect(Immutable.Map {1: "one", 2: "two"}).not.toEqual(Immutable.Map {2: "two", 1: "one"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Immutable.OrderedMap {1: \\"one\\", 2: \\"two\\"}).not.toEqual(Immutable.OrderedMap {1: \\"one\\", 2: \\"two\\"})", + "name": "{pass: true} expect(Immutable.OrderedMap {1: "one", 2: "two"}).not.toEqual(Immutable.OrderedMap {1: "one", 2: "two"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 99}}}).not.toEqual(Immutable.Map {\\"1\\": Immutable.Map {\\"2\\": {\\"a\\": 99}}})", + "name": "{pass: true} expect(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}}).not.toEqual(Immutable.Map {"1": Immutable.Map {"2": {"a": 99}}})", "result": "success", "time": 1, }, @@ -15098,7 +15124,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 1, \\"b\\": 2}).not.toEqual(ObjectContaining {\\"a\\": 1})", + "name": "{pass: true} expect({"a": 1, "b": 2}).not.toEqual(ObjectContaining {"a": 1})", "result": "success", "time": 0, }, @@ -15110,13 +15136,13 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"abcd\\").not.toEqual(StringContaining \\"bc\\")", + "name": "{pass: true} expect("abcd").not.toEqual(StringContaining "bc")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"abcd\\").not.toEqual(StringMatching /bc/)", + "name": "{pass: true} expect("abcd").not.toEqual(StringMatching /bc/)", "result": "success", "time": 1, }, @@ -15134,19 +15160,19 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 1, \\"b\\": [Function b], \\"c\\": true}).not.toEqual({\\"a\\": 1, \\"b\\": Any, \\"c\\": Anything})", + "name": "{pass: true} expect({"a": 1, "b": [Function b], "c": true}).not.toEqual({"a": 1, "b": Any, "c": Anything})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"Alice\\").not.toEqual({\\"asymmetricMatch\\": [Function asymmetricMatch]})", + "name": "{pass: true} expect("Alice").not.toEqual({"asymmetricMatch": [Function asymmetricMatch]})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"nodeName\\": \\"div\\", \\"nodeType\\": 1}).not.toEqual({\\"nodeName\\": \\"div\\", \\"nodeType\\": 1})", + "name": "{pass: true} expect({"nodeName": "div", "nodeType": 1}).not.toEqual({"nodeName": "div", "nodeType": 1})", "result": "success", "time": 0, }, @@ -15188,7 +15214,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 99n}).not.toEqual({\\"a\\": 99n})", + "name": "{pass: true} expect({"a": 99n}).not.toEqual({"a": 99n})", "result": "success", "time": 0, }, @@ -15226,7 +15252,7 @@ string\\"", }, TestGroupResult { "name": ".toEqual() cyclic object equality", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "properties with the same circularity are equal", @@ -15249,7 +15275,7 @@ string\\"", }, TestGroupResult { "name": ".toBeInstanceOf()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "passing Map {} and [Function Map]", @@ -15300,7 +15326,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "failing \\"a\\" and [Function String]", + "name": "failing "a" and [Function String]", "result": "success", "time": 0, }, @@ -15342,7 +15368,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "failing /\\\\w+/ and [Function anonymous]", + "name": "failing /\\w+/ and [Function anonymous]", "result": "success", "time": 1, }, @@ -15362,7 +15388,7 @@ string\\"", }, TestGroupResult { "name": ".toBeTruthy(), .toBeFalsy()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not accept arguments", @@ -15395,7 +15421,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'\\"a\\"' is truthy", + "name": "'"a"' is truthy", "result": "success", "time": 1, }, @@ -15455,7 +15481,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'\\"\\"' is falsy", + "name": "'""' is falsy", "result": "success", "time": 1, }, @@ -15475,7 +15501,7 @@ string\\"", }, TestGroupResult { "name": ".toBeNaN()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "{pass: true} expect(NaN).toBeNaN()", @@ -15492,7 +15518,7 @@ string\\"", }, TestGroupResult { "name": ".toBeNull()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails for '{}'", @@ -15519,7 +15545,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "fails for '\\"a\\"'", + "name": "fails for '"a"'", "result": "success", "time": 0, }, @@ -15563,7 +15589,7 @@ string\\"", }, TestGroupResult { "name": ".toBeDefined(), .toBeUndefined()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "'{}' is defined", @@ -15590,7 +15616,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'\\"a\\"' is defined", + "name": "'"a"' is defined", "result": "success", "time": 0, }, @@ -15634,7 +15660,7 @@ string\\"", }, TestGroupResult { "name": ".toBeGreaterThan(), .toBeLessThan(), .toBeGreaterThanOrEqual(), .toBeLessThanOrEqual()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "{pass: true} expect(1).toBeLessThan(2)", @@ -16227,7 +16253,7 @@ string\\"", }, TestGroupResult { "name": ".toContain(), .toContainEqual()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "iterable", @@ -16242,7 +16268,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'[\\"a\\", \\"b\\", \\"c\\", \\"d\\"]' contains '\\"a\\"'", + "name": "'["a", "b", "c", "d"]' contains '"a"'", "result": "success", "time": 1, }, @@ -16266,19 +16292,19 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'\\"abcdef\\"' contains '\\"abc\\"'", + "name": "'"abcdef"' contains '"abc"'", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "'\\"11112111\\"' contains '\\"2\\"'", + "name": "'"11112111"' contains '"2"'", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "'Set {\\"abc\\", \\"def\\"}' contains '\\"abc\\"'", + "name": "'Set {"abc", "def"}' contains '"abc"'", "result": "success", "time": 0, }, @@ -16344,7 +16370,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'[\\"a\\", \\"b\\", \\"c\\", \\"d\\"]' contains a value equal to '\\"a\\"'", + "name": "'["a", "b", "c", "d"]' contains a value equal to '"a"'", "result": "success", "time": 0, }, @@ -16368,7 +16394,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'[{\\"a\\": \\"b\\"}, {\\"a\\": \\"c\\"}]' contains a value equal to '{\\"a\\": \\"b\\"}'", + "name": "'[{"a": "b"}, {"a": "c"}]' contains a value equal to '{"a": "b"}'", "result": "success", "time": 1, }, @@ -16386,7 +16412,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "'[{\\"a\\": \\"b\\"}, {\\"a\\": \\"c\\"}]' does not contain a value equal to'{\\"a\\": \\"d\\"}'", + "name": "'[{"a": "b"}, {"a": "c"}]' does not contain a value equal to'{"a": "d"}'", "result": "success", "time": 2, }, @@ -16400,7 +16426,7 @@ string\\"", }, TestGroupResult { "name": ".toBeCloseTo", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "{pass: true} expect(0).toBeCloseTo(0)", @@ -16525,7 +16551,7 @@ string\\"", }, TestGroupResult { "name": ".toBeCloseTo throws: Matcher error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "promise empty isNot false received", @@ -16566,7 +16592,7 @@ string\\"", }, TestGroupResult { "name": ".toMatch()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "{pass: true} expect(foo).toMatch(foo)", @@ -16593,79 +16619,79 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "throws if non String actual value passed: [1, \\"foo\\"]", + "name": "throws if non String actual value passed: [1, "foo"]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String actual value passed: [{}, \\"foo\\"]", + "name": "throws if non String actual value passed: [{}, "foo"]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String actual value passed: [[], \\"foo\\"]", + "name": "throws if non String actual value passed: [[], "foo"]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String actual value passed: [true, \\"foo\\"]", + "name": "throws if non String actual value passed: [true, "foo"]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String actual value passed: [/foo/i, \\"foo\\"]", + "name": "throws if non String actual value passed: [/foo/i, "foo"]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String actual value passed: [[Function anonymous], \\"foo\\"]", + "name": "throws if non String actual value passed: [[Function anonymous], "foo"]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String actual value passed: [undefined, \\"foo\\"]", + "name": "throws if non String actual value passed: [undefined, "foo"]", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "throws if non String/RegExp expected value passed: [\\"foo\\", 1]", + "name": "throws if non String/RegExp expected value passed: ["foo", 1]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String/RegExp expected value passed: [\\"foo\\", {}]", + "name": "throws if non String/RegExp expected value passed: ["foo", {}]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String/RegExp expected value passed: [\\"foo\\", []]", + "name": "throws if non String/RegExp expected value passed: ["foo", []]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String/RegExp expected value passed: [\\"foo\\", true]", + "name": "throws if non String/RegExp expected value passed: ["foo", true]", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "throws if non String/RegExp expected value passed: [\\"foo\\", [Function anonymous]]", + "name": "throws if non String/RegExp expected value passed: ["foo", [Function anonymous]]", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "throws if non String/RegExp expected value passed: [\\"foo\\", undefined]", + "name": "throws if non String/RegExp expected value passed: ["foo", undefined]", "result": "success", "time": 0, }, @@ -16685,7 +16711,7 @@ string\\"", }, TestGroupResult { "name": ".toHaveLength", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "{pass: true} expect([1, 2]).toHaveLength(2)", @@ -16700,19 +16726,19 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect([\\"a\\", \\"b\\"]).toHaveLength(2)", + "name": "{pass: true} expect(["a", "b"]).toHaveLength(2)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"abc\\").toHaveLength(3)", + "name": "{pass: true} expect("abc").toHaveLength(3)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"\\").toHaveLength(0)", + "name": "{pass: true} expect("").toHaveLength(0)", "result": "success", "time": 0, }, @@ -16736,19 +16762,19 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect([\\"a\\", \\"b\\"]).toHaveLength(99)", + "name": "{pass: false} expect(["a", "b"]).toHaveLength(99)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"abc\\").toHaveLength(66)", + "name": "{pass: false} expect("abc").toHaveLength(66)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"\\").toHaveLength(1)", + "name": "{pass: false} expect("").toHaveLength(1)", "result": "success", "time": 1, }, @@ -16762,7 +16788,7 @@ string\\"", }, TestGroupResult { "name": ".toHaveLength matcher error expected length", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "not number", @@ -16797,64 +16823,64 @@ string\\"", }, TestGroupResult { "name": ".toHaveProperty()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": {\\"c\\": {\\"d\\": 1}}}}).toHaveProperty('a.b.c.d', 1)", + "name": "{pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.c.d', 1)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": {\\"c\\": {\\"d\\": 1}}}}).toHaveProperty('a,b,c,d', 1)", + "name": "{pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a,b,c,d', 1)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a.b.c.d\\": 1}).toHaveProperty('a.b.c.d', 1)", + "name": "{pass: true} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d', 1)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": [1, 2, 3]}}).toHaveProperty('a,b,1', 2)", + "name": "{pass: true} expect({"a": {"b": [1, 2, 3]}}).toHaveProperty('a,b,1', 2)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": [1, 2, 3]}}).toHaveProperty('a,b,1', Any)", + "name": "{pass: true} expect({"a": {"b": [1, 2, 3]}}).toHaveProperty('a,b,1', Any)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 0}).toHaveProperty('a', 0)", + "name": "{pass: true} expect({"a": 0}).toHaveProperty('a', 0)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": undefined}}).toHaveProperty('a.b', undefined)", + "name": "{pass: true} expect({"a": {"b": undefined}}).toHaveProperty('a.b', undefined)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {}}).toHaveProperty('a.b', undefined)", + "name": "{pass: true} expect({"a": {}}).toHaveProperty('a.b', undefined)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": {\\"c\\": 5}}}).toHaveProperty('a.b', {\\"c\\": 5})", + "name": "{pass: true} expect({"a": {"b": {"c": 5}}}).toHaveProperty('a.b', {"c": 5})", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"property\\": 1}).toHaveProperty('property', 1)", + "name": "{pass: true} expect({"property": 1}).toHaveProperty('property', 1)", "result": "success", "time": 0, }, @@ -16866,7 +16892,7 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({}).toHaveProperty('b', \\"b\\")", + "name": "{pass: true} expect({}).toHaveProperty('b', "b")", "result": "success", "time": 0, }, @@ -16878,31 +16904,31 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"val\\": true}).toHaveProperty('a', undefined)", + "name": "{pass: true} expect({"val": true}).toHaveProperty('a', undefined)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"val\\": true}).toHaveProperty('c', \\"c\\")", + "name": "{pass: true} expect({"val": true}).toHaveProperty('c', "c")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"val\\": true}).toHaveProperty('val', true)", + "name": "{pass: true} expect({"val": true}).toHaveProperty('val', true)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"nodeName\\": \\"DIV\\"}).toHaveProperty('nodeType', 1)", + "name": "{pass: true} expect({"nodeName": "DIV"}).toHaveProperty('nodeType', 1)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect(\\"\\").toHaveProperty('length', 0)", + "name": "{pass: true} expect("").toHaveProperty('length', 0)", "result": "success", "time": 0, }, @@ -16914,95 +16940,95 @@ string\\"", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": {\\"b\\": {\\"c\\": {\\"d\\": 1}}}}).toHaveProperty('a.b.ttt.d', 1)", + "name": "{pass: false} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.ttt.d', 1)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": {\\"b\\": {\\"c\\": {\\"d\\": 1}}}}).toHaveProperty('a.b.c.d', 2)", + "name": "{pass: false} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.c.d', 2)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a.b.c.d\\": 1}).toHaveProperty('a.b.c.d', 2)", + "name": "{pass: false} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d', 2)", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a.b.c.d\\": 1}).toHaveProperty('a.b.c.d', 2)", + "name": "{pass: false} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d', 2)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"children\\": [\\"\\\\\\"That cartoon\\\\\\"\\"], \\"props\\": null, \\"type\\": \\"p\\"}).toHaveProperty('children,0', \\"\\\\\\"That cat cartoon\\\\\\"\\")", + "name": "{pass: false} expect({"children": ["\\"That cartoon\\""], "props": null, "type": "p"}).toHaveProperty('children,0', "\\"That cat cartoon\\"")", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"children\\": [\\"Roses are red. + "name": "{pass: false} expect({"children": ["Roses are red. Violets are blue. -Testing with Jest is good for you.\\"], \\"props\\": null, \\"type\\": \\"pre\\"}).toHaveProperty('children,0', \\"Roses are red, violets are blue. +Testing with Jest is good for you."], "props": null, "type": "pre"}).toHaveProperty('children,0', "Roses are red, violets are blue. Testing with Jest -Is good for you.\\")", +Is good for you.")", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": {\\"b\\": {\\"c\\": {\\"d\\": 1}}}}).toHaveProperty('a,b,c,d', 2)", + "name": "{pass: false} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a,b,c,d', 2)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": {\\"b\\": {\\"c\\": {}}}}).toHaveProperty('a.b.c.d', 1)", + "name": "{pass: false} expect({"a": {"b": {"c": {}}}}).toHaveProperty('a.b.c.d', 1)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": 1}).toHaveProperty('a.b.c.d', 5)", + "name": "{pass: false} expect({"a": 1}).toHaveProperty('a.b.c.d', 5)", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({}).toHaveProperty('a', \\"test\\")", + "name": "{pass: false} expect({}).toHaveProperty('a', "test")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": {\\"b\\": 3}}).toHaveProperty('a.b', undefined)", + "name": "{pass: false} expect({"a": {"b": 3}}).toHaveProperty('a.b', undefined)", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(1).toHaveProperty('a.b.c', \\"test\\")", + "name": "{pass: false} expect(1).toHaveProperty('a.b.c', "test")", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"abc\\").toHaveProperty('a.b.c', {\\"a\\": 5})", + "name": "{pass: false} expect("abc").toHaveProperty('a.b.c', {"a": 5})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": {\\"b\\": {\\"c\\": 5}}}).toHaveProperty('a.b', {\\"c\\": 4})", + "name": "{pass: false} expect({"a": {"b": {"c": 5}}}).toHaveProperty('a.b', {"c": 4})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({}).toHaveProperty('a', \\"a\\")", + "name": "{pass: false} expect({}).toHaveProperty('a', "a")", "result": "success", "time": 1, }, @@ -17014,49 +17040,49 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": {\\"c\\": {\\"d\\": 1}}}}).toHaveProperty('a.b.c.d')", + "name": "{pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a.b.c.d')", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": {\\"c\\": {\\"d\\": 1}}}}).toHaveProperty('a,b,c,d')", + "name": "{pass: true} expect({"a": {"b": {"c": {"d": 1}}}}).toHaveProperty('a,b,c,d')", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a.b.c.d\\": 1}).toHaveProperty('a.b.c.d')", + "name": "{pass: true} expect({"a.b.c.d": 1}).toHaveProperty('a.b.c.d')", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": [1, 2, 3]}}).toHaveProperty('a,b,1')", + "name": "{pass: true} expect({"a": {"b": [1, 2, 3]}}).toHaveProperty('a,b,1')", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 0}).toHaveProperty('a')", + "name": "{pass: true} expect({"a": 0}).toHaveProperty('a')", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"b\\": undefined}}).toHaveProperty('a.b')", + "name": "{pass: true} expect({"a": {"b": undefined}}).toHaveProperty('a.b')", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": {\\"b\\": {\\"c\\": {}}}}).toHaveProperty('a.b.c.d')", + "name": "{pass: false} expect({"a": {"b": {"c": {}}}}).toHaveProperty('a.b.c.d')", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": 1}).toHaveProperty('a.b.c.d')", + "name": "{pass: false} expect({"a": 1}).toHaveProperty('a.b.c.d')", "result": "success", "time": 0, }, @@ -17074,7 +17100,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"abc\\").toHaveProperty('a.b.c')", + "name": "{pass: false} expect("abc").toHaveProperty('a.b.c')", "result": "success", "time": 0, }, @@ -17092,7 +17118,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect(\\"\\").toHaveProperty('key')", + "name": "{pass: false} expect("").toHaveProperty('key')", "result": "success", "time": 0, }, @@ -17104,7 +17130,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"key\\": 1}).toHaveProperty('not')", + "name": "{pass: false} expect({"key": 1}).toHaveProperty('not')", "result": "success", "time": 0, }, @@ -17122,19 +17148,19 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{error} expect({\\"a\\": {\\"b\\": {}}}).toHaveProperty('undefined')", + "name": "{error} expect({"a": {"b": {}}}).toHaveProperty('undefined')", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{error} expect({\\"a\\": {\\"b\\": {}}}).toHaveProperty('null')", + "name": "{error} expect({"a": {"b": {}}}).toHaveProperty('null')", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{error} expect({\\"a\\": {\\"b\\": {}}}).toHaveProperty('1')", + "name": "{error} expect({"a": {"b": {}}}).toHaveProperty('1')", "result": "success", "time": 0, }, @@ -17148,34 +17174,34 @@ Is good for you.\\")", }, TestGroupResult { "name": "toMatchObject() circular references simple circular references", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"hello\\", \\"ref\\": [Circular]}).toMatchObject({})", + "name": "{pass: true} expect({"a": "hello", "ref": [Circular]}).toMatchObject({})", "result": "success", "time": 3, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"hello\\", \\"ref\\": [Circular]}).toMatchObject({\\"a\\": \\"hello\\", \\"ref\\": [Circular]})", + "name": "{pass: true} expect({"a": "hello", "ref": [Circular]}).toMatchObject({"a": "hello", "ref": [Circular]})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({}).toMatchObject({\\"a\\": \\"hello\\", \\"ref\\": [Circular]})", + "name": "{pass: false} expect({}).toMatchObject({"a": "hello", "ref": [Circular]})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"hello\\", \\"ref\\": [Circular]}).toMatchObject({\\"a\\": \\"world\\", \\"ref\\": [Circular]})", + "name": "{pass: false} expect({"a": "hello", "ref": [Circular]}).toMatchObject({"a": "world", "ref": [Circular]})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"ref\\": \\"not a ref\\"}).toMatchObject({\\"a\\": \\"hello\\", \\"ref\\": [Circular]})", + "name": "{pass: false} expect({"ref": "not a ref"}).toMatchObject({"a": "hello", "ref": [Circular]})", "result": "success", "time": 1, }, @@ -17183,34 +17209,34 @@ Is good for you.\\")", }, TestGroupResult { "name": "toMatchObject() circular references transitive circular references", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"hello\\", \\"nestedObj\\": {\\"parentObj\\": [Circular]}}).toMatchObject({})", + "name": "{pass: true} expect({"a": "hello", "nestedObj": {"parentObj": [Circular]}}).toMatchObject({})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"hello\\", \\"nestedObj\\": {\\"parentObj\\": [Circular]}}).toMatchObject({\\"a\\": \\"hello\\", \\"nestedObj\\": {\\"parentObj\\": [Circular]}})", + "name": "{pass: true} expect({"a": "hello", "nestedObj": {"parentObj": [Circular]}}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({}).toMatchObject({\\"a\\": \\"hello\\", \\"nestedObj\\": {\\"parentObj\\": [Circular]}})", + "name": "{pass: false} expect({}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"world\\", \\"nestedObj\\": {\\"parentObj\\": [Circular]}}).toMatchObject({\\"a\\": \\"hello\\", \\"nestedObj\\": {\\"parentObj\\": [Circular]}})", + "name": "{pass: false} expect({"a": "world", "nestedObj": {"parentObj": [Circular]}}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"nestedObj\\": {\\"parentObj\\": \\"not the parent ref\\"}}).toMatchObject({\\"a\\": \\"hello\\", \\"nestedObj\\": {\\"parentObj\\": [Circular]}})", + "name": "{pass: false} expect({"nestedObj": {"parentObj": "not the parent ref"}}).toMatchObject({"a": "hello", "nestedObj": {"parentObj": [Circular]}})", "result": "success", "time": 1, }, @@ -17218,52 +17244,52 @@ Is good for you.\\")", }, TestGroupResult { "name": "toMatchObject()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\", \\"c\\": \\"d\\"}).toMatchObject({\\"a\\": \\"b\\"})", + "name": "{pass: true} expect({"a": "b", "c": "d"}).toMatchObject({"a": "b"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\", \\"c\\": \\"d\\"}).toMatchObject({\\"a\\": \\"b\\", \\"c\\": \\"d\\"})", + "name": "{pass: true} expect({"a": "b", "c": "d"}).toMatchObject({"a": "b", "c": "d"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\", \\"t\\": {\\"x\\": {\\"r\\": \\"r\\"}, \\"z\\": \\"z\\"}}).toMatchObject({\\"a\\": \\"b\\", \\"t\\": {\\"z\\": \\"z\\"}})", + "name": "{pass: true} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"a": "b", "t": {"z": "z"}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\", \\"t\\": {\\"x\\": {\\"r\\": \\"r\\"}, \\"z\\": \\"z\\"}}).toMatchObject({\\"t\\": {\\"x\\": {\\"r\\": \\"r\\"}}})", + "name": "{pass: true} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"t": {"x": {"r": "r"}}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": [3, 4, 5], \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": [3, 4, 5]})", + "name": "{pass: true} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": [3, 4, 5]})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": [3, 4, 5, \\"v\\"], \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": [3, 4, 5, \\"v\\"]})", + "name": "{pass: true} expect({"a": [3, 4, 5, "v"], "b": "b"}).toMatchObject({"a": [3, 4, 5, "v"]})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 1, \\"c\\": 2}).toMatchObject({\\"a\\": Any})", + "name": "{pass: true} expect({"a": 1, "c": 2}).toMatchObject({"a": Any})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": {\\"x\\": \\"x\\", \\"y\\": \\"y\\"}}).toMatchObject({\\"a\\": {\\"x\\": Any}})", + "name": "{pass: true} expect({"a": {"x": "x", "y": "y"}}).toMatchObject({"a": {"x": Any}})", "result": "success", "time": 0, }, @@ -17287,25 +17313,25 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": 2015-11-30T00:00:00.000Z, \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": 2015-11-30T00:00:00.000Z})", + "name": "{pass: true} expect({"a": 2015-11-30T00:00:00.000Z, "b": "b"}).toMatchObject({"a": 2015-11-30T00:00:00.000Z})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": null, \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": null})", + "name": "{pass: true} expect({"a": null, "b": "b"}).toMatchObject({"a": null})", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": undefined, \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": undefined})", + "name": "{pass: true} expect({"a": undefined, "b": "b"}).toMatchObject({"a": undefined})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": [{\\"a\\": \\"a\\", \\"b\\": \\"b\\"}]}).toMatchObject({\\"a\\": [{\\"a\\": \\"a\\"}]})", + "name": "{pass: true} expect({"a": [{"a": "a", "b": "b"}]}).toMatchObject({"a": [{"a": "a"}]})", "result": "success", "time": 1, }, @@ -17317,7 +17343,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": undefined}).toMatchObject({\\"a\\": undefined})", + "name": "{pass: true} expect({"a": undefined}).toMatchObject({"a": undefined})", "result": "success", "time": 1, }, @@ -17335,109 +17361,109 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect([Error: bar]).toMatchObject({\\"message\\": \\"bar\\"})", + "name": "{pass: true} expect([Error: bar]).toMatchObject({"message": "bar"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({}).toMatchObject({\\"a\\": undefined, \\"b\\": \\"b\\"})", + "name": "{pass: true} expect({}).toMatchObject({"a": undefined, "b": "b"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\"}).toMatchObject({\\"a\\": \\"b\\"})", + "name": "{pass: true} expect({"a": "b"}).toMatchObject({"a": "b"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\", \\"c\\": \\"d\\", Symbol(jest): \\"jest\\"}).toMatchObject({\\"a\\": \\"b\\", Symbol(jest): \\"jest\\"})", + "name": "{pass: true} expect({"a": "b", "c": "d", Symbol(jest): "jest"}).toMatchObject({"a": "b", Symbol(jest): "jest"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\", \\"c\\": \\"d\\", Symbol(jest): \\"jest\\"}).toMatchObject({\\"a\\": \\"b\\", \\"c\\": \\"d\\", Symbol(jest): \\"jest\\"})", + "name": "{pass: true} expect({"a": "b", "c": "d", Symbol(jest): "jest"}).toMatchObject({"a": "b", "c": "d", Symbol(jest): "jest"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({}).toMatchObject({\\"a\\": undefined, \\"b\\": \\"b\\", \\"c\\": \\"c\\"})", + "name": "{pass: true} expect({}).toMatchObject({"a": undefined, "b": "b", "c": "c"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({}).toMatchObject({\\"d\\": 4})", + "name": "{pass: true} expect({}).toMatchObject({"d": 4})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: true} expect({\\"a\\": \\"b\\", \\"toString\\": [Function toString]}).toMatchObject({\\"toString\\": Any})", + "name": "{pass: true} expect({"a": "b", "toString": [Function toString]}).toMatchObject({"toString": Any})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"b\\", \\"c\\": \\"d\\"}).toMatchObject({\\"e\\": \\"b\\"})", + "name": "{pass: false} expect({"a": "b", "c": "d"}).toMatchObject({"e": "b"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"b\\", \\"c\\": \\"d\\"}).toMatchObject({\\"a\\": \\"b!\\", \\"c\\": \\"d\\"})", + "name": "{pass: false} expect({"a": "b", "c": "d"}).toMatchObject({"a": "b!", "c": "d"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"a\\", \\"c\\": \\"d\\"}).toMatchObject({\\"a\\": Any})", + "name": "{pass: false} expect({"a": "a", "c": "d"}).toMatchObject({"a": Any})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"b\\", \\"t\\": {\\"x\\": {\\"r\\": \\"r\\"}, \\"z\\": \\"z\\"}}).toMatchObject({\\"a\\": \\"b\\", \\"t\\": {\\"z\\": [3]}})", + "name": "{pass: false} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"a": "b", "t": {"z": [3]}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"b\\", \\"t\\": {\\"x\\": {\\"r\\": \\"r\\"}, \\"z\\": \\"z\\"}}).toMatchObject({\\"t\\": {\\"l\\": {\\"r\\": \\"r\\"}}})", + "name": "{pass: false} expect({"a": "b", "t": {"x": {"r": "r"}, "z": "z"}}).toMatchObject({"t": {"l": {"r": "r"}}})", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": [3, 4, 5], \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": [3, 4, 5, 6]})", + "name": "{pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": [3, 4, 5, 6]})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": [3, 4, 5], \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": [3, 4]})", + "name": "{pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": [3, 4]})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": [3, 4, \\"v\\"], \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": [\\"v\\"]})", + "name": "{pass: false} expect({"a": [3, 4, "v"], "b": "b"}).toMatchObject({"a": ["v"]})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": [3, 4, 5], \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": {\\"b\\": 4}})", + "name": "{pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": {"b": 4}})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": [3, 4, 5], \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": {\\"b\\": Any}})", + "name": "{pass: false} expect({"a": [3, 4, 5], "b": "b"}).toMatchObject({"a": {"b": Any}})", "result": "success", "time": 1, }, @@ -17467,43 +17493,43 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": 2015-11-30T00:00:00.000Z, \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": 2015-10-10T00:00:00.000Z})", + "name": "{pass: false} expect({"a": 2015-11-30T00:00:00.000Z, "b": "b"}).toMatchObject({"a": 2015-10-10T00:00:00.000Z})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": null, \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": \\"4\\"})", + "name": "{pass: false} expect({"a": null, "b": "b"}).toMatchObject({"a": "4"})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": null, \\"b\\": \\"b\\"}).toMatchObject({\\"a\\": undefined})", + "name": "{pass: false} expect({"a": null, "b": "b"}).toMatchObject({"a": undefined})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": undefined}).toMatchObject({\\"a\\": null})", + "name": "{pass: false} expect({"a": undefined}).toMatchObject({"a": null})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": [{\\"a\\": \\"a\\", \\"b\\": \\"b\\"}]}).toMatchObject({\\"a\\": [{\\"a\\": \\"c\\"}]})", + "name": "{pass: false} expect({"a": [{"a": "a", "b": "b"}]}).toMatchObject({"a": [{"a": "c"}]})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": 1, \\"b\\": 1, \\"c\\": 1, \\"d\\": {\\"e\\": {\\"f\\": 555}}}).toMatchObject({\\"d\\": {\\"e\\": {\\"f\\": 222}}})", + "name": "{pass: false} expect({"a": 1, "b": 1, "c": 1, "d": {"e": {"f": 555}}}).toMatchObject({"d": {"e": {"f": 222}}})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({}).toMatchObject({\\"a\\": undefined})", + "name": "{pass: false} expect({}).toMatchObject({"a": undefined})", "result": "success", "time": 0, }, @@ -17527,19 +17553,19 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"b\\"}).toMatchObject({\\"c\\": \\"d\\"})", + "name": "{pass: false} expect({"a": "b"}).toMatchObject({"c": "d"})", "result": "success", "time": 4, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"b\\", \\"c\\": \\"d\\", Symbol(jest): \\"jest\\"}).toMatchObject({\\"a\\": \\"c\\", Symbol(jest): Any})", + "name": "{pass: false} expect({"a": "b", "c": "d", Symbol(jest): "jest"}).toMatchObject({"a": "c", Symbol(jest): Any})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "{pass: false} expect({\\"a\\": \\"b\\"}).toMatchObject({\\"toString\\": Any})", + "name": "{pass: false} expect({"a": "b"}).toMatchObject({"toString": Any})", "result": "success", "time": 0, }, @@ -17557,7 +17583,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "throws expect(\\"44\\").toMatchObject({})", + "name": "throws expect("44").toMatchObject({})", "result": "success", "time": 0, }, @@ -17587,7 +17613,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "throws expect({}).toMatchObject(\\"some string\\")", + "name": "throws expect({}).toMatchObject("some string")", "result": "success", "time": 0, }, @@ -17616,10 +17642,10 @@ Is good for you.\\")", "totalTime": 862, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "understands dependencies using jest.requireActual", @@ -17633,10 +17659,10 @@ Is good for you.\\")", "totalTime": 1665, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Watch mode flows", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Correctly passing test path pattern", @@ -18029,43 +18055,43 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "Pressing \\"o\\" runs test in \\"only changed files\\" mode", + "name": "Pressing "o" runs test in "only changed files" mode", "result": "success", "time": 69, }, TestCaseResult { "error": undefined, - "name": "Pressing \\"a\\" runs test in \\"watch all\\" mode", + "name": "Pressing "a" runs test in "watch all" mode", "result": "success", "time": 62, }, TestCaseResult { "error": undefined, - "name": "Pressing \\"ENTER\\" reruns the tests", + "name": "Pressing "ENTER" reruns the tests", "result": "success", "time": 108, }, TestCaseResult { "error": undefined, - "name": "Pressing \\"t\\" reruns the tests in \\"test name pattern\\" mode", + "name": "Pressing "t" reruns the tests in "test name pattern" mode", "result": "success", "time": 93, }, TestCaseResult { "error": undefined, - "name": "Pressing \\"p\\" reruns the tests in \\"filename pattern\\" mode", + "name": "Pressing "p" reruns the tests in "filename pattern" mode", "result": "success", "time": 80, }, TestCaseResult { "error": undefined, - "name": "Can combine \\"p\\" and \\"t\\" filters", + "name": "Can combine "p" and "t" filters", "result": "success", "time": 68, }, TestCaseResult { "error": undefined, - "name": "Pressing \\"u\\" reruns the tests in \\"update snapshot\\" mode", + "name": "Pressing "u" reruns the tests in "update snapshot" mode", "result": "success", "time": 67, }, @@ -18077,7 +18103,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "shows the correct usage for the f key in \\"only failed tests\\" mode", + "name": "shows the correct usage for the f key in "only failed tests" mode", "result": "success", "time": 62, }, @@ -18085,7 +18111,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Watch mode flows when dealing with potential watch plugin key conflicts", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "forbids WatchPlugins overriding reserved internal plugins", @@ -18129,10 +18155,10 @@ Is good for you.\\")", "totalTime": 6755, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "transitive dependencies", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "mocks a manually mocked and mapped module", @@ -18176,10 +18202,10 @@ Is good for you.\\")", "totalTime": 2366, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Watch mode flows with changed files", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should correct require new files without legacy cache", @@ -18193,10 +18219,10 @@ Is good for you.\\")", "totalTime": 1514, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "HasteMap", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "exports constants", @@ -18301,7 +18327,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "throws on duplicate module ids if \\"throwOnModuleCollision\\" is set to true", + "name": "throws on duplicate module ids if "throwOnModuleCollision" is set to true", "result": "success", "time": 5, }, @@ -18387,7 +18413,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "HasteMap builds a haste map on a fresh cache with SHA-1s", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses watchman: false", @@ -18404,7 +18430,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "HasteMap duplicate modules", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "recovers when a duplicate file is deleted", @@ -18427,7 +18453,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "HasteMap file system changes processing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "provides a new set of hasteHS and moduleMap", @@ -18462,7 +18488,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "HasteMap file system changes processing recovery from duplicate module IDs", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "recovers when the oldest version of the duplicates is fixed", @@ -18488,10 +18514,10 @@ Is good for you.\\")", "totalTime": 1145, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "code coverage for Handlebars", @@ -18505,10 +18531,10 @@ Is good for you.\\")", "totalTime": 1873, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not crash when expect involving a DOM node fails", @@ -18522,10 +18548,10 @@ Is good for you.\\")", "totalTime": 1407, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "check is not leaking memory", @@ -18539,10 +18565,10 @@ Is good for you.\\")", "totalTime": 1744, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resolve platform modules", @@ -18556,10 +18582,10 @@ Is good for you.\\")", "totalTime": 1863, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Snapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "stores new snapshots on the first run", @@ -18588,7 +18614,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Snapshot Validation", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not save snapshots in CI mode by default", @@ -18626,10 +18652,10 @@ Is good for you.\\")", "totalTime": 13899, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "mocks modules by default when using automocking", @@ -18694,7 +18720,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "resetModules", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resets all the modules", @@ -18705,7 +18731,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "isolateModules", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "keeps it's registry isolated from global one", @@ -18740,7 +18766,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "isolateModules can use isolateModules from a beforeEach block", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "can use the required module from beforeEach and re-require it", @@ -18754,10 +18780,10 @@ Is good for you.\\")", "totalTime": 1223, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime requireMock", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses manual mocks before attempting to automock", @@ -18843,10 +18869,10 @@ Is good for you.\\")", "totalTime": 962, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses NODE_PATH to find modules", @@ -18878,10 +18904,10 @@ Is good for you.\\")", "totalTime": 1088, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime require.resolve", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resolves a module path", @@ -18898,7 +18924,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Runtime require.resolve with the jest-resolve-outside-vm-option", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "forwards to the real Node require in an internal context", @@ -18924,10 +18950,10 @@ Is good for you.\\")", "totalTime": 707, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "complains if the value is a primitive", @@ -18971,10 +18997,10 @@ Is good for you.\\")", "totalTime": 986, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "async jasmine with pending during test", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not work on jest-circus", @@ -18994,10 +19020,10 @@ Is good for you.\\")", "totalTime": 72, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "config for reporters supports \`default\`", @@ -19053,10 +19079,10 @@ Is good for you.\\")", "totalTime": 520, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "expect works correctly with RegExps created inside a VM", @@ -19070,10 +19096,10 @@ Is good for you.\\")", "totalTime": 1527, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime requireActual", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "requires node module when manual mock exists", @@ -19093,10 +19119,10 @@ Is good for you.\\")", "totalTime": 478, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime require.cache", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "require.cache returns loaded module list as native Nodejs require does", @@ -19116,10 +19142,10 @@ Is good for you.\\")", "totalTime": 454, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses configured moduleDirectories", @@ -19151,10 +19177,10 @@ Is good for you.\\")", "totalTime": 525, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime internalModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "loads modules and applies transforms", @@ -19186,10 +19212,10 @@ Is good for you.\\")", "totalTime": 727, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "check", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns true if the arguments are valid", @@ -19240,31 +19266,31 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "allows using \\"js\\" file for --config option", + "name": "allows using "js" file for --config option", "result": "success", "time": 10, }, TestCaseResult { "error": undefined, - "name": "allows using \\"ts\\" file for --config option", + "name": "allows using "ts" file for --config option", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "allows using \\"mjs\\" file for --config option", + "name": "allows using "mjs" file for --config option", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "allows using \\"cjs\\" file for --config option", + "name": "allows using "cjs" file for --config option", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "allows using \\"json\\" file for --config option", + "name": "allows using "json" file for --config option", "result": "success", "time": 0, }, @@ -19290,7 +19316,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "buildArgv", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return only camelcased args", @@ -19304,10 +19330,10 @@ Is good for you.\\")", "totalTime": 345, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime jest.spyOn", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls the original function", @@ -19318,7 +19344,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Runtime jest.spyOnProperty", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls the original function", @@ -19332,10 +19358,10 @@ Is good for you.\\")", "totalTime": 521, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resolves no dependencies for non-existent path", @@ -19409,10 +19435,10 @@ Is good for you.\\")", "totalTime": 666, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should exclude jasmine from stack trace for Unix paths.", @@ -19465,7 +19491,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "formatStackTrace", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints code frame and stacktrace", @@ -19491,10 +19517,10 @@ Is good for you.\\")", "totalTime": 205, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "different types", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "'1' and 'a'", @@ -19529,10 +19555,10 @@ Is good for you.\\")", }, TestGroupResult { "name": "no visual difference", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "'\\"a\\"' and '\\"a\\"'", + "name": "'"a"' and '"a"'", "result": "success", "time": 2, }, @@ -19598,13 +19624,13 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "'{\\"a\\":1}' and '{\\"a\\":1}'", + "name": "'{"a":1}' and '{"a":1}'", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "'{\\"a\\":{\\"b\\":5}}' and '{\\"a\\":{\\"b\\":5}}'", + "name": "'{"a":{"b":5}}' and '{"a":{"b":5}}'", "result": "success", "time": 0, }, @@ -19624,7 +19650,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "oneline strings", @@ -19659,7 +19685,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "falls back to not call toJSON if serialization has no differences", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "but then objects have differences", @@ -19676,7 +19702,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "falls back to not call toJSON if it throws", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "and then objects have differences", @@ -19693,7 +19719,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "multiline strings", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19710,7 +19736,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "objects", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19727,7 +19753,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "multiline string non-snapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19744,7 +19770,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "multiline string snapshot", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19761,7 +19787,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "React elements", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19778,7 +19804,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "multiline string as value of object property (non-snapshot)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19795,7 +19821,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "multiline string as value of object property (snapshot)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19812,7 +19838,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "indentation in JavaScript structures from less to more", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19829,7 +19855,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "indentation in JavaScript structures from more to less", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19846,7 +19872,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "color of text", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(expanded)", @@ -19863,7 +19889,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "indentation in React elements (non-snapshot) from less to more", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19880,7 +19906,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "indentation in React elements (non-snapshot) from more to less", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19897,7 +19923,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "indentation in React elements (snapshot) from less to more", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19914,7 +19940,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "indentation in React elements (snapshot) from more to less", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19931,7 +19957,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "outer React element (non-snapshot) from less to more", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19948,7 +19974,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "outer React element (non-snapshot) from more to less", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19965,7 +19991,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "trailing newline in multiline string not enclosed in quotes from less to more", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19982,7 +20008,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "trailing newline in multiline string not enclosed in quotes from more to less", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "(unexpanded)", @@ -19999,7 +20025,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "context", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "number of lines: -1 (5 default)", @@ -20040,7 +20066,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "diffLinesUnified edge cases", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "a empty string b empty string", @@ -20069,7 +20095,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "diffLinesUnified2 edge cases", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "a empty string b empty string", @@ -20098,7 +20124,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "diffLinesUnified2 edge cases lengths not equal", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "a", @@ -20115,7 +20141,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "diffStringsUnified edge cases", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "empty both a and b", @@ -20156,7 +20182,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options 7980", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diff", @@ -20173,7 +20199,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options change indicators", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diff", @@ -20184,7 +20210,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options change color", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diffStringsUnified", @@ -20201,7 +20227,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options common", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diff", @@ -20218,7 +20244,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options includeChangeCounts false", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diffLinesUnified", @@ -20235,7 +20261,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options includeChangeCounts true padding", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diffLinesUnified a has 2 digits", @@ -20258,7 +20284,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options omitAnnotationLines true", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diff", @@ -20281,7 +20307,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options trailingSpaceFormatter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diffDefault default no color", @@ -20304,7 +20330,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "options emptyFirstOrLastLinePlaceholder default empty string", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "diffDefault", @@ -20324,13 +20350,13 @@ Is good for you.\\")", "totalTime": 625, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Watch mode flows", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "Pressing \\"T\\" enters pattern mode", + "name": "Pressing "T" enters pattern mode", "result": "success", "time": 8, }, @@ -20341,10 +20367,10 @@ Is good for you.\\")", "totalTime": 246, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "toBeCalled", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -20385,7 +20411,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveBeenCalled", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -20426,7 +20452,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toBeCalledTimes", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": ".not works only on spies or jest.fn", @@ -20473,7 +20499,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveBeenCalledTimes", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": ".not works only on spies or jest.fn", @@ -20520,7 +20546,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "lastCalledWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -20597,7 +20623,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveBeenLastCalledWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -20674,7 +20700,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "nthCalledWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -20763,7 +20789,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveBeenNthCalledWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -20852,7 +20878,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toBeCalledWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -20929,7 +20955,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveBeenCalledWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -21006,7 +21032,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toReturn", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": ".not works only on jest.fn", @@ -21083,7 +21109,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveReturned", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": ".not works only on jest.fn", @@ -21160,7 +21186,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toReturnTimes", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throw matcher error if received is spy", @@ -21231,7 +21257,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveReturnedTimes", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throw matcher error if received is spy", @@ -21302,7 +21328,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "lastReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -21385,7 +21411,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "lastReturnedWith lastReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with three calls", @@ -21402,7 +21428,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveLastReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -21485,7 +21511,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveLastReturnedWith lastReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with three calls", @@ -21502,7 +21528,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "nthReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -21585,7 +21611,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "nthReturnedWith nthReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with three calls", @@ -21632,7 +21658,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveNthReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -21715,7 +21741,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveNthReturnedWith nthReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with three calls", @@ -21762,7 +21788,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toReturnWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -21845,7 +21871,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toReturnWith returnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with more calls than the limit", @@ -21862,7 +21888,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveReturnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works only on spies or jest.fn", @@ -21945,7 +21971,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toHaveReturnedWith returnedWith", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with more calls than the limit", @@ -21965,10 +21991,10 @@ Is good for you.\\")", "totalTime": 395, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "gets hg SCM roots and dedupes them", @@ -22007,12 +22033,12 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "handles a bad revision for \\"changedSince\\", for git", + "name": "handles a bad revision for "changedSince", for git", "result": "success", "time": 878, }, TestCaseResult { - "error": Object { + "error": { "details": "Error: abort: empty revision range at makeError (/home/dorny/dorny/jest/node_modules/execa/lib/error.js:59:11) at handlePromise (/home/dorny/dorny/jest/node_modules/execa/index.js:114:26) @@ -22039,7 +22065,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "handles a bad revision for \\"changedSince\\", for hg", + "name": "handles a bad revision for "changedSince", for hg", "result": "success", "time": 949, }, @@ -22050,10 +22076,10 @@ Is good for you.\\")", "totalTime": 9045, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "stringify()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "[]", @@ -22098,7 +22124,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "\\"abc\\"", + "name": ""abc"", "result": "success", "time": 0, }, @@ -22128,7 +22154,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "/ab\\\\.c/gi", + "name": "/ab\\.c/gi", "result": "success", "time": 0, }, @@ -22172,7 +22198,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "ensureNumbers()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "dont throw error when variables are numbers", @@ -22195,7 +22221,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "ensureNumbers() with options", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "promise empty isNot false received", @@ -22236,7 +22262,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "ensureNoExpected()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "dont throw error when undefined", @@ -22259,7 +22285,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "diff", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "forwards to jest-diff", @@ -22288,7 +22314,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "pluralize()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "one", @@ -22311,7 +22337,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "getLabelPrinter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "0 args", @@ -22358,7 +22384,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "matcherHint", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "expectedColor", @@ -22384,19 +22410,19 @@ Is good for you.\\")", "totalTime": 391, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Watch mode flows", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "Pressing \\"P\\" enters pattern mode", + "name": "Pressing "P" enters pattern mode", "result": "success", "time": 7, }, TestCaseResult { "error": undefined, - "name": "Pressing \\"c\\" clears the filters", + "name": "Pressing "c" clears the filters", "result": "success", "time": 1, }, @@ -22407,10 +22433,10 @@ Is good for you.\\")", "totalTime": 165, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime createMockFromModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not cause side effects in the rest of the module system when generating a mock", @@ -22427,7 +22453,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Runtime", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "creates mock objects in the right environment", @@ -22441,10 +22467,10 @@ Is good for you.\\")", "totalTime": 606, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime requireModule", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "emulates a node stack trace during module load", @@ -22464,10 +22490,10 @@ Is good for you.\\")", "totalTime": 497, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "watchman crawler and node crawler both include dotfiles", @@ -22481,10 +22507,10 @@ Is good for you.\\")", "totalTime": 337, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "watchman watch", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns a list of all files when there are no clocks", @@ -22540,10 +22566,10 @@ Is good for you.\\")", "totalTime": 153, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "FakeTimers construction", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "installs setTimeout mock", @@ -22596,7 +22622,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers runAllTicks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs all ticks, in order", @@ -22655,7 +22681,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers runAllTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs all timers in order", @@ -22708,7 +22734,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers advanceTimersByTime", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs timers in order", @@ -22731,7 +22757,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers advanceTimersToNextTimer", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs timers in order", @@ -22760,7 +22786,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers reset", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resets all pending setTimeouts", @@ -22789,7 +22815,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers runOnlyPendingTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs all timers in order", @@ -22806,7 +22832,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers runWithRealTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "executes callback with native timers", @@ -22829,7 +22855,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers useRealTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resets native timer APIs", @@ -22852,7 +22878,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers useFakeTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resets mock timer APIs", @@ -22875,7 +22901,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers getTimerCount", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the correct count", @@ -22901,10 +22927,10 @@ Is good for you.\\")", "totalTime": 302, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime jest.fn", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "creates mock functions", @@ -22921,7 +22947,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Runtime jest.isMockFunction", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "recognizes a mocked function", @@ -22932,7 +22958,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Runtime jest.clearAllMocks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "clears all mocks", @@ -22946,10 +22972,10 @@ Is good for you.\\")", "totalTime": 479, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "toStrictEqual", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be reflexive", @@ -22966,7 +22992,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "toStrictEqual on node >=9", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be equivalent to Node deepStrictEqual", @@ -22980,10 +23006,10 @@ Is good for you.\\")", "totalTime": 394, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be reflexive", @@ -23033,10 +23059,10 @@ Is good for you.\\")", "totalTime": 357, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "FakeTimers construction", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "installs setTimeout mock", @@ -23083,7 +23109,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers runAllTicks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs all ticks, in order", @@ -23112,7 +23138,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers runAllTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs all timers in order", @@ -23165,7 +23191,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers advanceTimersByTime", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs timers in order", @@ -23182,7 +23208,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers advanceTimersToNextTimer", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs timers in order", @@ -23211,7 +23237,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers reset", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resets all pending setTimeouts", @@ -23240,7 +23266,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers runOnlyPendingTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs all timers in order", @@ -23257,7 +23283,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers useRealTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resets native timer APIs", @@ -23280,7 +23306,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers useFakeTimers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resets mock timer APIs", @@ -23303,7 +23329,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "FakeTimers getTimerCount", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the correct count", @@ -23329,10 +23355,10 @@ Is good for you.\\")", "totalTime": 317, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "toContain", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should always find the value when inside the array", @@ -23352,10 +23378,10 @@ Is good for you.\\")", "totalTime": 236, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime wrapCodeInModuleWrapper", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "generates the correct args for the module wrapper", @@ -23364,7 +23390,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "injects \\"extra globals\\"", + "name": "injects "extra globals"", "result": "success", "time": 43, }, @@ -23375,10 +23401,10 @@ Is good for you.\\")", "totalTime": 263, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "toContainEqual", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should always find the value when inside the array", @@ -23398,10 +23424,10 @@ Is good for you.\\")", "totalTime": 287, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "invalid arg length", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is not a number", @@ -23442,7 +23468,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "invalid arg callback", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "null is not a function", @@ -23459,7 +23485,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "input callback encapsulates comparison zero and negative zero", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "are not common according to Object.is method", @@ -23476,7 +23502,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "input callback encapsulates comparison Not a Number", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is common according to Object.is method", @@ -23493,7 +23519,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "input callback encapsulates sequences", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "arrays of strings", @@ -23516,7 +23542,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "no common items negative zero is equivalent to zero for length", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "of a", @@ -23539,7 +23565,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "no common items", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "a empty and b empty", @@ -23562,7 +23588,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "no common items a non-empty and b non-empty", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "baDeltaLength 0 even", @@ -23591,7 +23617,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "only common items", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "length 1", @@ -23608,7 +23634,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "all common items outside", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "preceding changes", @@ -23631,7 +23657,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "some common items inside and outside", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "preceding changes adjacent to common in both sequences", @@ -23648,7 +23674,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "all common items inside non-recursive", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "move from start to end relative to change", @@ -23689,7 +23715,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "all common items inside recursive", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prev reverse at depth 1 and preceding at depth 2", @@ -23736,7 +23762,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "common substrings", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "progress", @@ -23762,10 +23788,10 @@ Is good for you.\\")", "totalTime": 195, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": ".getType()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "null", @@ -23857,10 +23883,10 @@ Is good for you.\\")", "totalTime": 45, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { - "name": "init project with package.json and no jest config all questions answered with answer: \\"No\\"", - "tests": Array [ + "name": "init project with package.json and no jest config all questions answered with answer: "No"", + "tests": [ TestCaseResult { "error": undefined, "name": "should return the default configuration (an empty config)", @@ -23876,8 +23902,8 @@ Is good for you.\\")", ], }, TestGroupResult { - "name": "init project with package.json and no jest config some questions answered with answer: \\"Yes\\"", - "tests": Array [ + "name": "init project with package.json and no jest config some questions answered with answer: "Yes"", + "tests": [ TestCaseResult { "error": undefined, "name": "should create configuration for {clearMocks: true}", @@ -23892,25 +23918,25 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "should create configuration for {coverageProvider: \\"babel\\"}", + "name": "should create configuration for {coverageProvider: "babel"}", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should create configuration for {coverageProvider: \\"v8\\"}", + "name": "should create configuration for {coverageProvider: "v8"}", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should create configuration for {environment: \\"jsdom\\"}", + "name": "should create configuration for {environment: "jsdom"}", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should create configuration for {environment: \\"node\\"}", + "name": "should create configuration for {environment: "node"}", "result": "success", "time": 1, }, @@ -23924,7 +23950,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "init no package json", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw an error if there is no package.json file", @@ -23935,16 +23961,16 @@ Is good for you.\\")", }, TestGroupResult { "name": "init has-jest-config-file-js ask the user whether to override config or not", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "user answered with \\"Yes\\"", + "name": "user answered with "Yes"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "user answered with \\"No\\"", + "name": "user answered with "No"", "result": "success", "time": 0, }, @@ -23952,16 +23978,16 @@ Is good for you.\\")", }, TestGroupResult { "name": "init has-jest-config-file-ts ask the user whether to override config or not", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "user answered with \\"Yes\\"", + "name": "user answered with "Yes"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "user answered with \\"No\\"", + "name": "user answered with "No"", "result": "success", "time": 0, }, @@ -23969,16 +23995,16 @@ Is good for you.\\")", }, TestGroupResult { "name": "init has-jest-config-file-mjs ask the user whether to override config or not", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "user answered with \\"Yes\\"", + "name": "user answered with "Yes"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "user answered with \\"No\\"", + "name": "user answered with "No"", "result": "success", "time": 1, }, @@ -23986,16 +24012,16 @@ Is good for you.\\")", }, TestGroupResult { "name": "init has-jest-config-file-cjs ask the user whether to override config or not", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "user answered with \\"Yes\\"", + "name": "user answered with "Yes"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "user answered with \\"No\\"", + "name": "user answered with "No"", "result": "success", "time": 1, }, @@ -24003,16 +24029,16 @@ Is good for you.\\")", }, TestGroupResult { "name": "init has-jest-config-file-json ask the user whether to override config or not", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "user answered with \\"Yes\\"", + "name": "user answered with "Yes"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "user answered with \\"No\\"", + "name": "user answered with "No"", "result": "success", "time": 0, }, @@ -24020,16 +24046,16 @@ Is good for you.\\")", }, TestGroupResult { "name": "init project using jest.config.ts ask the user whether he wants to use Typescript or not", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "user answered with \\"Yes\\"", + "name": "user answered with "Yes"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "user answered with \\"No\\"", + "name": "user answered with "No"", "result": "success", "time": 1, }, @@ -24037,7 +24063,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "init has jest config in package.json", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should ask the user whether to override config or not", @@ -24047,11 +24073,11 @@ Is good for you.\\")", ], }, TestGroupResult { - "name": "init already has \\"jest\\" in packageJson.scripts.test", - "tests": Array [ + "name": "init already has "jest" in packageJson.scripts.test", + "tests": [ TestCaseResult { "error": undefined, - "name": "should not ask \\"test script question\\"", + "name": "should not ask "test script question"", "result": "success", "time": 0, }, @@ -24062,10 +24088,10 @@ Is good for you.\\")", "totalTime": 119, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime requireModule with no extension", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws error pointing out file with extension", @@ -24079,10 +24105,10 @@ Is good for you.\\")", "totalTime": 261, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the same value for primitive or function values", @@ -24162,10 +24188,10 @@ Is good for you.\\")", "totalTime": 86, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with jest.config.js", @@ -24179,10 +24205,10 @@ Is good for you.\\")", "totalTime": 138, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "creates a process object that looks like the original one", @@ -24191,7 +24217,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "fakes require(\\"process\\") so it is equal to \\"global.process\\"", + "name": "fakes require("process") so it is equal to "global.process"", "result": "success", "time": 0, }, @@ -24214,10 +24240,10 @@ Is good for you.\\")", "totalTime": 81, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "instruments files", @@ -24231,10 +24257,10 @@ Is good for you.\\")", "totalTime": 275, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "runJest", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "when watch is set then exit process", @@ -24254,10 +24280,10 @@ Is good for you.\\")", "totalTime": 261, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Replaceable constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "init with object", @@ -24286,7 +24312,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Replaceable get", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "get object item", @@ -24309,7 +24335,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Replaceable set", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "set object item", @@ -24332,7 +24358,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Replaceable forEach", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "object forEach", @@ -24361,7 +24387,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "Replaceable isReplaceable", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return true if two object types equal and support", @@ -24387,10 +24413,10 @@ Is good for you.\\")", "totalTime": 111, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to milliseconds", @@ -24464,10 +24490,10 @@ Is good for you.\\")", "totalTime": 82, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Jest Worker Process Integration", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls a single method from the worker", @@ -24511,10 +24537,10 @@ Is good for you.\\")", "totalTime": 114, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "worker", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "parses JavaScript files and extracts module information", @@ -24564,10 +24590,10 @@ Is good for you.\\")", "totalTime": 100, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "printDiffOrStringify", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "expected is empty and received is single line", @@ -24614,7 +24640,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "printDiffOrStringify MAX_DIFF_STRING_LENGTH", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "both are less", @@ -24637,7 +24663,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "printDiffOrStringify asymmetricMatcher", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "minimal test", @@ -24711,10 +24737,10 @@ Is good for you.\\")", "totalTime": 114, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getPath()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "property exists", @@ -24761,22 +24787,22 @@ Is good for you.\\")", }, TestGroupResult { "name": "getObjectSubset", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "expect(getObjectSubset({\\"a\\": \\"b\\", \\"c\\": \\"d\\"}, {\\"a\\": \\"d\\"})).toEqual({\\"a\\": \\"b\\"})", + "name": "expect(getObjectSubset({"a": "b", "c": "d"}, {"a": "d"})).toEqual({"a": "b"})", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "expect(getObjectSubset({\\"a\\": [1, 2], \\"b\\": \\"b\\"}, {\\"a\\": [3, 4]})).toEqual({\\"a\\": [1, 2]})", + "name": "expect(getObjectSubset({"a": [1, 2], "b": "b"}, {"a": [3, 4]})).toEqual({"a": [1, 2]})", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "expect(getObjectSubset([{\\"a\\": \\"b\\", \\"c\\": \\"d\\"}], [{\\"a\\": \\"z\\"}])).toEqual([{\\"a\\": \\"b\\"}])", + "name": "expect(getObjectSubset([{"a": "b", "c": "d"}], [{"a": "z"}])).toEqual([{"a": "b"}])", "result": "success", "time": 1, }, @@ -24788,7 +24814,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "expect(getObjectSubset({\\"a\\": [1]}, {\\"a\\": [1, 2]})).toEqual({\\"a\\": [1]})", + "name": "expect(getObjectSubset({"a": [1]}, {"a": [1, 2]})).toEqual({"a": [1]})", "result": "success", "time": 0, }, @@ -24802,7 +24828,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "getObjectSubset returns the object instance if the subset has no extra properties", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Date", @@ -24813,7 +24839,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "getObjectSubset returns the subset instance if its property values are equal", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Object", @@ -24824,7 +24850,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "getObjectSubset returns the subset instance if its property values are equal Uint8Array", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "expected", @@ -24841,7 +24867,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "getObjectSubset calculating subsets of objects with circular references", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "simple circular references", @@ -24858,7 +24884,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "emptyObject()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "matches an empty object", @@ -24881,7 +24907,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "subsetEquality()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "matching object returns true", @@ -24916,7 +24942,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "subsetEquality() matching subsets with circular references", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "simple circular references", @@ -24939,7 +24965,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "iterableEquality", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns true when given circular iterators", @@ -25013,10 +25039,10 @@ Is good for you.\\")", "totalTime": 147, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the same value for primitive or function values", @@ -25090,10 +25116,10 @@ Is good for you.\\")", "totalTime": 49, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "isError", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not assume objects are errors", @@ -25125,10 +25151,10 @@ Is good for you.\\")", "totalTime": 43, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": ".isPrimitive()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns true when given primitive value of: null", @@ -25227,7 +25253,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "returns false when given non primitive value of: \\"2021-01-24T19:22:19.272Z\\"", + "name": "returns false when given non primitive value of: "2021-01-24T19:22:19.272Z"", "result": "success", "time": 0, }, @@ -25244,10 +25270,10 @@ Is good for you.\\")", "totalTime": 36, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "node crawler", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "crawls for files based on patterns", @@ -25280,7 +25306,7 @@ Is good for you.\\")", }, TestCaseResult { "error": undefined, - "name": "uses node fs APIs if \\"forceNodeFilesystemAPI\\" is set to true, regardless of platform", + "name": "uses node fs APIs if "forceNodeFilesystemAPI" is set to true, regardless of platform", "result": "success", "time": 6, }, @@ -25300,7 +25326,7 @@ Is good for you.\\")", }, TestGroupResult { "name": "node crawler readdir withFileTypes support", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls lstat for directories and symlinks if readdir withFileTypes is not supported", @@ -25320,13 +25346,13 @@ Is good for you.\\")", "totalTime": 170, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "run for \\"onlyChanged\\" and \\"changedSince\\"", + "name": "run for "onlyChanged" and "changedSince"", "result": "success", "time": 1464, }, @@ -25367,14 +25393,14 @@ Is good for you.\\")", "time": 7023, }, TestCaseResult { - "error": Object { + "error": { "details": "Error: expect(received).toMatch(expected) -Expected pattern: /PASS __tests__(\\\\/|\\\\\\\\)file2.test.js/ -Received string: \\"· +Expected pattern: /PASS __tests__(\\/|\\\\)file2.test.js/ +Received string: "· ● Test suite failed to run· abort: empty revision range -\\" +" at Object.toMatch (/home/dorny/dorny/jest/e2e/__tests__/onlyChanged.test.ts:360:18) at Promise.then.completed (/home/dorny/dorny/jest/packages/jest-circus/build/utils.js:307:28) at new Promise () @@ -25405,10 +25431,10 @@ Received string: \\"· "totalTime": 22281, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "joinAlignedDiffsExpand", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "first line is empty common", @@ -25419,7 +25445,7 @@ Received string: \\"· }, TestGroupResult { "name": "joinAlignedDiffsNoExpand", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "patch 0 with context 1 and change at start and end", @@ -25457,10 +25483,10 @@ Received string: \\"· "totalTime": 44, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "SnapshotInteractiveMode", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is inactive at construction", @@ -25546,10 +25572,10 @@ Received string: \\"· "totalTime": 89, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime statics", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Runtime.createHasteMap passes correct ignore files to HasteMap", @@ -25569,10 +25595,10 @@ Received string: \\"· "totalTime": 162, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getAlignedDiffs lines", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "change preceding and following common", @@ -25607,7 +25633,7 @@ Received string: \\"· }, TestGroupResult { "name": "getAlignedDiffs newline", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "delete only", @@ -25648,7 +25674,7 @@ Received string: \\"· }, TestGroupResult { "name": "getAlignedDiffs substrings first", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "common when both current change lines are empty", @@ -25677,7 +25703,7 @@ Received string: \\"· }, TestGroupResult { "name": "getAlignedDiffs substrings middle", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is empty in delete between common", @@ -25706,7 +25732,7 @@ Received string: \\"· }, TestGroupResult { "name": "getAlignedDiffs substrings last", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is empty in delete at end", @@ -25729,7 +25755,7 @@ Received string: \\"· }, TestGroupResult { "name": "getAlignedDiffs strings", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "change at start and delete or insert at end", @@ -25749,10 +25775,10 @@ Received string: \\"· "totalTime": 72, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": ".assertions()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not throw", @@ -25775,7 +25801,7 @@ Received string: \\"· }, TestGroupResult { "name": ".hasAssertions()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not throw if there is an assertion", @@ -25801,10 +25827,10 @@ Received string: \\"· "totalTime": 60, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getPlatformExtension", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should get platform ext", @@ -25818,10 +25844,10 @@ Received string: \\"· "totalTime": 35, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "isRegExpSupported", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return true when passing valid regular expression", @@ -25841,10 +25867,10 @@ Received string: \\"· "totalTime": 31, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "stack trace points to correct location when using matchers", @@ -25870,10 +25896,10 @@ Received string: \\"· "totalTime": 69, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Jest Worker Integration", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls a single method from the worker", @@ -25911,10 +25937,10 @@ Received string: \\"· "totalTime": 62, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "is valid when it is a file inside roots", @@ -25940,10 +25966,10 @@ Received string: \\"· "totalTime": 166, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ErrorWithStack", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls Error.captureStackTrace with given callsite when capture exists", @@ -25957,10 +25983,10 @@ Received string: \\"· "totalTime": 41, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Returns true when running on interactive environment", @@ -25980,10 +26006,10 @@ Received string: \\"· "totalTime": 35, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "diffStringsRaw", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "one-line with cleanup", @@ -26003,10 +26029,10 @@ Received string: \\"· "totalTime": 55, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works like micromatch with only positive globs", @@ -26038,10 +26064,10 @@ Received string: \\"· "totalTime": 56, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "shouldRunInBand() - should return true for runInBand mode", @@ -26121,10 +26147,10 @@ Received string: \\"· "totalTime": 48, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the passed object", @@ -26144,10 +26170,10 @@ Received string: \\"· "totalTime": 68, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getMockName", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "extracts mock name from file path", @@ -26161,10 +26187,10 @@ Received string: \\"· "totalTime": 22, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "WorkerPool", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should create a ChildProcessWorker and send to it", @@ -26190,10 +26216,10 @@ Received string: \\"· "totalTime": 51, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "dependencyExtractor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not extract dependencies inside comments", @@ -26291,10 +26317,10 @@ Received string: \\"· "totalTime": 56, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "normalizePathSep", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does nothing on posix", @@ -26314,10 +26340,10 @@ Received string: \\"· "totalTime": 35, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "fastPath.relative", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should get relative paths inside the root", @@ -26340,7 +26366,7 @@ Received string: \\"· }, TestGroupResult { "name": "fastPath.resolve", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should get the absolute path for paths inside the root", @@ -26360,10 +26386,10 @@ Received string: \\"· "totalTime": 29, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "FailedTestsCache", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should filter tests", @@ -26377,10 +26403,10 @@ Received string: \\"· "totalTime": 25, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "getNoTestsFoundMessage", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns correct message when monitoring only failures", @@ -26418,10 +26444,10 @@ Received string: \\"· "totalTime": 61, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Common globals", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "check process", @@ -26435,10 +26461,10 @@ Received string: \\"· "totalTime": 22, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints the jest version", @@ -26464,10 +26490,10 @@ Received string: \\"· "totalTime": 48, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "not a Promise: ", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "undefined", @@ -26494,7 +26520,7 @@ Received string: \\"· }, TestCaseResult { "error": undefined, - "name": "\\"1337\\"", + "name": ""1337"", "result": "success", "time": 0, }, @@ -26520,7 +26546,7 @@ Received string: \\"· }, TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "a resolved Promise", @@ -26540,10 +26566,10 @@ Received string: \\"· "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should remove jest config if exists", @@ -26575,10 +26601,10 @@ Received string: \\"· "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Symbol in objects", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should compare objects with Symbol keys", @@ -26604,10 +26630,10 @@ Received string: \\"· "totalTime": 33, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "stub", @@ -26621,10 +26647,10 @@ Received string: \\"· "totalTime": 37, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "stub", @@ -26638,10 +26664,10 @@ Received string: \\"· "totalTime": 19, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "dummy-test", @@ -26655,10 +26681,10 @@ Received string: \\"· "totalTime": 31, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should copy dom element", @@ -26678,10 +26704,10 @@ Received string: \\"· "totalTime": 48, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "on node ^12.16.0 || >=13.7.0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs TS test with native ESM", @@ -26695,10 +26721,10 @@ Received string: \\"· "totalTime": 956, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "maps code coverage against original source", @@ -26712,10 +26738,10 @@ Received string: \\"· "totalTime": 12701, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "globalTeardown is triggered once after all test suites", @@ -26765,10 +26791,10 @@ Received string: \\"· "totalTime": 11886, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "--listTests doesn't duplicate the test files", @@ -26783,7 +26809,7 @@ Received string: \\"· }, TestCaseResult { "error": undefined, - "name": "\\"No tests found\\" message for projects", + "name": ""No tests found" message for projects", "result": "success", "time": 977, }, @@ -26845,7 +26871,7 @@ Received string: \\"· }, TestGroupResult { "name": "doesn't bleed module file extensions resolution with multiple workers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "external config files", @@ -26865,10 +26891,10 @@ Received string: \\"· "totalTime": 16360, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "basic support", @@ -26930,10 +26956,10 @@ Received string: \\"· "totalTime": 17025, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints message about flag on slow tests", @@ -26968,7 +26994,7 @@ Received string: \\"· }, TestGroupResult { "name": "on node >=11.10.0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not report ELD histograms", @@ -26979,7 +27005,7 @@ Received string: \\"· }, TestGroupResult { "name": "notify", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not report --notify flag", @@ -26990,7 +27016,7 @@ Received string: \\"· }, TestGroupResult { "name": "on node >=11", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not report timeouts using unref", @@ -27004,10 +27030,10 @@ Received string: \\"· "totalTime": 7528, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "not throwing Error objects", @@ -27057,10 +27083,10 @@ Received string: \\"· "totalTime": 10353, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "console printing", @@ -27110,10 +27136,10 @@ Received string: \\"· "totalTime": 8071.999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "basic test constructs", @@ -27181,10 +27207,10 @@ Received string: \\"· "totalTime": 7505, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "exits with 1 if coverage threshold is not met", @@ -27222,10 +27248,10 @@ Received string: \\"· "totalTime": 4868, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints a message with path pattern at the end", @@ -27239,10 +27265,10 @@ Received string: \\"· "totalTime": 3076, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Dynamic test filtering", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses the default JSON option", @@ -27292,10 +27318,10 @@ Received string: \\"· "totalTime": 5422, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Given a config with two named projects, first-project and second-project when Jest is started with \`--selectProjects first-project\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs the tests in the first project only", @@ -27312,7 +27338,7 @@ Received string: \\"· }, TestGroupResult { "name": "Given a config with two named projects, first-project and second-project when Jest is started with \`--selectProjects second-project\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs the tests in the second project only", @@ -27329,7 +27355,7 @@ Received string: \\"· }, TestGroupResult { "name": "Given a config with two named projects, first-project and second-project when Jest is started with \`--selectProjects first-project second-project\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs the tests in the first and second projects", @@ -27346,7 +27372,7 @@ Received string: \\"· }, TestGroupResult { "name": "Given a config with two named projects, first-project and second-project when Jest is started without providing \`--selectProjects\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs the tests in the first and second projects", @@ -27363,7 +27389,7 @@ Received string: \\"· }, TestGroupResult { "name": "Given a config with two named projects, first-project and second-project when Jest is started with \`--selectProjects third-project\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails", @@ -27380,7 +27406,7 @@ Received string: \\"· }, TestGroupResult { "name": "Given a config with two projects, first-project and an unnamed project when Jest is started with \`--selectProjects first-project\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs the tests in the first project only", @@ -27403,7 +27429,7 @@ Received string: \\"· }, TestGroupResult { "name": "Given a config with two projects, first-project and an unnamed project when Jest is started without providing \`--selectProjects\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs the tests in the first and second projects", @@ -27420,7 +27446,7 @@ Received string: \\"· }, TestGroupResult { "name": "Given a config with two projects, first-project and an unnamed project when Jest is started with \`--selectProjects third-project\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails", @@ -27446,10 +27472,10 @@ Received string: \\"· "totalTime": 5236, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "suite without mock name, mock called", @@ -27505,10 +27531,10 @@ Received string: \\"· "totalTime": 6771, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Stack Trace", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints a stack trace for runtime errors", @@ -27558,10 +27584,10 @@ Received string: \\"· "totalTime": 4725, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with passing tests", @@ -27611,10 +27637,10 @@ Received string: \\"· "totalTime": 4721, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works fine when function throws error", @@ -27646,10 +27672,10 @@ Received string: \\"· "totalTime": 3562, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not re-run tests when only access time is modified", @@ -27663,10 +27689,10 @@ Received string: \\"· "totalTime": 4370, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "successfully runs the tests inside \`pnp/\`", @@ -27680,10 +27706,10 @@ Received string: \\"· "totalTime": 2715, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "errors if describe returns a Promise", @@ -27709,10 +27735,10 @@ Received string: \\"· "totalTime": 2389, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Wrong globals for environment", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "print useful error for window", @@ -27750,10 +27776,10 @@ Received string: \\"· "totalTime": 3877, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "setupFilesAfterEnv", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "requires multiple setup files before each file in the suite", @@ -27773,10 +27799,10 @@ Received string: \\"· "totalTime": 1967, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "No tests are found", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails the test suite in standard situation", @@ -27814,10 +27840,10 @@ Received string: \\"· "totalTime": 2739, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with custom matchers", @@ -27837,10 +27863,10 @@ Received string: \\"· "totalTime": 1539, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "print correct error message with nested test definitions outside describe", @@ -27872,10 +27898,10 @@ Received string: \\"· "totalTime": 4641, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "suite with auto-clear", @@ -27895,10 +27921,10 @@ Received string: \\"· "totalTime": 1681, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "exits the process after test are done but before timers complete", @@ -27912,10 +27938,10 @@ Received string: \\"· "totalTime": 2208, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "exits with a specified code when test fail", @@ -27935,10 +27961,10 @@ Received string: \\"· "totalTime": 4476, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "", @@ -27952,10 +27978,10 @@ Received string: \\"· "totalTime": 967, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "run timers after resetAllMocks test", @@ -27975,10 +28001,10 @@ Received string: \\"· "totalTime": 1878, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "triggers setup/teardown hooks", @@ -27992,10 +28018,10 @@ Received string: \\"· "totalTime": 1493, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "show error message with matching files", @@ -28015,10 +28041,10 @@ Received string: \\"· "totalTime": 1263, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with nested event loops", @@ -28032,10 +28058,10 @@ Received string: \\"· "totalTime": 1422, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "no tests found message is redirected to stderr", @@ -28049,10 +28075,10 @@ Received string: \\"· "totalTime": 1352, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work without error", @@ -28066,10 +28092,10 @@ Received string: \\"· "totalTime": 1361, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "console printing", @@ -28083,10 +28109,10 @@ Received string: \\"· "totalTime": 1341, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs tests in only test.js and spec.js", @@ -28100,10 +28126,10 @@ Received string: \\"· "totalTime": 1008.9999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "\`require.main\` on using \`jest.isolateModules\` should not be undefined", @@ -28117,10 +28143,10 @@ Received string: \\"· "totalTime": 976, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "jest --clearCache", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "normal run results in cache directory being written", @@ -28140,10 +28166,10 @@ Received string: \\"· "totalTime": 1004, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runtime Internal Module Registry", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "correctly makes use of internal module registry when requiring modules", @@ -28157,10 +28183,10 @@ Received string: \\"· "totalTime": 1202, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "resolve node module", @@ -28174,10 +28200,10 @@ Received string: \\"· "totalTime": 943, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "setImmediate", @@ -28191,10 +28217,10 @@ Received string: \\"· "totalTime": 904, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "JSON Reporter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails the test suite if it contains no tests", @@ -28208,10 +28234,10 @@ Received string: \\"· "totalTime": 885, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "suite with test cases that contain malformed sourcemaps", @@ -28225,13 +28251,13 @@ Received string: \\"· "totalTime": 858, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "useRealTimers cancels \\"timers\\": \\"fake\\" for whole test file", + "name": "useRealTimers cancels "timers": "fake" for whole test file", "result": "success", "time": 986, }, @@ -28242,10 +28268,10 @@ Received string: \\"· "totalTime": 1018, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "can redefine global", @@ -28259,10 +28285,10 @@ Received string: \\"· "totalTime": 40, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "run Jest programmatically cjs", @@ -28282,10 +28308,10 @@ Received string: \\"· "totalTime": 575, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Symbol deletion", @@ -28299,10 +28325,10 @@ Received string: \\"· "totalTime": 49, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not warn when a mock file changes", @@ -28316,10 +28342,10 @@ Received string: \\"· "totalTime": 379, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "error when rootDir does not exist", @@ -28351,10 +28377,10 @@ Received string: \\"· "totalTime": 627, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "\`done()\` works properly in hooks", @@ -28368,10 +28394,10 @@ Received string: \\"· "totalTime": 855, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls asynchronous handleTestEvent in testEnvironment", @@ -28385,10 +28411,10 @@ Received string: \\"· "totalTime": 1507, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "moduleNameMapper wrong configuration", @@ -28426,10 +28452,10 @@ Received string: \\"· "totalTime": 5395, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Custom Reporters Integration", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "valid string format for adding reporters", @@ -28491,10 +28517,10 @@ Received string: \\"· "totalTime": 6553, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "--findRelatedTests flag", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs tests related to filename", @@ -28532,10 +28558,10 @@ Received string: \\"· "totalTime": 6230, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Environment override", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses jsdom when specified", @@ -28564,7 +28590,7 @@ Received string: \\"· }, TestGroupResult { "name": "Environment equivalent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses jsdom", @@ -28584,10 +28610,10 @@ Received string: \\"· "totalTime": 5221, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "globalSetup is triggered once before all test suites", @@ -28655,10 +28681,10 @@ Received string: \\"· "totalTime": 13926, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints a warning if a worker is force exited", @@ -28678,10 +28704,10 @@ Received string: \\"· "totalTime": 4751, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "successfully runs the tests inside \`babel-plugin-jest-hoist/\`", @@ -28695,10 +28721,10 @@ Received string: \\"· "totalTime": 6249, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "code coverage for transform instrumented code", @@ -28712,10 +28738,10 @@ Received string: \\"· "totalTime": 5029, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not work on jest-circus", @@ -28747,10 +28773,10 @@ Received string: \\"· "totalTime": 71, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "successfully transpiles async", @@ -28764,10 +28790,10 @@ Received string: \\"· "totalTime": 4127, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works fine when function throws error", @@ -28805,10 +28831,10 @@ Received string: \\"· "totalTime": 3524, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with all statuses", @@ -28846,10 +28872,10 @@ Received string: \\"· "totalTime": 3573, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "onlyFailures flag works in non-watch mode", @@ -28863,10 +28889,10 @@ Received string: \\"· "totalTime": 2893, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports json preset", @@ -28886,10 +28912,10 @@ Received string: \\"· "totalTime": 1966, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with passing tests", @@ -28909,10 +28935,10 @@ Received string: \\"· "totalTime": 2732, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "babel-jest", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs transpiled code", @@ -28929,7 +28955,7 @@ Received string: \\"· }, TestGroupResult { "name": "babel-jest ignored", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "tells user to match ignored files", @@ -28940,7 +28966,7 @@ Received string: \\"· }, TestGroupResult { "name": "babel-jest with manual transformer", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs transpiled code", @@ -28951,7 +28977,7 @@ Received string: \\"· }, TestGroupResult { "name": "no babel-jest", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails with syntax error on flow types", @@ -28968,7 +28994,7 @@ Received string: \\"· }, TestGroupResult { "name": "custom transformer", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "proprocesses files", @@ -28985,7 +29011,7 @@ Received string: \\"· }, TestGroupResult { "name": "multiple-transformers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "transforms dependencies using specific transformers", @@ -28996,7 +29022,7 @@ Received string: \\"· }, TestGroupResult { "name": "ecmascript-modules-support", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs transpiled code", @@ -29007,7 +29033,7 @@ Received string: \\"· }, TestGroupResult { "name": "transformer-config", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs transpiled code", @@ -29024,7 +29050,7 @@ Received string: \\"· }, TestGroupResult { "name": "transformer caching", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not rerun transform within worker", @@ -29035,7 +29061,7 @@ Received string: \\"· }, TestGroupResult { "name": "transform-environment", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should transform the environment", @@ -29046,7 +29072,7 @@ Received string: \\"· }, TestGroupResult { "name": "transform-runner", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should transform runner", @@ -29057,7 +29083,7 @@ Received string: \\"· }, TestGroupResult { "name": "transform-testrunner", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should transform testRunner", @@ -29071,10 +29097,10 @@ Received string: \\"· "totalTime": 26740, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "chai assertion errors should display properly", @@ -29088,10 +29114,10 @@ Received string: \\"· "totalTime": 1902, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "processes stack traces and code frames with source maps with coverage", @@ -29105,10 +29131,10 @@ Received string: \\"· "totalTime": 2444, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "run prioritySequence first sync", @@ -29134,10 +29160,10 @@ Received string: \\"· "totalTime": 2757, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Correct BeforeAll run", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ensures the BeforeAll of ignored suite is not run", @@ -29151,10 +29177,10 @@ Received string: \\"· "totalTime": 958, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Fake promises", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be possible to resolve with fake timers using immediates", @@ -29174,10 +29200,10 @@ Received string: \\"· "totalTime": 1716, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "processes stack traces and code frames with source maps", @@ -29191,10 +29217,10 @@ Received string: \\"· "totalTime": 2185, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "successfully runs tests with dynamic dependencies", @@ -29208,10 +29234,10 @@ Received string: \\"· "totalTime": 847, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "overriding native promise does not freeze Jest", @@ -29231,10 +29257,10 @@ Received string: \\"· "totalTime": 2045.9999999999998, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Tests are executed only once even in an MPR", @@ -29248,10 +29274,10 @@ Received string: \\"· "totalTime": 976, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "module.parent should be null in test files", @@ -29265,10 +29291,10 @@ Received string: \\"· "totalTime": 886, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints useful error for requires after test is done", @@ -29282,10 +29308,10 @@ Received string: \\"· "totalTime": 921, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "suite with invalid assertions in afterAll", @@ -29299,10 +29325,10 @@ Received string: \\"· "totalTime": 861, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "exits the process after test are done but before timers complete", @@ -29316,10 +29342,10 @@ Received string: \\"· "totalTime": 298, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "JSON is available in the global scope", @@ -29339,10 +29365,10 @@ Received string: \\"· "totalTime": 29, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testNamePattern", @@ -29356,10 +29382,10 @@ Received string: \\"· "totalTime": 910, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "jest --debug", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "outputs debugging info before running the test", @@ -29373,10 +29399,10 @@ Received string: \\"· "totalTime": 899, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "imported globals", @@ -29390,10 +29416,10 @@ Received string: \\"· "totalTime": 1043, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "use the custom resolver", @@ -29407,10 +29433,10 @@ Received string: \\"· "totalTime": 826, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "handles circular inequality properly", @@ -29424,10 +29450,10 @@ Received string: \\"· "totalTime": 1451, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "globals are undefined if passed \`false\` from CLI", @@ -29447,10 +29473,10 @@ Received string: \\"· "totalTime": 1860, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "correctly skip \`beforeAll\`s in skipped tests", @@ -29464,10 +29490,10 @@ Received string: \\"· "totalTime": 1061, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with custom inline snapshot matchers", @@ -29481,10 +29507,10 @@ Received string: \\"· "totalTime": 2206, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Regex Char In Path", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "parses paths containing regex chars correctly", @@ -29498,10 +29524,10 @@ Received string: \\"· "totalTime": 962, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Coverage Report", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "outputs coverage report", @@ -29512,7 +29538,7 @@ Received string: \\"· }, TestGroupResult { "name": "File path not found in mulit-project scenario", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "outputs coverage report", @@ -29526,10 +29552,10 @@ Received string: \\"· "totalTime": 1063, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "test config is without transform", @@ -29540,7 +29566,7 @@ Received string: \\"· }, TestGroupResult { "name": "on node ^12.16.0 || >=13.7.0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs test with native ESM", @@ -29551,7 +29577,7 @@ Received string: \\"· }, TestGroupResult { "name": "on node >=14.3.0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports top-level await", @@ -29565,10 +29591,10 @@ Received string: \\"· "totalTime": 905, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with passing tests", @@ -29588,10 +29614,10 @@ Received string: \\"· "totalTime": 968, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should transform linked modules", @@ -29605,10 +29631,10 @@ Received string: \\"· "totalTime": 783, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testNamePattern", @@ -29622,10 +29648,10 @@ Received string: \\"· "totalTime": 859, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "mocks async functions", @@ -29639,10 +29665,10 @@ Received string: \\"· "totalTime": 55, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "reports the correct file size", @@ -29662,10 +29688,10 @@ Received string: \\"· "totalTime": 397, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defining tests and hooks asynchronously throws", @@ -29679,10 +29705,10 @@ Received string: \\"· "totalTime": 869, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls testEnvironment handleTestEvent", @@ -29696,10 +29722,10 @@ Received string: \\"· "totalTime": 1501, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "\`done()\` should not be called more than once", @@ -29713,10 +29739,10 @@ Received string: \\"· "totalTime": 882, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "hook in empty describe", @@ -29748,10 +29774,10 @@ Received string: \\"· "totalTime": 2886, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not work on jest-circus", @@ -29909,10 +29935,10 @@ Received string: \\"· "totalTime": 56, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Test Retries", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "retries failed tests", @@ -29944,10 +29970,10 @@ Received string: \\"· "totalTime": 3277, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with jest.config.ts", @@ -29985,10 +30011,10 @@ Received string: \\"· "totalTime": 14322, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "outputs coverage report", @@ -30068,10 +30094,10 @@ Received string: \\"· "totalTime": 22264, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "basic support", @@ -30151,10 +30177,10 @@ Received string: \\"· "totalTime": 23917, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "renders correctly", @@ -30186,10 +30212,10 @@ Received string: \\"· "totalTime": 8559, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with a single snapshot", @@ -30215,10 +30241,10 @@ Received string: \\"· "totalTime": 4670, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "exceeds the timeout", @@ -30250,10 +30276,10 @@ Received string: \\"· "totalTime": 4029, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "empty external", @@ -30279,10 +30305,10 @@ Received string: \\"· "totalTime": 3544, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "async jasmine", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with beforeAll", @@ -30380,10 +30406,10 @@ Received string: \\"· "totalTime": 28291, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "config as JSON", @@ -30427,10 +30453,10 @@ Received string: \\"· "totalTime": 3945, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "fails a test that terminates the worker with a fatal error", @@ -30444,10 +30470,10 @@ Received string: \\"· "totalTime": 3167, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with a single snapshot", @@ -30467,19 +30493,19 @@ Received string: \\"· "totalTime": 4435, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "can press \\"p\\" to filter by file name", + "name": "can press "p" to filter by file name", "result": "success", "time": 1471, }, TestCaseResult { "error": undefined, - "name": "can press \\"t\\" to filter by test name", + "name": "can press "t" to filter by test name", "result": "success", "time": 1775, }, @@ -30490,10 +30516,10 @@ Received string: \\"· "totalTime": 3503, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "triggers unexpected token error message for non-JS assets", @@ -30519,10 +30545,10 @@ Received string: \\"· "totalTime": 3411, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "understands dependencies using jest.requireMock", @@ -30536,10 +30562,10 @@ Received string: \\"· "totalTime": 2119, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "instruments and collects coverage for typescript files", @@ -30553,10 +30579,10 @@ Received string: \\"· "totalTime": 2893, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with jest.config.js", @@ -30582,10 +30608,10 @@ Received string: \\"· "totalTime": 2134, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "\`require.main\` on using \`--resetModules='true'\` should not be undefined", @@ -30605,10 +30631,10 @@ Received string: \\"· "totalTime": 1961, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "modern implementation of fake timers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be possible to use modern implementation from config", @@ -30628,10 +30654,10 @@ Received string: \\"· "totalTime": 1680, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "runs tests by exact path", @@ -30645,10 +30671,10 @@ Received string: \\"· "totalTime": 1999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "respects testEnvironment docblock", @@ -30662,10 +30688,10 @@ Received string: \\"· "totalTime": 1628, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with concurrent.each", @@ -30685,10 +30711,10 @@ Received string: \\"· "totalTime": 1591, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "suite with auto-restore", @@ -30708,10 +30734,10 @@ Received string: \\"· "totalTime": 1797, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "JSON Reporter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "writes test result to sum.result.json", @@ -30731,10 +30757,10 @@ Received string: \\"· "totalTime": 1514, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "suite with auto-reset", @@ -30754,13 +30780,13 @@ Received string: \\"· "totalTime": 1666, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "runs only \\"it.only\\" tests", + "name": "runs only "it.only" tests", "result": "success", "time": 834, }, @@ -30771,13 +30797,13 @@ Received string: \\"· "totalTime": 888, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "can press \\"f\\" to run only failed tests", + "name": "can press "f" to run only failed tests", "result": "success", "time": 1341, }, @@ -30788,10 +30814,10 @@ Received string: \\"· "totalTime": 1394, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not work on jest-circus", @@ -30802,7 +30828,7 @@ Received string: \\"· }, TestGroupResult { "name": "Correct beforeEach order", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "ensures the correct order for beforeEach", @@ -30816,10 +30842,10 @@ Received string: \\"· "totalTime": 55, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with injected globals", @@ -30833,10 +30859,10 @@ Received string: \\"· "totalTime": 1010.9999999999999, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Snapshot serializers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "renders snapshot", @@ -30856,10 +30882,10 @@ Received string: \\"· "totalTime": 2065, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "defaults to null for location", @@ -30879,10 +30905,10 @@ Received string: \\"· "totalTime": 1764, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints console.logs when run with forceExit", @@ -30896,10 +30922,10 @@ Received string: \\"· "totalTime": 793, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not require project modules from inside node_modules", @@ -30913,10 +30939,10 @@ Received string: \\"· "totalTime": 833, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "produces code coverage for uncovered files without transformer", @@ -30930,10 +30956,10 @@ Received string: \\"· "totalTime": 1075, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "CLI accepts exact file names if matchers matched", @@ -30953,10 +30979,10 @@ Received string: \\"· "totalTime": 1230, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "on node >=12.2.0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "\`require.main\` not undefined after createRequire", @@ -30970,10 +30996,10 @@ Received string: \\"· "totalTime": 966, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "jest.resetModules should not error when _isMockFunction is defined but not boolean", @@ -30987,13 +31013,13 @@ Received string: \\"· "totalTime": 926, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "can press \\"u\\" to update snapshots", + "name": "can press "u" to update snapshots", "result": "success", "time": 993, }, @@ -31004,10 +31030,10 @@ Received string: \\"· "totalTime": 1075, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "mock works with generator", @@ -31021,10 +31047,10 @@ Received string: \\"· "totalTime": 1027, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "require.resolve.paths", @@ -31038,10 +31064,10 @@ Received string: \\"· "totalTime": 1155, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints coverage with missing sourcemaps", @@ -31061,10 +31087,10 @@ Received string: \\"· "totalTime": 2412, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "require.resolve with paths", @@ -31078,10 +31104,10 @@ Received string: \\"· "totalTime": 1170, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "logs memory usage", @@ -31095,10 +31121,10 @@ Received string: \\"· "totalTime": 884, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "provides \`require.main\` set to test suite module", @@ -31112,10 +31138,10 @@ Received string: \\"· "totalTime": 1137, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "store snapshot even if fs is mocked", @@ -31129,10 +31155,10 @@ Received string: \\"· "totalTime": 883, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Snapshot serializers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "renders snapshot", @@ -31146,10 +31172,10 @@ Received string: \\"· "totalTime": 838, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "AppComponent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should create the app", @@ -31175,10 +31201,10 @@ Received string: \\"· "totalTime": 654, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints a usable stack trace even if no Error.captureStackTrace", @@ -31192,10 +31218,10 @@ Received string: \\"· "totalTime": 899, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "testNamePattern skipped", @@ -31209,10 +31235,10 @@ Received string: \\"· "totalTime": 991, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "that the failureDetails property is set", @@ -31226,10 +31252,10 @@ Received string: \\"· "totalTime": 907, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Custom snapshot resolver", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Resolves snapshot files using custom resolver", @@ -31243,10 +31269,10 @@ Received string: \\"· "totalTime": 823, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints stack trace pointing to process.exit call", @@ -31260,10 +31286,10 @@ Received string: \\"· "totalTime": 1070, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "supports NODE_PATH", @@ -31277,10 +31303,10 @@ Received string: \\"· "totalTime": 866, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Verbose Reporter", @@ -31294,10 +31320,10 @@ Received string: \\"· "totalTime": 683, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "--listTests flag", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "causes tests to be printed in different lines", @@ -31317,10 +31343,10 @@ Received string: \\"· "totalTime": 945, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "allows retrieving the current domain", @@ -31334,10 +31360,10 @@ Received string: \\"· "totalTime": 908, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "CheckboxWithLabel changes the text after click", @@ -31351,10 +31377,10 @@ Received string: \\"· "totalTime": 469, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Service: DataService", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should create service", @@ -31374,10 +31400,10 @@ Received string: \\"· "totalTime": 431, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "prints useful error for environment methods after test is done", @@ -31391,10 +31417,10 @@ Received string: \\"· "totalTime": 892, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "reads config from cjs file", @@ -31405,7 +31431,7 @@ Received string: \\"· }, TestGroupResult { "name": "on node ^12.17.0 || >=13.2.0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "reads config from mjs file", @@ -31425,10 +31451,10 @@ Received string: \\"· "totalTime": 526, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "CheckboxWithLabel changes the text after click", @@ -31442,10 +31468,10 @@ Received string: \\"· "totalTime": 434, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "define mock per test", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "uses mocked module", @@ -31465,10 +31491,10 @@ Received string: \\"· "totalTime": 116, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should aggregate docs from collection", @@ -31482,10 +31508,10 @@ Received string: \\"· "totalTime": 236, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "renders correctly", @@ -31517,10 +31543,10 @@ Received string: \\"· "totalTime": 181, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "CheckboxWithLabel changes the text after click", @@ -31534,10 +31560,10 @@ Received string: \\"· "totalTime": 227, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "CheckboxWithLabel changes the text after click", @@ -31551,10 +31577,10 @@ Received string: \\"· "totalTime": 256, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "--showConfig outputs config info and exits", @@ -31568,10 +31594,10 @@ Received string: \\"· "totalTime": 195, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "renders correctly", @@ -31585,10 +31611,10 @@ Received string: \\"· "totalTime": 62, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "schedules a 10-second timer after 1 second", @@ -31602,10 +31628,10 @@ Received string: \\"· "totalTime": 94, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "calls into $.ajax with the correct params", @@ -31625,10 +31651,10 @@ Received string: \\"· "totalTime": 196, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "displays a user after a click", @@ -31642,10 +31668,10 @@ Received string: \\"· "totalTime": 196, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "timerGame", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "waits 1 second before ending the game", @@ -31671,10 +31697,10 @@ Received string: \\"· "totalTime": 74, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "works with resolves", @@ -31730,10 +31756,10 @@ Received string: \\"· "totalTime": 96, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "implementation created by automock", @@ -31753,10 +31779,10 @@ Received string: \\"· "totalTime": 115, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "listFilesInDirectorySync", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "includes all files in the directory in the summary", @@ -31770,10 +31796,10 @@ Received string: \\"· "totalTime": 87, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "calc - mocks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns result from subtract", @@ -31817,10 +31843,10 @@ Received string: \\"· "totalTime": 276, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds 1 + 2 to equal 3", @@ -31834,10 +31860,10 @@ Received string: \\"· "totalTime": 78, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Service: SubService", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should create service", @@ -31851,10 +31877,10 @@ Received string: \\"· "totalTime": 109, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "if orginal user model", @@ -31868,10 +31894,10 @@ Received string: \\"· "totalTime": 41, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds 1 + 2 to equal 3 in TScript", @@ -31891,10 +31917,10 @@ Received string: \\"· "totalTime": 69, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "if utils are mocked", @@ -31914,10 +31940,10 @@ Received string: \\"· "totalTime": 74, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "if lodash head is mocked", @@ -31931,10 +31957,10 @@ Received string: \\"· "totalTime": 109, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "if user model is mocked", @@ -31948,10 +31974,10 @@ Received string: \\"· "totalTime": 105, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds 1 + 2 to equal 3 in Typescript", @@ -31971,10 +31997,10 @@ Received string: \\"· "totalTime": 100, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "b", @@ -31988,10 +32014,10 @@ Received string: \\"· "totalTime": 21, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "subtracts 5 - 1 to equal 4 in TypeScript", @@ -32005,10 +32031,10 @@ Received string: \\"· "totalTime": 43, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does a full mock", @@ -32022,10 +32048,10 @@ Received string: \\"· "totalTime": 60, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "globals are properly defined", @@ -32039,10 +32065,10 @@ Received string: \\"· "totalTime": 31, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "original implementation", @@ -32056,10 +32082,10 @@ Received string: \\"· "totalTime": 24, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "timers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work before calling resetAllMocks", @@ -32079,10 +32105,10 @@ Received string: \\"· "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "v8 module", @@ -32096,10 +32122,10 @@ Received string: \\"· "totalTime": 30, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "timers", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work before calling resetAllMocks", @@ -32113,10 +32139,10 @@ Received string: \\"· "totalTime": 34, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does a partial mock", @@ -32130,10 +32156,10 @@ Received string: \\"· "totalTime": 215, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "d", @@ -32147,10 +32173,10 @@ Received string: \\"· "totalTime": 21, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "a", @@ -32164,10 +32190,10 @@ Received string: \\"· "totalTime": 29, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "e", @@ -32181,10 +32207,10 @@ Received string: \\"· "totalTime": 27, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "c", @@ -32198,10 +32224,10 @@ Received string: \\"· "totalTime": 42, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "errors when a test both returns a promise and takes a callback", diff --git a/__tests__/__snapshots__/mocha-json.test.ts.snap b/__tests__/__snapshots__/mocha-json.test.ts.snap index 70b4b96..7038239 100644 --- a/__tests__/__snapshots__/mocha-json.test.ts.snap +++ b/__tests__/__snapshots__/mocha-json.test.ts.snap @@ -3,12 +3,12 @@ exports[`mocha-json tests report from ./reports/mocha-json test results matches snapshot 1`] = ` TestRunResult { "path": "fixtures/mocha-json.json", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Test 1", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Passing test", @@ -19,12 +19,12 @@ TestRunResult { }, TestGroupResult { "name": "Test 1 Test 1.1", - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { + "error": { "details": "Error: Some error - at Object.throwError (lib\\\\main.js:2:9) - at Context. (test\\\\main.test.js:15:11) + at Object.throwError (lib\\main.js:2:9) + at Context. (test\\main.test.js:15:11) at processImmediate (internal/timers.js:461:21)", "line": 2, "message": "Some error", @@ -35,12 +35,12 @@ TestRunResult { "time": 0, }, TestCaseResult { - "error": Object { + "error": { "details": "AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: false !== true - at Context. (test\\\\main.test.js:11:14) + at Context. (test\\main.test.js:11:14) at processImmediate (internal/timers.js:461:21)", "line": 11, "message": "Expected values to be strictly equal: @@ -57,11 +57,11 @@ false !== true }, TestGroupResult { "name": "Test 2", - "tests": Array [ + "tests": [ TestCaseResult { - "error": Object { + "error": { "details": "Error: Some error - at Context. (test\\\\main.test.js:22:11) + at Context. (test\\main.test.js:22:11) at processImmediate (internal/timers.js:461:21)", "line": 22, "message": "Some error", @@ -78,10 +78,10 @@ false !== true "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": null, - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "Skipped test", @@ -89,12 +89,12 @@ false !== true "time": 0, }, TestCaseResult { - "error": Object { - "details": "Error: Timeout of 1ms exceeded. For async tests and hooks, ensure \\"done()\\" is called; if returning a Promise, ensure it resolves. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\mocha\\\\test\\\\second.test.js) + "error": { + "details": "Error: Timeout of 1ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js) at listOnTimeout (internal/timers.js:554:17) at processTimers (internal/timers.js:497:7)", "line": undefined, - "message": "Timeout of 1ms exceeded. For async tests and hooks, ensure \\"done()\\" is called; if returning a Promise, ensure it resolves. (C:\\\\Users\\\\Michal\\\\Workspace\\\\dorny\\\\test-reporter\\\\reports\\\\mocha\\\\test\\\\second.test.js)", + "message": "Timeout of 1ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\\Users\\Michal\\Workspace\\dorny\\test-reporter\\reports\\mocha\\test\\second.test.js)", "path": undefined, }, "name": "Timeout test", @@ -115,12 +115,12 @@ false !== true exports[`mocha-json tests report from mochajs/mocha test results matches snapshot 1`] = ` TestRunResult { "path": "fixtures/external/mocha/mocha-test-results.json", - "suites": Array [ + "suites": [ TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "class BufferedWorkerPool constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should apply defaults", @@ -131,7 +131,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool instance method run()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should deserialize the result", @@ -148,7 +148,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool instance method run() when passed a non-string filepath", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -159,7 +159,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool instance method run() when passed no arguments", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -170,7 +170,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool instance method stats()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the object returned by \`workerpool.Pool#stats\`", @@ -181,10 +181,10 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool instance method terminate() when called with \`force\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should delegate to the underlying pool w/ \\"force\\" behavior", + "name": "should delegate to the underlying pool w/ "force" behavior", "result": "success", "time": 1, }, @@ -192,10 +192,10 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool instance method terminate() when called without \`force\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should delegate to the underlying pool w/o \\"force\\" behavior", + "name": "should delegate to the underlying pool w/o "force" behavior", "result": "success", "time": 1, }, @@ -203,7 +203,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool static method create()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a BufferedWorkerPool instance", @@ -214,7 +214,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool static method create() when passed no arguments", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not throw", @@ -225,7 +225,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool static method serializeOptions()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a serialized string", @@ -236,7 +236,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool static method serializeOptions() when called multiple times with the same object", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not perform serialization twice", @@ -253,7 +253,7 @@ TestRunResult { }, TestGroupResult { "name": "class BufferedWorkerPool static method serializeOptions() when passed no arguments", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not throw", @@ -267,10 +267,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "cli/config findConfig()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should look for one of the config files using findup-sync", @@ -287,7 +287,7 @@ TestRunResult { }, TestGroupResult { "name": "cli/config loadConfig() when config file parsing fails", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -297,8 +297,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with \\".cjs\\" extension", - "tests": Array [ + "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with ".cjs" extension", + "tests": [ TestCaseResult { "error": undefined, "name": "should use the JS parser", @@ -308,8 +308,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with \\".js\\" extension", - "tests": Array [ + "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with ".js" extension", + "tests": [ TestCaseResult { "error": undefined, "name": "should use the JS parser", @@ -319,8 +319,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with \\".json\\" extension", - "tests": Array [ + "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with ".json" extension", + "tests": [ TestCaseResult { "error": undefined, "name": "should use the JSON parser", @@ -330,8 +330,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with \\".jsonc\\" extension", - "tests": Array [ + "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with ".jsonc" extension", + "tests": [ TestCaseResult { "error": undefined, "name": "should use the JSON parser", @@ -341,8 +341,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with \\".yaml\\" extension", - "tests": Array [ + "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with ".yaml" extension", + "tests": [ TestCaseResult { "error": undefined, "name": "should use the YAML parser", @@ -352,8 +352,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with \\".yml\\" extension", - "tests": Array [ + "name": "cli/config loadConfig() when parsing succeeds when supplied a filepath with ".yml" extension", + "tests": [ TestCaseResult { "error": undefined, "name": "should use the YAML parser", @@ -364,7 +364,7 @@ TestRunResult { }, TestGroupResult { "name": "cli/config loadConfig() when supplied a filepath with unsupported extension", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should use the JSON parser", @@ -378,10 +378,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "node-flags impliesNoTimeouts()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return true for inspect flags", @@ -392,7 +392,7 @@ TestRunResult { }, TestGroupResult { "name": "node-flags isNodeFlag() for all allowed node env flags which conflict with mocha flags", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "--require should return false", @@ -409,7 +409,7 @@ TestRunResult { }, TestGroupResult { "name": "node-flags isNodeFlag() for all allowed node environment flags", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "--abort-on-uncaught-exception should return true", @@ -960,52 +960,52 @@ TestRunResult { }, TestGroupResult { "name": "node-flags isNodeFlag() special cases", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should return true for \\"es-staging\\"", + "name": "should return true for "es-staging"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "should return true for \\"gc-global\\"", + "name": "should return true for "gc-global"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should return true for \\"harmony\\" itself", + "name": "should return true for "harmony" itself", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should return true for \\"use-strict\\"", + "name": "should return true for "use-strict"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should return true for flags starting with \\"--v8-\\"", + "name": "should return true for flags starting with "--v8-"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should return true for flags starting with \\"harmony-\\" or \\"harmony_\\"", + "name": "should return true for flags starting with "harmony-" or "harmony_"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should return true for flags starting with \\"preserve-symlinks\\"", + "name": "should return true for flags starting with "preserve-symlinks"", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should return true for flags starting with \\"trace-\\" or \\"trace_\\"", + "name": "should return true for flags starting with "trace-" or "trace_"", "result": "success", "time": 0, }, @@ -1013,7 +1013,7 @@ TestRunResult { }, TestGroupResult { "name": "node-flags isNodeFlag() when expecting leading dashes", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should require leading dashes", @@ -1024,7 +1024,7 @@ TestRunResult { }, TestGroupResult { "name": "node-flags unparseNodeFlags()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should handle multiple v8 flags", @@ -1044,10 +1044,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { - "name": "options loadOptions() \\"extension\\" handling when user does not supply \\"extension\\" option", - "tests": Array [ + "name": "options loadOptions() "extension" handling when user does not supply "extension" option", + "tests": [ TestCaseResult { "error": undefined, "name": "should retain the default", @@ -1057,8 +1057,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() \\"extension\\" handling when user supplies \\"extension\\" option", - "tests": Array [ + "name": "options loadOptions() "extension" handling when user supplies "extension" option", + "tests": [ TestCaseResult { "error": undefined, "name": "should not concatenate the default value", @@ -1068,8 +1068,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() \\"ignore\\" handling", - "tests": Array [ + "name": "options loadOptions() "ignore" handling", + "tests": [ TestCaseResult { "error": undefined, "name": "should not split option values by comma", @@ -1079,8 +1079,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() \\"spec\\" handling when user supplies \\"spec\\" in config and positional arguments", - "tests": Array [ + "name": "options loadOptions() "spec" handling when user supplies "spec" in config and positional arguments", + "tests": [ TestCaseResult { "error": undefined, "name": "should place both - unsplitted - into the positional arguments array", @@ -1091,7 +1091,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() config priority", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should prioritize args over rc file", @@ -1113,8 +1113,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() when called with a one-and-done arg \\"h\\"", - "tests": Array [ + "name": "options loadOptions() when called with a one-and-done arg "h"", + "tests": [ TestCaseResult { "error": undefined, "name": "should return basic parsed arguments and flag", @@ -1124,8 +1124,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() when called with a one-and-done arg \\"help\\"", - "tests": Array [ + "name": "options loadOptions() when called with a one-and-done arg "help"", + "tests": [ TestCaseResult { "error": undefined, "name": "should return basic parsed arguments and flag", @@ -1135,8 +1135,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() when called with a one-and-done arg \\"list-interfaces\\"", - "tests": Array [ + "name": "options loadOptions() when called with a one-and-done arg "list-interfaces"", + "tests": [ TestCaseResult { "error": undefined, "name": "should return basic parsed arguments and flag", @@ -1146,8 +1146,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() when called with a one-and-done arg \\"list-reporters\\"", - "tests": Array [ + "name": "options loadOptions() when called with a one-and-done arg "list-reporters"", + "tests": [ TestCaseResult { "error": undefined, "name": "should return basic parsed arguments and flag", @@ -1157,8 +1157,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() when called with a one-and-done arg \\"V\\"", - "tests": Array [ + "name": "options loadOptions() when called with a one-and-done arg "V"", + "tests": [ TestCaseResult { "error": undefined, "name": "should return basic parsed arguments and flag", @@ -1168,8 +1168,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "options loadOptions() when called with a one-and-done arg \\"version\\"", - "tests": Array [ + "name": "options loadOptions() when called with a one-and-done arg "version"", + "tests": [ TestCaseResult { "error": undefined, "name": "should return basic parsed arguments and flag", @@ -1180,7 +1180,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when no parameter provided", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return an object containing positional args, defaults, and anti-reloading flags", @@ -1191,7 +1191,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided package.json when called with package = false (\`--no-package\`)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not look for package.json", @@ -1214,7 +1214,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided package.json when path to package.json (\`--package \`) is invalid", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -1225,7 +1225,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided package.json when path to package.json (\`--package \`) is valid", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not try to find a package.json", @@ -1248,7 +1248,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided package.json when path to package.json unspecified", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return merged options incl. found package.json", @@ -1265,7 +1265,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided rc file when called with config = false (\`--no-config\`)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not attempt to find a config file", @@ -1294,7 +1294,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided rc file when called with unspecified config when an rc file would be found", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt to load file at found path", @@ -1317,7 +1317,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided rc file when called with unspecified config when an rc file would not be found", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should look for a config", @@ -1340,7 +1340,7 @@ TestRunResult { }, TestGroupResult { "name": "options loadOptions() when parameter provided rc file when path to config (\`--config \`) is invalid", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt to load file at path", @@ -1366,10 +1366,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "helpers list() when given a comma-delimited string", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a flat array", @@ -1380,7 +1380,7 @@ TestRunResult { }, TestGroupResult { "name": "helpers list() when provided a flat array", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a flat array", @@ -1391,7 +1391,7 @@ TestRunResult { }, TestGroupResult { "name": "helpers list() when provided a nested array", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a flat array", @@ -1402,7 +1402,7 @@ TestRunResult { }, TestGroupResult { "name": "helpers validateLegacyPlugin() when a plugin throws an exception upon load", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail and report the original error", @@ -1412,8 +1412,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "helpers validateLegacyPlugin() when used with \\"reporter\\" key", - "tests": Array [ + "name": "helpers validateLegacyPlugin() when used with "reporter" key", + "tests": [ TestCaseResult { "error": undefined, "name": "should disallow an array of names", @@ -1429,8 +1429,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "helpers validateLegacyPlugin() when used with an \\"interfaces\\" key", - "tests": Array [ + "name": "helpers validateLegacyPlugin() when used with an "interfaces" key", + "tests": [ TestCaseResult { "error": undefined, "name": "should disallow an array of names", @@ -1447,7 +1447,7 @@ TestRunResult { }, TestGroupResult { "name": "helpers validateLegacyPlugin() when used with an unknown plugin type", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail", @@ -1461,10 +1461,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "command run builder array type", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should include option extension", @@ -1523,7 +1523,7 @@ TestRunResult { }, TestGroupResult { "name": "command run builder boolean type", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should include option allow-uncaught", @@ -1654,7 +1654,7 @@ TestRunResult { }, TestGroupResult { "name": "command run builder number type", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should include option jobs", @@ -1671,7 +1671,7 @@ TestRunResult { }, TestGroupResult { "name": "command run builder string type", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should include option config", @@ -1727,10 +1727,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Mocha instance method addFile()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add the given file to the files array", @@ -1747,7 +1747,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method lazyLoadFiles()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the \`Mocha\` instance", @@ -1758,7 +1758,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method lazyLoadFiles() when passed \`true\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should enable lazy loading", @@ -1769,7 +1769,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method lazyLoadFiles() when passed a non-\`true\` value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should enable eager loading", @@ -1780,7 +1780,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method loadFiles()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should execute the optional callback if given", @@ -1797,7 +1797,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method parallelMode() when \`Mocha\` is running in Node.js", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the Mocha instance", @@ -1808,7 +1808,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method parallelMode() when \`Mocha\` is running in Node.js when \`Mocha\` instance in serial mode when passed \`true\` value when \`Mocha\` instance is in \`INIT\` state", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should enable parallel mode", @@ -1819,7 +1819,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method parallelMode() when \`Mocha\` is running in Node.js when \`Mocha\` instance in serial mode when passed \`true\` value when \`Mocha\` instance is not in \`INIT\` state", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -1830,7 +1830,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method parallelMode() when \`Mocha\` is running in Node.js when \`Mocha\` instance in serial mode when passed non-\`true\` value when \`Mocha\` instance is in \`INIT\` state", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should enable serial mode", @@ -1841,7 +1841,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method parallelMode() when \`Mocha\` is running in Node.js when parallel mode is already disabled", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not swap the Runner, nor change lazy loading setting", @@ -1852,7 +1852,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method parallelMode() when \`Mocha\` is running in Node.js when parallel mode is already enabled", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not swap the Runner, nor change lazy loading setting", @@ -1862,8 +1862,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method reporter() when a reporter exists relative to the \\"mocha\\" module path", - "tests": Array [ + "name": "Mocha instance method reporter() when a reporter exists relative to the "mocha" module path", + "tests": [ TestCaseResult { "error": undefined, "name": "should load from module path", @@ -1873,11 +1873,11 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method reporter() when a reporter exists relative to the \\"mocha\\" module path when the reporter throws upon load", - "tests": Array [ + "name": "Mocha instance method reporter() when a reporter exists relative to the "mocha" module path when the reporter throws upon load", + "tests": [ TestCaseResult { "error": undefined, - "name": "should throw \\"invalid reporter\\" exception", + "name": "should throw "invalid reporter" exception", "result": "success", "time": 2, }, @@ -1891,7 +1891,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method reporter() when a reporter exists relative to the cwd", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should load from current working directory", @@ -1902,10 +1902,10 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method reporter() when a reporter exists relative to the cwd when the reporter throws upon load", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should throw \\"invalid reporter\\" exception", + "name": "should throw "invalid reporter" exception", "result": "success", "time": 2, }, @@ -1919,7 +1919,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method unloadFiles()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -1948,7 +1948,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha static method unloadFile()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should unload a specific file from cache", @@ -1962,13 +1962,13 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should start in \\"IDLE\\" state", + "name": "should start in "IDLE" state", "result": "success", "time": 1, }, @@ -1976,7 +1976,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner event EVENT_RUN_END", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should change the state to COMPLETE", @@ -1987,7 +1987,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method isParallelMode()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return true", @@ -1998,7 +1998,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method linkPartialObjects()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the runner", @@ -2009,7 +2009,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -2026,7 +2026,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when a suite has a bail flag when an event contains an error and has positive failures when subsequent files already started running", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should cleanly terminate the thread pool", @@ -2037,7 +2037,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when a suite has a bail flag when an event contains an error and has positive failures when subsequent files have not yet been run", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should cleanly terminate the thread pool", @@ -2054,7 +2054,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when a suite has a bail flag when no event contains an error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not force-terminate", @@ -2065,7 +2065,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when a worker fails", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should delegate to Runner#uncaught", @@ -2082,7 +2082,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when instructed to link objects", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should create object references", @@ -2093,7 +2093,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when instructed to link objects when event data object is missing an ID", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should result in an uncaught exception", @@ -2104,7 +2104,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when suite should bail when an event contains an error and has positive failures when subsequent files already started running", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should cleanly terminate the thread pool", @@ -2115,7 +2115,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when suite should bail when an event contains an error and has positive failures when subsequent files have not yet been run", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should cleanly terminate the thread pool", @@ -2126,7 +2126,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method run() when suite should bail when no event contains an error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not force-terminate", @@ -2137,7 +2137,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance method workerReporter()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return its context", @@ -2148,7 +2148,7 @@ TestRunResult { }, TestGroupResult { "name": "parallel-buffered-runner ParallelBufferedRunner instance property _state", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should disallow an invalid state transition", @@ -2162,10 +2162,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "ParallelBuffered constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should listen for Runner events", @@ -2182,7 +2182,7 @@ TestRunResult { }, TestGroupResult { "name": "ParallelBuffered event on any other event listened for", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should populate its \`events\` array with SerializableEvents", @@ -2193,7 +2193,7 @@ TestRunResult { }, TestGroupResult { "name": "ParallelBuffered event on EVENT_RUN_END", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should remove all listeners", @@ -2204,7 +2204,7 @@ TestRunResult { }, TestGroupResult { "name": "ParallelBuffered instance method done", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should execute its callback with a SerializableWorkerResult", @@ -2224,10 +2224,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "serializer function deserialize when passed a non-object value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the value", @@ -2238,7 +2238,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer function deserialize when passed a SerializedWorkerResult object", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the result of \`SerializableWorkerResult.deserialize\` called on the value", @@ -2249,7 +2249,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer function deserialize when passed an object value which is not a SerializedWorkerResult", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the value", @@ -2260,7 +2260,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer function deserialize when passed nothing", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`undefined\`", @@ -2271,7 +2271,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer function serialize when not passed anything", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`undefined\`", @@ -2282,7 +2282,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer function serialize when passed a non-object value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the value", @@ -2293,7 +2293,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer function serialize when passed an object value having a \`serialize\` method", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the result of the \`serialize\` method", @@ -2304,7 +2304,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer function serialize when passed an object value w/o a \`serialize\` method", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the value", @@ -2315,10 +2315,10 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent constructor when called with a non-object \`rawObject\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should throw \\"invalid arg type\\" error", + "name": "should throw "invalid arg type" error", "result": "success", "time": 1, }, @@ -2326,10 +2326,10 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent constructor when called without \`eventName\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should throw \\"invalid arg value\\" error", + "name": "should throw "invalid arg value" error", "result": "success", "time": 0, }, @@ -2337,7 +2337,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should freeze the instance", @@ -2354,7 +2354,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize when passed an error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not retain not-own props", @@ -2377,7 +2377,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize when passed an object containing a nested prop with an Error value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should serialize the Error", @@ -2388,7 +2388,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize when passed an object containing a non-\`serialize\` method", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should remove the method", @@ -2399,7 +2399,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize when passed an object containing a top-level prop with an Error value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should serialize the Error", @@ -2410,7 +2410,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize when passed an object containing an array", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should serialize the array", @@ -2421,7 +2421,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize when passed an object containing an object with a \`serialize\` method", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call the \`serialize\` method", @@ -2432,7 +2432,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent instance method serialize when passed an object with a \`serialize\` method", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call the \`serialize\` method", @@ -2443,7 +2443,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent static method create", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should instantiate a SerializableEvent", @@ -2454,7 +2454,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent static method deserialize", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a new object w/ null prototype", @@ -2465,10 +2465,10 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent static method deserialize when passed a falsy parameter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should throw \\"invalid arg type\\" error", + "name": "should throw "invalid arg type" error", "result": "success", "time": 0, }, @@ -2476,7 +2476,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent static method deserialize when passed value contains \`data\` prop", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should ignore __proto__", @@ -2487,7 +2487,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent static method deserialize when passed value contains \`data\` prop when \`data\` prop contains a nested serialized Error prop", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should create an Error instance from the nested serialized Error prop", @@ -2498,7 +2498,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent static method deserialize when passed value contains an \`error\` prop", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should create an Error instance from the prop", @@ -2508,8 +2508,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "serializer SerializableEvent static method deserialize when passed value data contains a prop beginning with \\"$$\\"", - "tests": Array [ + "name": "serializer SerializableEvent static method deserialize when passed value data contains a prop beginning with "$$"", + "tests": [ TestCaseResult { "error": undefined, "name": "should create a new prop having a function value", @@ -2524,7 +2524,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should remove the prop with the \\"$$\\" prefix", + "name": "should remove the prop with the "$$" prefix", "result": "success", "time": 0, }, @@ -2532,7 +2532,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableEvent static method deserialize when the value data contains a prop with an array value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should deserialize each prop", @@ -2543,7 +2543,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableWorkerResult constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add a readonly \`__type\` prop", @@ -2554,7 +2554,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableWorkerResult instance method serialize", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call \`SerializableEvent#serialize\` of each of its events", @@ -2571,7 +2571,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableWorkerResult static method create", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a new SerializableWorkerResult instance", @@ -2582,7 +2582,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableWorkerResult static method deserialize", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call SerializableEvent#deserialize on each item in its \`events\` prop", @@ -2599,7 +2599,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableWorkerResult static method isSerializedWorkerResult when passed an instance", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`true\`", @@ -2610,7 +2610,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableWorkerResult static method isSerializedWorkerResult when passed an object with an appropriate \`__type\` prop", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`true\`", @@ -2621,7 +2621,7 @@ TestRunResult { }, TestGroupResult { "name": "serializer SerializableWorkerResult static method isSerializedWorkerResult when passed an object without an appropriate \`__type\` prop", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`false\`", @@ -2635,10 +2635,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "stackTraceFilter() on browser", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not strip out other bower_components", @@ -2649,7 +2649,7 @@ TestRunResult { }, TestGroupResult { "name": "stackTraceFilter() on node on POSIX OS", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not ignore other bower_components and components", @@ -2678,7 +2678,7 @@ TestRunResult { }, TestGroupResult { "name": "stackTraceFilter() on node on Windows", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work on Windows", @@ -2692,19 +2692,19 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "utils function canonicalType()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should return \\"asyncfunction\\" if the parameter is an async function", + "name": "should return "asyncfunction" if the parameter is an async function", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should return \\"buffer\\" if the parameter is a Buffer", + "name": "should return "buffer" if the parameter is a Buffer", "result": "success", "time": 0, }, @@ -2712,7 +2712,7 @@ TestRunResult { }, TestGroupResult { "name": "utils function cwd()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the current working directory", @@ -2723,16 +2723,16 @@ TestRunResult { }, TestGroupResult { "name": "utils function type()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should return \\"error\\" if the parameter is an Error", + "name": "should return "error" if the parameter is an Error", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "should return \\"function\\" if the parameter is an async function", + "name": "should return "function" if the parameter is an async function", "result": "success", "time": 0, }, @@ -2743,10 +2743,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "worker when run as main process", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -2757,7 +2757,7 @@ TestRunResult { }, TestGroupResult { "name": "worker when run as worker process", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should register itself with workerpool", @@ -2767,8 +2767,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "worker when run as worker process function run() when called with empty \\"filepath\\" argument", - "tests": Array [ + "name": "worker when run as worker process function run() when called with empty "filepath" argument", + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -2779,7 +2779,7 @@ TestRunResult { }, TestGroupResult { "name": "worker when run as worker process function run() when called without arguments", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -2790,7 +2790,7 @@ TestRunResult { }, TestGroupResult { "name": "worker when run as worker process function run() when passed a non-string \`options\` value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -2801,7 +2801,7 @@ TestRunResult { }, TestGroupResult { "name": "worker when run as worker process function run() when passed an invalid string \`options\` value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -2811,8 +2811,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "worker when run as worker process function run() when the file at \\"filepath\\" argument is unloadable", - "tests": Array [ + "name": "worker when run as worker process function run() when the file at "filepath" argument is unloadable", + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -2822,8 +2822,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "worker when run as worker process function run() when the file at \\"filepath\\" is loadable", - "tests": Array [ + "name": "worker when run as worker process function run() when the file at "filepath" is loadable", + "tests": [ TestCaseResult { "error": undefined, "name": "should call Mocha#run", @@ -2832,13 +2832,13 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should handle \\"--require\\"", + "name": "should handle "--require"", "result": "success", "time": 2, }, TestCaseResult { "error": undefined, - "name": "should handle \\"--ui\\"", + "name": "should handle "--ui"", "result": "success", "time": 3, }, @@ -2857,8 +2857,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "worker when run as worker process function run() when the file at \\"filepath\\" is loadable when run twice", - "tests": Array [ + "name": "worker when run as worker process function run() when the file at "filepath" is loadable when run twice", + "tests": [ TestCaseResult { "error": undefined, "name": "should initialize only once", @@ -2868,8 +2868,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "worker when run as worker process function run() when the file at \\"filepath\\" is loadable when serialization fails", - "tests": Array [ + "name": "worker when run as worker process function run() when the file at "filepath" is loadable when serialization fails", + "tests": [ TestCaseResult { "error": undefined, "name": "should reject", @@ -2879,8 +2879,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "worker when run as worker process function run() when the file at \\"filepath\\" is loadable when serialization succeeds", - "tests": Array [ + "name": "worker when run as worker process function run() when the file at "filepath" is loadable when serialization succeeds", + "tests": [ TestCaseResult { "error": undefined, "name": "should resolve with a SerializedWorkerResult", @@ -2894,10 +2894,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Context nested", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work", @@ -2908,7 +2908,7 @@ TestRunResult { }, TestGroupResult { "name": "Context Siblings sequestered sibling", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work", @@ -2919,7 +2919,7 @@ TestRunResult { }, TestGroupResult { "name": "Context Siblings sibling verifiction", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should allow test siblings to modify shared context", @@ -2942,7 +2942,7 @@ TestRunResult { }, TestGroupResult { "name": "methods retries", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the number of retries", @@ -2953,7 +2953,7 @@ TestRunResult { }, TestGroupResult { "name": "methods slow()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the slow", @@ -2964,7 +2964,7 @@ TestRunResult { }, TestGroupResult { "name": "methods timeout()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the timeout", @@ -2978,10 +2978,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "durations when fast", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not highlight", @@ -2992,7 +2992,7 @@ TestRunResult { }, TestGroupResult { "name": "durations when reasonable", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should highlight in yellow", @@ -3003,7 +3003,7 @@ TestRunResult { }, TestGroupResult { "name": "durations when slow", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should highlight in red", @@ -3017,10 +3017,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Errors createForbiddenExclusivityError() when Mocha instance is not running in a worker process", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should output a message regarding --forbid-only", @@ -3031,7 +3031,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors createForbiddenExclusivityError() when Mocha instance is running in a worker process", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should output a message regarding incompatibility", @@ -3042,7 +3042,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors createInvalidInterfaceError()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should include expected code in thrown interface errors", @@ -3053,7 +3053,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors createInvalidReporterError()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should include expected code in thrown reporter errors", @@ -3064,7 +3064,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors deprecate()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should cache the message", @@ -3087,7 +3087,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors isMochaError() when provided a non-error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false", @@ -3098,7 +3098,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors isMochaError() when provided an Error object having a known Mocha error code", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return true", @@ -3109,7 +3109,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors isMochaError() when provided an Error object with a non-Mocha error code", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false", @@ -3120,7 +3120,7 @@ TestRunResult { }, TestGroupResult { "name": "Errors warn()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call process.emitWarning", @@ -3146,10 +3146,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "global leaks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should cause tests to fail", @@ -3164,7 +3164,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should pass when prefixed \\"mocha-\\"", + "name": "should pass when prefixed "mocha-"", "result": "success", "time": 0, }, @@ -3181,10 +3181,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Mocha .grep()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add a RegExp to the mocha.options object", @@ -3212,8 +3212,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha \\"fgrep\\" option", - "tests": Array [ + "name": "Mocha "fgrep" option", + "tests": [ TestCaseResult { "error": undefined, "name": "should escape and convert string to a RegExp", @@ -3223,8 +3223,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha \\"grep\\" option", - "tests": Array [ + "name": "Mocha "grep" option", + "tests": [ TestCaseResult { "error": undefined, "name": "should add a RegExp to the mocha.options object", @@ -3240,8 +3240,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha \\"invert\\" option", - "tests": Array [ + "name": "Mocha "invert" option", + "tests": [ TestCaseResult { "error": undefined, "name": "should add a Boolean to the mocha.options object", @@ -3255,10 +3255,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "async hooks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "one", @@ -3284,10 +3284,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "serial nested", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "bar", @@ -3304,7 +3304,7 @@ TestRunResult { }, TestGroupResult { "name": "serial nested hooks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "one", @@ -3324,10 +3324,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "serial hooks", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "one", @@ -3353,10 +3353,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "hook timeout", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work", @@ -3370,10 +3370,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Hook error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should get the hook._error when called without arguments", @@ -3390,7 +3390,7 @@ TestRunResult { }, TestGroupResult { "name": "Hook reset", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call Runnable.reset", @@ -3410,10 +3410,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Mocha constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set _cleanReferencesAfterRun to true", @@ -3424,7 +3424,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`global\` option is an \`Array\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt to set globals", @@ -3435,7 +3435,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`parallel\` option is true and \`jobs\` option <= 1", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not enable parallel mode", @@ -3446,7 +3446,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`parallel\` option is true and \`jobs\` option > 1", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should enable parallel mode", @@ -3457,7 +3457,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`parallel\` option is true when \`enableGlobalSetup\` option is present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should toggle global setup fixtures", @@ -3468,7 +3468,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`parallel\` option is true when \`enableGlobalTeardown\` option is present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should configure global teardown fixtures", @@ -3479,7 +3479,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`parallel\` option is true when \`globalSetup\` option is present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should configure global setup fixtures", @@ -3490,7 +3490,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`parallel\` option is true when \`globalTeardown\` option is present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should configure global teardown fixtures", @@ -3501,7 +3501,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`retries\` option is not present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not attempt to set retries", @@ -3512,7 +3512,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`retries\` option is present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt to set retries\`", @@ -3523,7 +3523,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`rootHooks\` option is truthy", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "shouid attempt to set root hooks", @@ -3534,7 +3534,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`timeout\` option is \`false\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt to set timeout", @@ -3545,7 +3545,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha constructor when \`timeout\` option is \`undefined\`", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not attempt to set timeout", @@ -3556,7 +3556,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method _runGlobalFixtures()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should execute multiple fixtures in order", @@ -3567,7 +3567,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method allowUncaught()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3590,7 +3590,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method asyncOnly()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3613,7 +3613,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method bail()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3624,10 +3624,10 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method bail() when provided a falsy argument", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should unset the \\"bail\\" flag on the root suite", + "name": "should unset the "bail" flag on the root suite", "result": "success", "time": 1, }, @@ -3635,10 +3635,10 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method bail() when provided no arguments", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should set the \\"bail\\" flag on the root suite", + "name": "should set the "bail" flag on the root suite", "result": "success", "time": 1, }, @@ -3646,7 +3646,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method checkLeaks()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the checkLeaks option to true", @@ -3657,7 +3657,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method cleanReferencesAfterRun()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3680,7 +3680,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method color()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3703,7 +3703,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method delay()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3720,7 +3720,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method diff()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the diff option to true", @@ -3731,7 +3731,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method diff() when provided \`false\` argument", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the diff option to false", @@ -3742,7 +3742,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method dispose()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should dispose previous test runner", @@ -3765,7 +3765,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method forbidOnly()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3788,7 +3788,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method forbidPending()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3811,7 +3811,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method fullTrace()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3834,7 +3834,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method global()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be an empty array initially", @@ -3851,7 +3851,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method global() when argument is invalid", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not modify the whitelist when given empty array", @@ -3868,7 +3868,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method global() when argument is valid", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add contents of string array to the whitelist", @@ -3891,7 +3891,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method growl()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3902,7 +3902,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method growl() if capable of notifications", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the growl option to true", @@ -3913,7 +3913,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method growl() if not capable of notifications", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the growl option to false", @@ -3924,7 +3924,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method hasGlobalSetupFixtures() when no global setup fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`false\`", @@ -3935,7 +3935,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method hasGlobalSetupFixtures() when one or more global setup fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`true\`", @@ -3946,7 +3946,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method hasGlobalTeardownFixtures() when no global teardown fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`false\`", @@ -3957,7 +3957,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method hasGlobalTeardownFixtures() when one or more global teardown fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`true\`", @@ -3968,7 +3968,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method inlineDiffs()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -3991,7 +3991,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method invert()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -4008,7 +4008,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method noHighlighting()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -4025,7 +4025,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method parallelMode() when \`Mocha\` is running in a browser", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -4036,7 +4036,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method reporter()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -4059,7 +4059,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method rootHooks()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be chainable", @@ -4069,8 +4069,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided a single \\"after all\\" hook", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided a single "after all" hook", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach it to the root suite", @@ -4080,8 +4080,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided a single \\"after each\\" hook", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided a single "after each" hook", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach it to the root suite", @@ -4091,8 +4091,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided a single \\"before all\\" hook", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided a single "before all" hook", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach it to the root suite", @@ -4102,8 +4102,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided a single \\"before each\\" hook", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided a single "before each" hook", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach it to the root suite", @@ -4113,8 +4113,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided multiple \\"after all\\" hooks", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided multiple "after all" hooks", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach each to the root suite", @@ -4124,8 +4124,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided multiple \\"after each\\" hooks", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided multiple "after each" hooks", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach each to the root suite", @@ -4135,8 +4135,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided multiple \\"before all\\" hooks", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided multiple "before all" hooks", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach each to the root suite", @@ -4146,8 +4146,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method rootHooks() when provided multiple \\"before each\\" hooks", - "tests": Array [ + "name": "Mocha instance method rootHooks() when provided multiple "before each" hooks", + "tests": [ TestCaseResult { "error": undefined, "name": "should attach each to the root suite", @@ -4158,7 +4158,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should execute the callback when complete", @@ -4181,7 +4181,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() Base reporter initialization", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should configure the Base reporter", @@ -4191,8 +4191,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method run() Base reporter initialization when \\"color\\" options is set", - "tests": Array [ + "name": "Mocha instance method run() Base reporter initialization when "color" options is set", + "tests": [ TestCaseResult { "error": undefined, "name": "should configure the Base reporter", @@ -4203,7 +4203,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() Runner initialization", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should instantiate a Runner", @@ -4213,8 +4213,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method run() Runner initialization when \\"global\\" option is present", - "tests": Array [ + "name": "Mocha instance method run() Runner initialization when "global" option is present", + "tests": [ TestCaseResult { "error": undefined, "name": "should configure global vars", @@ -4224,19 +4224,19 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method run() Runner initialization when \\"grep\\" option is present", - "tests": Array [ + "name": "Mocha instance method run() Runner initialization when "grep" option is present", + "tests": [ TestCaseResult { "error": undefined, - "name": "should configure \\"grep\\"", + "name": "should configure "grep"", "result": "success", "time": 1, }, ], }, TestGroupResult { - "name": "Mocha instance method run() when \\"growl\\" option is present", - "tests": Array [ + "name": "Mocha instance method run() when "growl" option is present", + "tests": [ TestCaseResult { "error": undefined, "name": "should initialize growl support", @@ -4246,11 +4246,11 @@ TestRunResult { ], }, TestGroupResult { - "name": "Mocha instance method run() when a reporter instance has a \\"done\\" method", - "tests": Array [ + "name": "Mocha instance method run() when a reporter instance has a "done" method", + "tests": [ TestCaseResult { "error": undefined, - "name": "should call the reporter \\"done\\" method", + "name": "should call the reporter "done" method", "result": "success", "time": 1, }, @@ -4258,7 +4258,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when a run has finished and is called again", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not call \`Runner#runAsync()\`", @@ -4275,7 +4275,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when a run is in progress", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not call \`Runner#runAsync\`", @@ -4292,7 +4292,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when files have been added to the Mocha instance when Mocha is set to eagerly load files", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should eagerly load files", @@ -4303,7 +4303,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when files have been added to the Mocha instance when Mocha is set to lazily load files", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not eagerly load files", @@ -4314,7 +4314,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global setup fixtures disabled when global setup fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not run global setup fixtures", @@ -4325,7 +4325,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global setup fixtures disabled when global setup fixtures not present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not run global setup fixtures", @@ -4336,7 +4336,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global setup fixtures enabled when global setup fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should run global setup fixtures", @@ -4347,7 +4347,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global setup fixtures enabled when global setup fixtures not present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not run global setup fixtures", @@ -4358,7 +4358,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global teardown fixtures disabled when global teardown fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not run global teardown fixtures", @@ -4369,7 +4369,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global teardown fixtures disabled when global teardown fixtures not present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not run global teardown fixtures", @@ -4380,7 +4380,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global teardown fixtures enabled when global teardown fixtures are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should run global teardown fixtures", @@ -4391,7 +4391,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global teardown fixtures enabled when global teardown fixtures are present when global setup fixtures are present and enabled", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should use the same context as returned by \`runGlobalSetup\`", @@ -4402,7 +4402,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when global teardown fixtures enabled when global teardown fixtures not present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not run global teardown fixtures", @@ -4413,7 +4413,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when Mocha configured for multiple runs and multiple runs are attempted", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call \`Runner#runAsync\` for each call", @@ -4442,7 +4442,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method run() when the \`Mocha\` instance is already disposed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not call \`Runner#runAsync\`", @@ -4459,7 +4459,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method runGlobalSetup() when a fixture is not present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not attempt to run fixtures", @@ -4470,7 +4470,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method runGlobalSetup() when fixture(s) are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt run the fixtures", @@ -4481,7 +4481,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method runGlobalTeardown() when a fixture is not present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "not attempt to run the fixtures", @@ -4492,7 +4492,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method runGlobalTeardown() when fixture(s) are present", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt to run the fixtures", @@ -4503,7 +4503,7 @@ TestRunResult { }, TestGroupResult { "name": "Mocha instance method unloadFile() when run in a browser", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -4517,10 +4517,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "overspecified asynchronous resolution method", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail when multiple methods are used", @@ -4534,10 +4534,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "parseQuery()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should get queryString and return key-value object", @@ -4546,7 +4546,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should parse \\"+\\" as a space", + "name": "should parse "+" as a space", "result": "success", "time": 0, }, @@ -4557,10 +4557,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "plugin module class PluginLoader constructor when passed custom plugins", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should register the custom plugins", @@ -4571,7 +4571,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader constructor when passed ignored plugins", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should retain a list of ignored plugins", @@ -4582,7 +4582,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader constructor when passed no options", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should populate a registry of built-in plugins", @@ -4592,8 +4592,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "plugin module class PluginLoader instance method finalize() when a plugin has no \\"finalize\\" function", - "tests": Array [ + "name": "plugin module class PluginLoader instance method finalize() when a plugin has no "finalize" function", + "tests": [ TestCaseResult { "error": undefined, "name": "should return an array of raw implementations", @@ -4604,7 +4604,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method finalize() when a plugin has one or more implementations", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should omit unused plugins", @@ -4621,7 +4621,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method finalize() when no plugins have been loaded", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return an empty map", @@ -4632,7 +4632,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when called with a falsy value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false", @@ -4643,7 +4643,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when called with an object containing a recognized plugin", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call the associated validator, if present", @@ -4666,7 +4666,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when called with an object containing no recognized plugin", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false", @@ -4677,7 +4677,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when passed a falsy or non-object value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not call a validator", @@ -4694,7 +4694,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when passed an object value when a key matches a known named export", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call the associated validator", @@ -4711,7 +4711,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when passed an object value when a key matches a known named export when the value does not pass the associated validator", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -4722,7 +4722,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when passed an object value when a key matches a known named export when the value passes the associated validator", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add the implementation to the internal mapping", @@ -4745,7 +4745,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method load() when passed an object value when no keys match any known named exports", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false", @@ -4756,7 +4756,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method register() when passed a definition w/o an exportName", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -4767,7 +4767,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method register() when passed a falsy parameter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -4778,7 +4778,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method register() when passed a non-object parameter", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -4789,7 +4789,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method register() when the plugin export name is already in use", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -4800,7 +4800,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method register() when the plugin export name is ignored", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not register the plugin", @@ -4817,7 +4817,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader instance method register() when the plugin export name is not in use", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not throw", @@ -4828,7 +4828,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module class PluginLoader static method create()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a PluginLoader instance", @@ -4839,7 +4839,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global setup when an implementation is a function", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass validation", @@ -4850,7 +4850,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global setup when an implementation is a primitive", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail validation", @@ -4861,7 +4861,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global setup when an implementation is an array of functions", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass validation", @@ -4872,7 +4872,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global setup when an implementation is an array of primitives", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail validation", @@ -4883,7 +4883,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global teardown when an implementation is a function", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass validation", @@ -4894,7 +4894,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global teardown when an implementation is a primitive", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail validation", @@ -4905,7 +4905,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global teardown when an implementation is an array of functions", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass validation", @@ -4916,7 +4916,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module global fixtures plugin global teardown when an implementation is an array of primitives", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail validation", @@ -4927,7 +4927,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module root hooks plugin 🎣 when a loaded impl is finalized", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should flatten the implementations", @@ -4938,7 +4938,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module root hooks plugin 🎣 when impl is a function", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass validation", @@ -4949,7 +4949,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module root hooks plugin 🎣 when impl is a primitive", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail validation", @@ -4960,7 +4960,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module root hooks plugin 🎣 when impl is an array", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail validation", @@ -4971,7 +4971,7 @@ TestRunResult { }, TestGroupResult { "name": "plugin module root hooks plugin 🎣 when impl is an object of functions", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass validation", @@ -4985,10 +4985,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "using imported describe", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "using imported it", @@ -5002,10 +5002,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "root", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be a valid suite", @@ -5019,10 +5019,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runnable(title, fn) .run(fn) if async", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "this.skip() should halt synchronous execution", @@ -5039,7 +5039,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) if timed-out", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should ignore call to \`done\` and not execute callback again", @@ -5050,7 +5050,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when .pending", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not invoke the callback", @@ -5061,7 +5061,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should allow a timeout of 0", @@ -5078,7 +5078,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async when an error is passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5089,7 +5089,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async when an exception is thrown", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5106,7 +5106,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async when an exception is thrown and is allowed to remain uncaught", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when it is allowed", @@ -5117,7 +5117,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async when done() is invoked with a non-Error object", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5128,7 +5128,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async when done() is invoked with a string", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5139,10 +5139,10 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async when the callback is invoked several times with an error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should emit a single \\"error\\" event", + "name": "should emit a single "error" event", "result": "success", "time": 1, }, @@ -5150,10 +5150,10 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async when the callback is invoked several times without an error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should emit a single \\"error\\" event", + "name": "should emit a single "error" event", "result": "success", "time": 1, }, @@ -5161,7 +5161,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when async without error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5172,7 +5172,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when fn is not a function", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw an error", @@ -5183,7 +5183,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when fn returns a non-promise", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5194,7 +5194,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when fn returns a promise when the promise is fulfilled with a value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5205,7 +5205,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when fn returns a promise when the promise is fulfilled with no value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5216,7 +5216,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when fn returns a promise when the promise is rejected", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5227,7 +5227,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when fn returns a promise when the promise is rejected without a reason", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5238,7 +5238,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when fn returns a promise when the promise takes too long to settle", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw the timeout error", @@ -5249,7 +5249,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when sync when an exception is thrown", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback with error", @@ -5260,7 +5260,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when sync when an exception is thrown and is allowed to remain uncaught", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "throws an error when it is allowed", @@ -5271,7 +5271,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when sync without error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should invoke the callback", @@ -5282,7 +5282,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .run(fn) when timeouts are disabled", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not error with timeout", @@ -5293,7 +5293,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .title", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be present", @@ -5304,7 +5304,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) .titlePath()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the concatenation of the parent's title path and runnable's title", @@ -5315,7 +5315,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #globals", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should allow for whitelisting globals", @@ -5326,7 +5326,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #isFailed()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return \`false\` if test is pending", @@ -5349,7 +5349,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #reset", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should reset current run state", @@ -5360,7 +5360,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #resetTimeout()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not time out if timeouts disabled after reset", @@ -5371,7 +5371,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #retries(n)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the number of retries", @@ -5382,7 +5382,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #slow(ms)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not set the slow threshold if the parameter is not passed", @@ -5405,7 +5405,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #slow(ms) when passed a time-formatted string", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should convert to ms", @@ -5416,7 +5416,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #timeout(ms) when value is equal to lower bound given numeric value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the timeout value to disabled", @@ -5427,7 +5427,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #timeout(ms) when value is equal to lower bound given string timestamp", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the timeout value to disabled", @@ -5438,7 +5438,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #timeout(ms) when value is equal to upper bound given numeric value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the disabled timeout value", @@ -5449,7 +5449,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #timeout(ms) when value is less than lower bound", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should clamp to lower bound given numeric", @@ -5466,7 +5466,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #timeout(ms) when value is out-of-bounds given numeric value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the disabled timeout value", @@ -5477,7 +5477,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #timeout(ms) when value is within \`setTimeout\` bounds given numeric value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the timeout value", @@ -5488,7 +5488,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) #timeout(ms) when value is within \`setTimeout\` bounds given string timestamp", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should set the timeout value", @@ -5499,7 +5499,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) interesting property id", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should have a permanent identifier", @@ -5516,7 +5516,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) static method toValueOrError", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return an Error if parameter is falsy", @@ -5533,7 +5533,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) when arity == 0", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be .sync", @@ -5550,7 +5550,7 @@ TestRunResult { }, TestGroupResult { "name": "Runnable(title, fn) when arity >= 1", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be .async", @@ -5570,10 +5570,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Runner instance method _uncaught() when called with a non-Runner context", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -5584,7 +5584,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method abort()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the Runner", @@ -5601,7 +5601,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method allowUncaught()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "async - should allow unhandled errors in hooks to propagate through", @@ -5630,7 +5630,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method checkGlobals(test)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should allow variables that match a wildcard", @@ -5639,19 +5639,19 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should emit \\"fail\\" when a global beginning with \\"d\\" is introduced", + "name": "should emit "fail" when a global beginning with "d" is introduced", "result": "success", "time": 0, }, TestCaseResult { "error": undefined, - "name": "should emit \\"fail\\" when a new global is introduced", + "name": "should emit "fail" when a new global is introduced", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "should emit \\"fail\\" when a single new disallowed global is introduced after a single extra global is allowed", + "name": "should emit "fail" when a single new disallowed global is introduced after a single extra global is allowed", "result": "success", "time": 0, }, @@ -5683,16 +5683,16 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method dispose()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should remove \\"error\\" listeners from a test", + "name": "should remove "error" listeners from a test", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "should remove \\"uncaughtException\\" listeners from the process", + "name": "should remove "uncaughtException" listeners from the process", "result": "success", "time": 0, }, @@ -5706,16 +5706,16 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method fail()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should emit \\"fail\\"", + "name": "should emit "fail"", "result": "success", "time": 1, }, TestCaseResult { "error": undefined, - "name": "should emit \\"fail\\"", + "name": "should emit "fail"", "result": "success", "time": 0, }, @@ -5763,7 +5763,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should not emit \\"end\\" if suite bail is not true", + "name": "should not emit "end" if suite bail is not true", "result": "success", "time": 1, }, @@ -5781,29 +5781,29 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should set \`Test#state\` to \\"failed\\"", + "name": "should set \`Test#state\` to "failed"", "result": "success", "time": 0, }, ], }, TestGroupResult { - "name": "Runner instance method fail() when Runner has stopped when test is not pending when error is not of the \\"multiple done\\" variety", - "tests": Array [ + "name": "Runner instance method fail() when Runner has stopped when test is not pending when error is not of the "multiple done" variety", + "tests": [ TestCaseResult { "error": undefined, - "name": "should throw a \\"fatal\\" error", + "name": "should throw a "fatal" error", "result": "success", "time": 1, }, ], }, TestGroupResult { - "name": "Runner instance method fail() when Runner has stopped when test is not pending when error is the \\"multiple done\\" variety", - "tests": Array [ + "name": "Runner instance method fail() when Runner has stopped when test is not pending when error is the "multiple done" variety", + "tests": [ TestCaseResult { "error": undefined, - "name": "should throw the \\"multiple done\\" error", + "name": "should throw the "multiple done" error", "result": "success", "time": 1, }, @@ -5811,7 +5811,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method globalProps()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should include common non enumerable globals", @@ -5822,7 +5822,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method globals()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should default to the known globals", @@ -5839,7 +5839,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method grep()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should update the runner.total with number of matched tests", @@ -5856,7 +5856,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method grepTotal()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the total number of matched tests", @@ -5873,7 +5873,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method hook()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should augment hook title with current test title", @@ -5890,7 +5890,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method isParallelMode()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false", @@ -5901,7 +5901,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method linkPartialObjects()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the Runner", @@ -5912,7 +5912,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method run()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should clean references after a run", @@ -5921,7 +5921,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should emit \\"retry\\" when a retryable test fails", + "name": "should emit "retry" when a retryable test fails", "result": "success", "time": 1, }, @@ -5947,7 +5947,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method run() stack traces ginormous", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not hang if overlong error message is multiple lines", @@ -5964,7 +5964,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method run() stack traces long", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should display the full stack-trace", @@ -5975,7 +5975,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method run() stack traces short", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should prettify the stack-trace", @@ -5986,7 +5986,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method runAsync()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should pass through options to Runner#run", @@ -6003,7 +6003,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method runTest()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return when no tests to run", @@ -6014,7 +6014,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when allow-uncaught is set to true", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should propagate error and throw", @@ -6025,7 +6025,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is a Pending", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should ignore argument and return", @@ -6036,10 +6036,10 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, - "name": "should add the \\"uncaught\\" property to the Error", + "name": "should add the "uncaught" property to the Error", "result": "success", "time": 1, }, @@ -6047,7 +6047,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when a Runnable is running or has run", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should clear any pending timeouts", @@ -6058,7 +6058,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when a Runnable is running or has run when current Runnable has already failed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not attempt to fail again", @@ -6069,7 +6069,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when a Runnable is running or has run when current Runnable has been marked pending", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should attempt to fail", @@ -6080,7 +6080,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when a Runnable is running or has run when the current Runnable has already passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should abort the runner without emitting end event", @@ -6097,7 +6097,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when a Runnable is running or has run when the current Runnable is still running when the current Runnable is a Hook", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not notify run has ended", @@ -6120,7 +6120,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when a Runnable is running or has run when the current Runnable is still running when the current Runnable is a Test", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not notify run has ended", @@ -6143,7 +6143,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when no Runnables are running", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail with a transient Runnable and the error", @@ -6154,7 +6154,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when no Runnables are running when Runner is IDLE", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should emit start/end events for the benefit of reporters", @@ -6165,7 +6165,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when no Runnables are running when Runner is RUNNING", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not emit start/end events", @@ -6176,7 +6176,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is an Error when no Runnables are running when Runner is STOPPED", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not emit start/end events, since this presumably would have already happened", @@ -6193,7 +6193,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method uncaught() when provided an object argument when argument is not an Error", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should fail with a transient Runnable and a new Error coerced from the object", @@ -6204,7 +6204,7 @@ TestRunResult { }, TestGroupResult { "name": "Runner instance method workerReporter()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -6218,10 +6218,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Suite instance method addSuite()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds the suite to the suites collection", @@ -6256,7 +6256,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method addTest()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds the test to the tests collection", @@ -6279,7 +6279,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method afterAll() wraps the passed in function in a Hook", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds it to _afterAll", @@ -6302,7 +6302,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method afterEach() wraps the passed in function in a Hook", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds it to _afterEach", @@ -6325,7 +6325,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method bail() when argument is passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the Suite object", @@ -6336,7 +6336,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method bail() when no argument is passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the bail value", @@ -6347,7 +6347,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method beforeAll() wraps the passed in function in a Hook", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds it to _beforeAll", @@ -6370,7 +6370,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method beforeEach() when the suite is pending", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not create a hook", @@ -6381,7 +6381,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method beforeEach() wraps the passed in function in a Hook", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "adds it to _beforeEach", @@ -6404,7 +6404,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method clone()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should clone the Suite, omitting children", @@ -6415,7 +6415,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method constructor", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not throw if the title is a string", @@ -6438,7 +6438,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method create()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "does not create a second root suite", @@ -6455,7 +6455,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method eachTest(fn) when there are no nested suites or tests", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return 0", @@ -6466,7 +6466,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method eachTest(fn) when there are several levels of nested suites", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the number", @@ -6477,7 +6477,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method eachTest(fn) when there are several tests in the suite", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the number", @@ -6488,7 +6488,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method filterOnly()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should filter out all other tests and suites if a suite has \`only\`", @@ -6505,7 +6505,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method fullTitle() when there is a parent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the combination of parent's and suite's title", @@ -6516,7 +6516,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method fullTitle() when there is no parent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the suite title", @@ -6527,7 +6527,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method hasOnly()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false if no suite or test is marked \`only\`", @@ -6556,7 +6556,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method markOnly()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call appendOnlySuite on parent", @@ -6567,7 +6567,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method reset()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should forward reset to all hooks", @@ -6590,7 +6590,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method slow() when argument is passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the Suite object", @@ -6601,7 +6601,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method slow() when given a string", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should parse it", @@ -6612,7 +6612,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method slow() when no argument is passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the slow value", @@ -6623,7 +6623,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method timeout()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should convert a string to milliseconds", @@ -6634,7 +6634,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method timeout() when argument is passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the Suite object", @@ -6645,7 +6645,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method timeout() when no argument is passed", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the timeout value", @@ -6656,7 +6656,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method titlePath() when there is a parent the parent is not the root suite", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the concatenation of parent's and suite's title", @@ -6667,7 +6667,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method titlePath() when there is a parent the parent is the root suite", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the suite title", @@ -6678,7 +6678,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method titlePath() when there is no parent", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "returns the suite title", @@ -6689,7 +6689,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method total() when there are no nested suites or tests", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return 0", @@ -6700,7 +6700,7 @@ TestRunResult { }, TestGroupResult { "name": "Suite instance method total() when there are several tests in the suite", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return the number", @@ -6711,7 +6711,7 @@ TestRunResult { }, TestGroupResult { "name": "Test initialization", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not throw if the title is a string", @@ -6731,10 +6731,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "Test .clone()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add/keep the retriedTest value", @@ -6793,7 +6793,7 @@ TestRunResult { }, TestGroupResult { "name": "Test .isPending()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should be pending when its parent is pending", @@ -6816,7 +6816,7 @@ TestRunResult { }, TestGroupResult { "name": "Test .markOnly()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call appendOnlyTest on parent", @@ -6827,7 +6827,7 @@ TestRunResult { }, TestGroupResult { "name": "Test .reset()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should call Runnable.reset", @@ -6847,10 +6847,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "a test that throws non-extensible", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not pass if throwing async and test is async", @@ -6873,7 +6873,7 @@ TestRunResult { }, TestGroupResult { "name": "a test that throws null", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not pass if throwing async and test is async", @@ -6896,7 +6896,7 @@ TestRunResult { }, TestGroupResult { "name": "a test that throws undefined", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should not pass if throwing async and test is async", @@ -6922,10 +6922,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "timeouts", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should allow overriding per-test", @@ -6942,7 +6942,7 @@ TestRunResult { }, TestGroupResult { "name": "timeouts disabling", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work with timeout(0)", @@ -6953,7 +6953,7 @@ TestRunResult { }, TestGroupResult { "name": "timeouts disabling suite-level", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work with timeout(0)", @@ -6964,7 +6964,7 @@ TestRunResult { }, TestGroupResult { "name": "timeouts disabling suite-level nested suite", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work with timeout(0)", @@ -6975,7 +6975,7 @@ TestRunResult { }, TestGroupResult { "name": "timeouts disabling using before", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work with timeout(0)", @@ -6986,7 +6986,7 @@ TestRunResult { }, TestGroupResult { "name": "timeouts disabling using beforeEach", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should work with timeout(0)", @@ -6997,7 +6997,7 @@ TestRunResult { }, TestGroupResult { "name": "timeouts disabling using timeout(0)", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should suppress timeout(4)", @@ -7011,10 +7011,10 @@ TestRunResult { "totalTime": undefined, }, TestSuiteResult { - "groups": Array [ + "groups": [ TestGroupResult { "name": "lib/utils canonicalType()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should recognize various types", @@ -7025,7 +7025,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils canonicalType() when toString on null or undefined stringifies window", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should recognize null and undefined", @@ -7036,7 +7036,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils castArray() when provided a primitive value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return an array containing the primitive value only", @@ -7046,8 +7046,8 @@ TestRunResult { ], }, TestGroupResult { - "name": "lib/utils castArray() when provided an \\"arguments\\" value", - "tests": Array [ + "name": "lib/utils castArray() when provided an "arguments" value", + "tests": [ TestCaseResult { "error": undefined, "name": "should return an array containing the arguments", @@ -7058,7 +7058,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils castArray() when provided an array value", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a copy of the array", @@ -7069,7 +7069,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils castArray() when provided an object", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return an array containing the object only", @@ -7080,7 +7080,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils castArray() when provided no parameters", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return an empty array", @@ -7091,7 +7091,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils castArray() when provided null", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return an array containing a null value only", @@ -7102,7 +7102,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils clean()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should format a multi line test indented with spaces", @@ -7209,7 +7209,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils createMap()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should add props from all object parameters to the object", @@ -7232,7 +7232,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils dQuote()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return its input as string wrapped in double quotes", @@ -7243,7 +7243,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils escape()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "replaces invalid xml characters", @@ -7260,7 +7260,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils isPromise()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return false if the object is null", @@ -7269,7 +7269,7 @@ TestRunResult { }, TestCaseResult { "error": undefined, - "name": "should return false if the value is an object w/o a \\"then\\" function", + "name": "should return false if the value is an object w/o a "then" function", "result": "success", "time": 0, }, @@ -7289,7 +7289,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils lookupFiles() when run in browser", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should throw", @@ -7300,7 +7300,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils lookupFiles() when run in Node.js", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should delegate to new location of lookupFiles()", @@ -7317,7 +7317,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils slug()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should convert the string to lowercase", @@ -7346,7 +7346,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils sQuote()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return its input as string wrapped in single quotes", @@ -7357,7 +7357,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils stringify()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "might get confusing", @@ -7506,7 +7506,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils stringify() #Number", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "floats and ints", @@ -7535,7 +7535,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils stringify() canonicalize example", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should represent the actual full result", @@ -7546,7 +7546,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils type()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should recognize various types", @@ -7557,7 +7557,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils type() when toString on null or undefined stringifies window", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should recognize null and undefined", @@ -7568,7 +7568,7 @@ TestRunResult { }, TestGroupResult { "name": "lib/utils uniqueID()", - "tests": Array [ + "tests": [ TestCaseResult { "error": undefined, "name": "should return a non-empty string", diff --git a/__tests__/__snapshots__/swift-xunit.test.ts.snap b/__tests__/__snapshots__/swift-xunit.test.ts.snap new file mode 100644 index 0000000..01aa7d9 --- /dev/null +++ b/__tests__/__snapshots__/swift-xunit.test.ts.snap @@ -0,0 +1,44 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`swift-xunit tests report from swift test results matches snapshot 1`] = ` +TestRunResult { + "path": "fixtures/swift-xunit.xml", + "suites": [ + TestSuiteResult { + "groups": [ + TestGroupResult { + "name": "AcmeLibTests.AcmeLibTests", + "tests": [ + TestCaseResult { + "error": undefined, + "name": "test_always_pass", + "result": "success", + "time": 36.386333, + }, + TestCaseResult { + "error": undefined, + "name": "test_always_skip", + "result": "success", + "time": 92.039167, + }, + TestCaseResult { + "error": { + "details": undefined, + "line": undefined, + "message": undefined, + "path": undefined, + }, + "name": "test_always_fail", + "result": "failed", + "time": 92.05175, + }, + ], + }, + ], + "name": "TestResults", + "totalTime": 220.47725000000003, + }, + ], + "totalTime": undefined, +} +`; diff --git a/__tests__/fixtures/empty/jest-junit-empty-testsuite.xml b/__tests__/fixtures/empty/jest-junit-empty-testsuite.xml new file mode 100644 index 0000000..ad54653 --- /dev/null +++ b/__tests__/fixtures/empty/jest-junit-empty-testsuite.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/__tests__/fixtures/external/java/empty_failures.xml b/__tests__/fixtures/external/java/empty_failures.xml new file mode 100644 index 0000000..c76ed0e --- /dev/null +++ b/__tests__/fixtures/external/java/empty_failures.xml @@ -0,0 +1,2 @@ + + diff --git a/__tests__/fixtures/external/jest/jest-react-component-test-results.xml b/__tests__/fixtures/external/jest/jest-react-component-test-results.xml new file mode 100644 index 0000000..cdaa87f --- /dev/null +++ b/__tests__/fixtures/external/jest/jest-react-component-test-results.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/__tests__/fixtures/swift-xunit.xml b/__tests__/fixtures/swift-xunit.xml new file mode 100644 index 0000000..1046225 --- /dev/null +++ b/__tests__/fixtures/swift-xunit.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/__tests__/java-junit.test.ts b/__tests__/java-junit.test.ts index a2ee944..e8111d4 100644 --- a/__tests__/java-junit.test.ts +++ b/__tests__/java-junit.test.ts @@ -72,4 +72,22 @@ describe('java-junit tests', () => { fs.mkdirSync(path.dirname(outputPath), {recursive: true}) fs.writeFileSync(outputPath, report) }) + + it('parses empty failures in test results', async () => { + const fixturePath = path.join(__dirname, 'fixtures', 'external', 'java', 'empty_failures.xml') + const filePath = normalizeFilePath(path.relative(__dirname, fixturePath)) + const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'}) + + const trackedFiles: string[] = [] + const opts: ParseOptions = { + parseErrors: true, + trackedFiles + } + + const parser = new JavaJunitParser(opts) + const result = await parser.parse(filePath, fileContent) + + expect(result.result === 'failed') + expect(result.failed === 1) + }) }) diff --git a/__tests__/java-stack-trace-element-parser.test.ts b/__tests__/java-stack-trace-element-parser.test.ts new file mode 100644 index 0000000..6fe1ac2 --- /dev/null +++ b/__tests__/java-stack-trace-element-parser.test.ts @@ -0,0 +1,75 @@ +import {parseStackTraceElement} from '../src/parsers/java-junit/java-stack-trace-element-parser' + +describe('parseStackTraceLine tests', () => { + it('empty line is not parsed', async () => { + const line = '' + expect(parseStackTraceElement(line)).toBe(undefined) + }) + + describe('java class', () => { + it('simple', async () => { + const line = + 'at org.apache.pulsar.AddMissingPatchVersionTest.testVersionStrings(AddMissingPatchVersionTest.java:29)' + expect(parseStackTraceElement(line)).toEqual({ + tracePath: 'org.apache.pulsar.AddMissingPatchVersionTest.testVersionStrings', + fileName: 'AddMissingPatchVersionTest.java', + lineStr: '29' + }) + }) + + it('inner class', async () => { + const line = 'at com.foo.Main$Inner.run(Main.java:29)' + expect(parseStackTraceElement(line)).toEqual({ + tracePath: 'com.foo.Main$Inner.run', + fileName: 'Main.java', + lineStr: '29' + }) + }) + + it('starts with whitespaces', async () => { + const line = + ' \tat org.apache.pulsar.AddMissingPatchVersionTest.testVersionStrings(AddMissingPatchVersionTest.java:29)' + expect(parseStackTraceElement(line)).toEqual({ + tracePath: 'org.apache.pulsar.AddMissingPatchVersionTest.testVersionStrings', + fileName: 'AddMissingPatchVersionTest.java', + lineStr: '29' + }) + }) + + describe('since Java 9', () => { + it('with classloader and module', async () => { + // Based on Java 9 StackTraceElement.toString() Doc: https://docs.oracle.com/javase/9/docs/api/java/lang/StackTraceElement.html#toString-- + const line = 'at com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)' + expect(parseStackTraceElement(line)).toEqual({ + classLoader: 'com.foo.loader', + moduleNameAndVersion: 'foo@9.0', + tracePath: 'com.foo.Main.run', + fileName: 'Main.java', + lineStr: '101' + }) + }) + + it('with classloader', async () => { + const line = 'at com.foo.loader//com.foo.Main.run(Main.java:101)' + expect(parseStackTraceElement(line)).toEqual({ + classLoader: 'com.foo.loader', + moduleNameAndVersion: undefined, + tracePath: 'com.foo.Main.run', + fileName: 'Main.java', + lineStr: '101' + }) + }) + }) + }) + + describe('Kotlin class', () => { + it('method name containing whitespaces', async () => { + const line = 'at com.foo.Main.method with whitespaces(Main.kt:18)' + expect(parseStackTraceElement(line)).toEqual({ + tracePath: 'com.foo.Main.method with whitespaces', + fileName: 'Main.kt', + lineStr: '18' + }) + }) + }) +}) diff --git a/__tests__/jest-junit.test.ts b/__tests__/jest-junit.test.ts index 0a5703e..d42405c 100644 --- a/__tests__/jest-junit.test.ts +++ b/__tests__/jest-junit.test.ts @@ -7,7 +7,7 @@ import {getReport} from '../src/report/get-report' import {normalizeFilePath} from '../src/utils/path-utils' describe('jest-junit tests', () => { - it('produces empty test run result when there are no test cases', async () => { + it('produces empty test run result when there are no test cases in the testsuites element', async () => { const fixturePath = path.join(__dirname, 'fixtures', 'empty', 'jest-junit.xml') const filePath = normalizeFilePath(path.relative(__dirname, fixturePath)) const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'}) @@ -23,6 +23,22 @@ describe('jest-junit tests', () => { expect(result.result).toBe('success') }) + it('produces empty test run result when there are no test cases in a nested testsuite element', async () => { + const fixturePath = path.join(__dirname, 'fixtures', 'empty', 'jest-junit-empty-testsuite.xml') + const filePath = normalizeFilePath(path.relative(__dirname, fixturePath)) + const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'}) + + const opts: ParseOptions = { + parseErrors: true, + trackedFiles: [] + } + + const parser = new JestJunitParser(opts) + const result = await parser.parse(filePath, fileContent) + expect(result.tests).toBe(0) + expect(result.result).toBe('success') + }) + it('report from ./reports/jest test results matches snapshot', async () => { const fixturePath = path.join(__dirname, 'fixtures', 'jest-junit.xml') const outputPath = path.join(__dirname, '__outputs__', 'jest-junit.md') @@ -66,4 +82,27 @@ describe('jest-junit tests', () => { fs.mkdirSync(path.dirname(outputPath), {recursive: true}) fs.writeFileSync(outputPath, report) }) + + it('report from #235 testing react components named ', async () => { + const fixturePath = path.join(__dirname, 'fixtures', 'external', 'jest', 'jest-react-component-test-results.xml') + const trackedFilesPath = path.join(__dirname, 'fixtures', 'external', 'jest', 'files.txt') + const outputPath = path.join(__dirname, '__outputs__', 'jest-react-component-test-results.md') + const filePath = normalizeFilePath(path.relative(__dirname, fixturePath)) + const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'}) + + const trackedFiles = fs.readFileSync(trackedFilesPath, {encoding: 'utf8'}).split(/\n\r?/g) + const opts: ParseOptions = { + parseErrors: true, + trackedFiles + //workDir: '/home/dorny/dorny/jest/' + } + + const parser = new JestJunitParser(opts) + const result = await parser.parse(filePath, fileContent) + expect(result).toMatchSnapshot() + + const report = getReport([result]) + fs.mkdirSync(path.dirname(outputPath), {recursive: true}) + fs.writeFileSync(outputPath, report) + }) }) diff --git a/__tests__/swift-xunit.test.ts b/__tests__/swift-xunit.test.ts new file mode 100644 index 0000000..474c868 --- /dev/null +++ b/__tests__/swift-xunit.test.ts @@ -0,0 +1,30 @@ +import * as fs from 'fs' +import * as path from 'path' + +import {SwiftXunitParser} from '../src/parsers/swift-xunit/swift-xunit-parser' +import {ParseOptions} from '../src/test-parser' +import {getReport} from '../src/report/get-report' +import {normalizeFilePath} from '../src/utils/path-utils' + +describe('swift-xunit tests', () => { + it('report from swift test results matches snapshot', async () => { + const fixturePath = path.join(__dirname, 'fixtures', 'swift-xunit.xml') + const outputPath = path.join(__dirname, '__outputs__', 'swift-xunit.md') + const filePath = normalizeFilePath(path.relative(__dirname, fixturePath)) + const fileContent = fs.readFileSync(fixturePath, {encoding: 'utf8'}) + + const trackedFiles = ['Package.swift', 'Sources/AcmeLib/AcmeLib.swift', 'Tests/AcmeLibTests/AcmeLibTests.swift'] + const opts: ParseOptions = { + parseErrors: true, + trackedFiles + } + + const parser = new SwiftXunitParser(opts) + const result = await parser.parse(filePath, fileContent) + expect(result).toMatchSnapshot() + + const report = getReport([result]) + fs.mkdirSync(path.dirname(outputPath), {recursive: true}) + fs.writeFileSync(outputPath, report) + }) +}) diff --git a/action.yml b/action.yml index ff45f2b..5f3687e 100644 --- a/action.yml +++ b/action.yml @@ -11,7 +11,7 @@ inputs: required: true path: description: | - Coma separated list of paths to test results + Comma-separated list of paths to test results Supports wildcards via [fast-glob](https://github.com/mrmlnc/fast-glob) All matched result files must be of same format required: true @@ -31,6 +31,7 @@ inputs: - java-junit - jest-junit - mocha-json + - swift-xunit required: true list-suites: description: | @@ -38,7 +39,7 @@ inputs: - all - only-failed - none - required: true + required: false default: 'all' list-tests: description: | @@ -46,16 +47,20 @@ inputs: - all - only-failed - none - required: true + required: false default: 'all' max-annotations: description: | Limits number of created annotations with error message and stack trace captured during test execution. Must be less or equal to 50. - required: true + required: false default: '10' fail-on-error: description: Set this action as failed if test report contain any failed test + required: false + default: 'true' + fail-on-empty: + description: Set this action as failed if no test results were found required: true default: 'true' working-directory: @@ -96,6 +101,10 @@ outputs: description: Count of skipped tests time: description: Test execution time [ms] + url: + description: Check run URL + url_html: + description: Check run URL HTML runs: using: 'node20' main: 'dist/index.js' diff --git a/dist/index.js b/dist/index.js index a3564b2..611a838 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,4 +1,4 @@ -require('./sourcemap-register.js');/******/ (() => { // webpackBootstrap +/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 7171: @@ -266,9 +266,9 @@ const dotnet_trx_parser_1 = __nccwpck_require__(2664); const java_junit_parser_1 = __nccwpck_require__(676); const jest_junit_parser_1 = __nccwpck_require__(1113); const mocha_json_parser_1 = __nccwpck_require__(6043); +const swift_xunit_parser_1 = __nccwpck_require__(5366); const path_utils_1 = __nccwpck_require__(4070); const github_utils_1 = __nccwpck_require__(3522); -const markdown_utils_1 = __nccwpck_require__(6482); function main() { return __awaiter(this, void 0, void 0, function* () { try { @@ -294,6 +294,7 @@ class TestReporter { this.listTests = core.getInput('list-tests', { required: true }); this.maxAnnotations = parseInt(core.getInput('max-annotations', { required: true })); this.failOnError = core.getInput('fail-on-error', { required: true }) === 'true'; + this.failOnEmpty = core.getInput('fail-on-empty', { required: true }) === 'true'; this.workDirInput = core.getInput('working-directory', { required: false }); this.onlySummary = core.getInput('only-summary', { required: false }) === 'true'; this.useActionsSummary = core.getInput('use-actions-summary', { required: false }) === 'true'; @@ -329,9 +330,10 @@ class TestReporter { ? new artifact_provider_1.ArtifactProvider(this.octokit, this.artifact, this.name, pattern, this.context.sha, this.context.runId, this.token) : new local_file_provider_1.LocalFileProvider(this.name, pattern); const parseErrors = this.maxAnnotations > 0; - const trackedFiles = yield inputProvider.listTrackedFiles(); + const trackedFiles = parseErrors ? yield inputProvider.listTrackedFiles() : []; const workDir = this.artifact ? undefined : (0, path_utils_1.normalizeDirPath)(process.cwd(), true); - core.info(`Found ${trackedFiles.length} files tracked by GitHub`); + if (parseErrors) + core.info(`Found ${trackedFiles.length} files tracked by GitHub`); const options = { workDir, trackedFiles, @@ -366,7 +368,7 @@ class TestReporter { core.setFailed(`Failed test were found and 'fail-on-error' option is set to ${this.failOnError}`); return; } - if (results.length === 0) { + if (results.length === 0 && this.failOnEmpty) { core.setFailed(`No test report files were found`); return; } @@ -378,48 +380,56 @@ class TestReporter { core.warning(`No file matches path ${this.path}`); return []; } + core.info(`Processing test results for check run ${name}`); const results = []; for (const { file, content } of files) { - core.info(`Processing test results from ${file}`); - const tr = yield parser.parse(file, content); - results.push(tr); + try { + const tr = yield parser.parse(file, content); + results.push(tr); + } + catch (error) { + core.error(`Processing test results from ${file} failed`); + throw error; + } } - core.info('Creating report summary'); const { listSuites, listTests, onlySummary, useActionsSummary, badgeTitle } = this; let baseUrl = ''; - let checkRunId = 0; - if (!this.useActionsSummary) { - core.info(`Creating check run ${name}`); - const createResp = yield this.octokit.rest.checks.create(Object.assign({ head_sha: this.context.sha, name, status: 'in_progress', output: { - title: name, - summary: '' - } }, github.context.repo)); - baseUrl = createResp.data.html_url; - checkRunId = createResp.data.id; - } - const summary = (0, get_report_1.getReport)(results, { listSuites, listTests, baseUrl, onlySummary, useActionsSummary, badgeTitle }); if (this.useActionsSummary) { + const summary = (0, get_report_1.getReport)(results, { listSuites, listTests, baseUrl, onlySummary, useActionsSummary, badgeTitle }); core.info('Summary content:'); core.info(summary); yield fs.promises.writeFile(this.path.replace('*.trx', 'test-summary.md'), summary); core.info('File content:'); core.info(fs.readFileSync(this.path.replace('*.trx', 'test-summary.md'), 'utf8')); } - if (!this.useActionsSummary) { + else { + core.info(`Creating check run ${name}`); + const createResp = yield this.octokit.rest.checks.create(Object.assign({ head_sha: this.context.sha, name, status: 'in_progress', output: { + title: name, + summary: '' + } }, github.context.repo)); + core.info('Creating report summary'); + baseUrl = createResp.data.html_url; + const summary = (0, get_report_1.getReport)(results, { listSuites, listTests, baseUrl, onlySummary, useActionsSummary, badgeTitle }); core.info('Creating annotations'); const annotations = (0, get_annotations_1.getAnnotations)(results, this.maxAnnotations); - const isFailed = results.some(tr => tr.result === 'failed'); + const isFailed = this.failOnError && results.some(tr => tr.result === 'failed'); const conclusion = isFailed ? 'failure' : 'success'; - const icon = isFailed ? markdown_utils_1.Icon.fail : markdown_utils_1.Icon.success; + const passed = results.reduce((sum, tr) => sum + tr.passed, 0); + const failed = results.reduce((sum, tr) => sum + tr.failed, 0); + const skipped = results.reduce((sum, tr) => sum + tr.skipped, 0); + const shortSummary = `${passed} passed, ${failed} failed and ${skipped} skipped `; core.info(`Updating check run conclusion (${conclusion}) and output`); - const resp = yield this.octokit.rest.checks.update(Object.assign({ check_run_id: checkRunId, conclusion, status: 'completed', output: { - title: `${name} ${icon}`, + const resp = yield this.octokit.rest.checks.update(Object.assign({ check_run_id: createResp.data.id, conclusion, status: 'completed', output: { + title: shortSummary, summary, annotations } }, github.context.repo)); core.info(`Check run create response: ${resp.status}`); core.info(`Check run URL: ${resp.data.url}`); core.info(`Check run HTML: ${resp.data.html_url}`); + core.setOutput('url', resp.data.url); + core.setOutput('url_html', resp.data.html_url); } return results; }); @@ -438,6 +448,8 @@ class TestReporter { return new jest_junit_parser_1.JestJunitParser(options); case 'mocha-json': return new mocha_json_parser_1.MochaJsonParser(options); + case 'swift-xunit': + return new swift_xunit_parser_1.SwiftXunitParser(options); default: throw new Error(`Input variable 'reporter' is set to invalid value '${reporter}'`); } @@ -950,6 +962,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.JavaJunitParser = void 0; const path = __importStar(__nccwpck_require__(1017)); const xml2js_1 = __nccwpck_require__(6189); +const java_stack_trace_element_parser_1 = __nccwpck_require__(5775); const path_utils_1 = __nccwpck_require__(4070); const test_results_1 = __nccwpck_require__(2768); class JavaJunitParser { @@ -1061,10 +1074,12 @@ class JavaJunitParser { const details = typeof failure === 'object' ? failure._ : failure; let filePath; let line; - const src = this.exceptionThrowSource(details); - if (src) { - filePath = src.filePath; - line = src.line; + if (details != null) { + const src = this.exceptionThrowSource(details); + if (src) { + filePath = src.filePath; + line = src.line; + } } return { path: filePath, @@ -1075,11 +1090,10 @@ class JavaJunitParser { } exceptionThrowSource(stackTrace) { const lines = stackTrace.split(/\r?\n/); - const re = /^at (.*)\((.*):(\d+)\)$/; for (const str of lines) { - const match = str.match(re); - if (match !== null) { - const [_, tracePath, fileName, lineStr] = match; + const stackTraceElement = (0, java_stack_trace_element_parser_1.parseStackTraceElement)(str); + if (stackTraceElement) { + const { tracePath, fileName, lineStr } = stackTraceElement; const filePath = this.getFilePath(tracePath, fileName); if (filePath !== undefined) { const line = parseInt(lineStr); @@ -1132,6 +1146,49 @@ class JavaJunitParser { exports.JavaJunitParser = JavaJunitParser; +/***/ }), + +/***/ 5775: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.parseStackTraceElement = void 0; +// classloader and module name are optional: +// at //(:) +// https://github.com/eclipse-openj9/openj9/issues/11452#issuecomment-754946992 +const re = /^\s*at (\S+\/\S*\/)?(.*)\((.*):(\d+)\)$/; +function parseStackTraceElement(stackTraceLine) { + const match = stackTraceLine.match(re); + if (match !== null) { + const [_, maybeClassLoaderAndModuleNameAndVersion, tracePath, fileName, lineStr] = match; + const { classLoader, moduleNameAndVersion } = parseClassLoaderAndModule(maybeClassLoaderAndModuleNameAndVersion); + return { + classLoader, + moduleNameAndVersion, + tracePath, + fileName, + lineStr + }; + } + return undefined; +} +exports.parseStackTraceElement = parseStackTraceElement; +function parseClassLoaderAndModule(maybeClassLoaderAndModuleNameAndVersion) { + if (maybeClassLoaderAndModuleNameAndVersion) { + const res = maybeClassLoaderAndModuleNameAndVersion.split('/'); + const classLoader = res[0]; + let moduleNameAndVersion = res[1]; + if (moduleNameAndVersion === '') { + moduleNameAndVersion = undefined; + } + return { classLoader, moduleNameAndVersion }; + } + return { classLoader: undefined, moduleNameAndVersion: undefined }; +} + + /***/ }), /***/ 1113: @@ -1178,7 +1235,7 @@ class JestJunitParser { const suites = junit.testsuites.testsuite === undefined ? [] : junit.testsuites.testsuite.map(ts => { - const name = ts.$.name.trim(); + const name = this.escapeCharacters(ts.$.name.trim()); const time = parseFloat(ts.$.time) * 1000; const sr = new test_results_1.TestSuiteResult(name, this.getGroups(ts), time); return sr; @@ -1187,6 +1244,9 @@ class JestJunitParser { return new test_results_1.TestRunResult(path, suites, time); } getGroups(suite) { + if (!suite.testcase) { + return []; + } const groups = []; for (const tc of suite.testcase) { let grp = groups.find(g => g.describe === tc.$.classname); @@ -1244,6 +1304,9 @@ class JestJunitParser { var _a, _b; return ((_b = (_a = this.options.workDir) !== null && _a !== void 0 ? _a : this.assumedWorkDir) !== null && _b !== void 0 ? _b : (this.assumedWorkDir = (0, path_utils_1.getBasePath)(path, this.options.trackedFiles))); } + escapeCharacters(s) { + return s.replace(/([<>])/g, '\\$1'); + } } exports.JestJunitParser = JestJunitParser; @@ -1361,6 +1424,25 @@ class MochaJsonParser { exports.MochaJsonParser = MochaJsonParser; +/***/ }), + +/***/ 5366: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SwiftXunitParser = void 0; +const java_junit_parser_1 = __nccwpck_require__(676); +class SwiftXunitParser extends java_junit_parser_1.JavaJunitParser { + constructor(options) { + super(options); + this.options = options; + } +} +exports.SwiftXunitParser = SwiftXunitParser; + + /***/ }), /***/ 5867: @@ -2074,7 +2156,7 @@ var Align; Align["Center"] = ":---:"; Align["Right"] = "---:"; Align["None"] = "---"; -})(Align = exports.Align || (exports.Align = {})); +})(Align || (exports.Align = Align = {})); exports.Icon = { skip: ':warning:', success: ':white_check_mark:', @@ -2180,8 +2262,8 @@ function parseIsoDate(str) { } exports.parseIsoDate = parseIsoDate; function getFirstNonEmptyLine(stackTrace) { - const lines = stackTrace.split(/\r?\n/g); - return lines.find(str => !/^\s*$/.test(str)); + const lines = stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.split(/\r?\n/g); + return lines === null || lines === void 0 ? void 0 : lines.find(str => !/^\s*$/.test(str)); } exports.getFirstNonEmptyLine = getFirstNonEmptyLine; @@ -2816,7 +2898,7 @@ class OidcClient { .catch(error => { throw new Error(`Failed to get ID Token. \n Error Code : ${error.statusCode}\n - Error Message: ${error.result.message}`); + Error Message: ${error.message}`); }); const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; if (!id_token) { @@ -4004,8 +4086,8 @@ class Context { var _a, _b, _c; this.payload = {}; if (process.env.GITHUB_EVENT_PATH) { - if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) { - this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); + if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) { + this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' })); } else { const path = process.env.GITHUB_EVENT_PATH; @@ -4023,7 +4105,8 @@ class Context { this.runId = parseInt(process.env.GITHUB_RUN_ID, 10); this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`; this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`; - this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; + this.graphqlUrl = + (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`; } get issue() { const payload = this.payload; @@ -4055,7 +4138,11 @@ exports.Context = Context; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4068,7 +4155,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -4083,8 +4170,9 @@ exports.context = new Context.Context(); * @param token the repo PAT or GITHUB_TOKEN * @param options other options to set */ -function getOctokit(token, options) { - return new utils_1.GitHub(utils_1.getOctokitOptions(token, options)); +function getOctokit(token, options, ...additionalPlugins) { + const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); + return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options)); } exports.getOctokit = getOctokit; //# sourceMappingURL=github.js.map @@ -4098,7 +4186,11 @@ exports.getOctokit = getOctokit; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4111,13 +4203,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + 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) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0; +exports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0; const httpClient = __importStar(__nccwpck_require__(6255)); +const undici_1 = __nccwpck_require__(1773); function getAuthString(token, options) { if (!token && !options.auth) { throw new Error('Parameter token or opts.auth is required'); @@ -4133,6 +4235,19 @@ function getProxyAgent(destinationUrl) { return hc.getAgent(destinationUrl); } exports.getProxyAgent = getProxyAgent; +function getProxyAgentDispatcher(destinationUrl) { + const hc = new httpClient.HttpClient(); + return hc.getAgentDispatcher(destinationUrl); +} +exports.getProxyAgentDispatcher = getProxyAgentDispatcher; +function getProxyFetch(destinationUrl) { + const httpDispatcher = getProxyAgentDispatcher(destinationUrl); + const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () { + return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher })); + }); + return proxyFetch; +} +exports.getProxyFetch = getProxyFetch; function getApiBaseUrl() { return process.env['GITHUB_API_URL'] || 'https://api.github.com'; } @@ -4148,7 +4263,11 @@ exports.getApiBaseUrl = getApiBaseUrl; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4161,12 +4280,12 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getOctokitOptions = exports.GitHub = exports.context = void 0; +exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; const Context = __importStar(__nccwpck_require__(4087)); const Utils = __importStar(__nccwpck_require__(7914)); // octokit + plugins @@ -4175,13 +4294,14 @@ const plugin_rest_endpoint_methods_1 = __nccwpck_require__(3044); const plugin_paginate_rest_1 = __nccwpck_require__(4193); exports.context = new Context.Context(); const baseUrl = Utils.getApiBaseUrl(); -const defaults = { +exports.defaults = { baseUrl, request: { - agent: Utils.getProxyAgent(baseUrl) + agent: Utils.getProxyAgent(baseUrl), + fetch: Utils.getProxyFetch(baseUrl) } }; -exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(defaults); +exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults); /** * Convience function to correctly format Octokit Options to pass into the constructor. * @@ -4298,7 +4418,11 @@ exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHand /* eslint-disable @typescript-eslint/no-explicit-any */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -4311,7 +4435,7 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; @@ -4330,6 +4454,7 @@ const http = __importStar(__nccwpck_require__(3685)); const https = __importStar(__nccwpck_require__(5687)); const pm = __importStar(__nccwpck_require__(9835)); const tunnel = __importStar(__nccwpck_require__(4294)); +const undici_1 = __nccwpck_require__(1773); var HttpCodes; (function (HttpCodes) { HttpCodes[HttpCodes["OK"] = 200] = "OK"; @@ -4359,16 +4484,16 @@ var HttpCodes; HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +})(HttpCodes || (exports.HttpCodes = HttpCodes = {})); var Headers; (function (Headers) { Headers["Accept"] = "accept"; Headers["ContentType"] = "content-type"; -})(Headers = exports.Headers || (exports.Headers = {})); +})(Headers || (exports.Headers = Headers = {})); var MediaTypes; (function (MediaTypes) { MediaTypes["ApplicationJson"] = "application/json"; -})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +})(MediaTypes || (exports.MediaTypes = MediaTypes = {})); /** * Returns the proxy URL, depending upon the supplied url and proxy environment variables. * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com @@ -4419,6 +4544,19 @@ class HttpClientResponse { })); }); } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', (chunk) => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + })); + }); + } } exports.HttpClientResponse = HttpClientResponse; function isHttps(requestUrl) { @@ -4724,6 +4862,15 @@ class HttpClient { const parsedUrl = new URL(serverUrl); return this._getAgent(parsedUrl); } + getAgentDispatcher(serverUrl) { + const parsedUrl = new URL(serverUrl); + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (!useProxy) { + return; + } + return this._getProxyAgentDispatcher(parsedUrl, proxyUrl); + } _prepareRequest(method, requestUrl, headers) { const info = {}; info.parsedUrl = requestUrl; @@ -4823,6 +4970,30 @@ class HttpClient { } return agent; } + _getProxyAgentDispatcher(parsedUrl, proxyUrl) { + let proxyAgent; + if (this._keepAlive) { + proxyAgent = this._proxyAgentDispatcher; + } + // if agent is already assigned use that agent. + if (proxyAgent) { + return proxyAgent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && { + token: `${proxyUrl.username}:${proxyUrl.password}` + }))); + this._proxyAgentDispatcher = proxyAgent; + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, { + rejectUnauthorized: false + }); + } + return proxyAgent; + } _performExponentialBackoff(retryNumber) { return __awaiter(this, void 0, void 0, function* () { retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); @@ -4923,7 +5094,13 @@ function getProxyUrl(reqUrl) { } })(); if (proxyVar) { - return new URL(proxyVar); + try { + return new URL(proxyVar); + } + catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) + return new URL(`http://${proxyVar}`); + } } else { return undefined; @@ -4934,6 +5111,10 @@ function checkBypass(reqUrl) { if (!reqUrl.hostname) { return false; } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; if (!noProxy) { return false; @@ -4959,13 +5140,24 @@ function checkBypass(reqUrl) { .split(',') .map(x => x.trim().toUpperCase()) .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { + if (upperNoProxyItem === '*' || + upperReqHosts.some(x => x === upperNoProxyItem || + x.endsWith(`.${upperNoProxyItem}`) || + (upperNoProxyItem.startsWith('.') && + x.endsWith(`${upperNoProxyItem}`)))) { return true; } } return false; } exports.checkBypass = checkBypass; +function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return (hostLower === 'localhost' || + hostLower.startsWith('127.') || + hostLower.startsWith('[::1]') || + hostLower.startsWith('[0:0:0:0:0:0:0:1]')); +} //# sourceMappingURL=proxy.js.map /***/ }), @@ -5005,11 +5197,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; var _a; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; const fs = __importStar(__nccwpck_require__(7147)); const path = __importStar(__nccwpck_require__(1017)); -_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +_a = fs.promises +// export const {open} = 'fs' +, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +// export const {open} = 'fs' exports.IS_WINDOWS = process.platform === 'win32'; +// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691 +exports.UV_FS_O_EXLOCK = 0x10000000; +exports.READONLY = fs.constants.O_RDONLY; function exists(fsPath) { return __awaiter(this, void 0, void 0, function* () { try { @@ -5190,12 +5388,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge Object.defineProperty(exports, "__esModule", ({ value: true })); exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; const assert_1 = __nccwpck_require__(9491); -const childProcess = __importStar(__nccwpck_require__(2081)); const path = __importStar(__nccwpck_require__(1017)); -const util_1 = __nccwpck_require__(3837); const ioUtil = __importStar(__nccwpck_require__(1962)); -const exec = util_1.promisify(childProcess.exec); -const execFile = util_1.promisify(childProcess.execFile); /** * Copies a file or folder. * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js @@ -5276,61 +5470,23 @@ exports.mv = mv; function rmRF(inputPath) { return __awaiter(this, void 0, void 0, function* () { if (ioUtil.IS_WINDOWS) { - // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another - // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del. // Check for invalid characters // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file if (/[*"<>|]/.test(inputPath)) { throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); } - try { - const cmdPath = ioUtil.getCmdPath(); - if (yield ioUtil.isDirectory(inputPath, true)) { - yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, { - env: { inputPath } - }); - } - else { - yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, { - env: { inputPath } - }); - } - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - } - // Shelling out fails to remove a symlink folder with missing source, this unlink catches that - try { - yield ioUtil.unlink(inputPath); - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - } } - else { - let isDir = false; - try { - isDir = yield ioUtil.isDirectory(inputPath); - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - return; - } - if (isDir) { - yield execFile(`rm`, [`-rf`, `${inputPath}`]); - } - else { - yield ioUtil.unlink(inputPath); - } + try { + // note if path does not exist, error is silent + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300 + }); + } + catch (err) { + throw new Error(`File was unable to be removed ${err}`); } }); } @@ -6422,16 +6578,39 @@ exports["default"] = Settings; /***/ }), /***/ 334: -/***/ ((__unused_webpack_module, exports) => { +/***/ ((module) => { "use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -Object.defineProperty(exports, "__esModule", ({ value: true })); +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + createTokenAuth: () => createTokenAuth +}); +module.exports = __toCommonJS(dist_src_exports); -const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; -const REGEX_IS_INSTALLATION = /^ghs_/; -const REGEX_IS_USER_TO_SERVER = /^ghu_/; +// pkg/dist-src/auth.js +var REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +var REGEX_IS_INSTALLATION = /^ghs_/; +var REGEX_IS_USER_TO_SERVER = /^ghu_/; async function auth(token) { const isApp = token.split(/\./).length === 3; const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); @@ -6439,109 +6618,144 @@ async function auth(token) { const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; return { type: "token", - token: token, + token, tokenType }; } -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ +// pkg/dist-src/with-authorization-prefix.js function withAuthorizationPrefix(token) { if (token.split(/\./).length === 3) { return `bearer ${token}`; } - return `token ${token}`; } +// pkg/dist-src/hook.js async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); + const endpoint = request.endpoint.merge( + route, + parameters + ); endpoint.headers.authorization = withAuthorizationPrefix(token); return request(endpoint); } -const createTokenAuth = function createTokenAuth(token) { +// pkg/dist-src/index.js +var createTokenAuth = function createTokenAuth2(token) { if (!token) { throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); } - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); + throw new Error( + "[@octokit/auth-token] Token passed to createTokenAuth is not a string" + ); } - token = token.replace(/^(token|bearer) +/i, ""); return Object.assign(auth.bind(null, token), { hook: hook.bind(null, token) }); }; - -exports.createTokenAuth = createTokenAuth; -//# sourceMappingURL=index.js.map +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), /***/ 6762: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -var universalUserAgent = __nccwpck_require__(5030); -var beforeAfterHook = __nccwpck_require__(3682); -var request = __nccwpck_require__(6234); -var graphql = __nccwpck_require__(8467); -var authToken = __nccwpck_require__(334); - -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - return target; -} - -function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - - var target = _objectWithoutPropertiesLoose(source, excluded); - - var key, i; - - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + Octokit: () => Octokit +}); +module.exports = __toCommonJS(dist_src_exports); +var import_universal_user_agent = __nccwpck_require__(5030); +var import_before_after_hook = __nccwpck_require__(3682); +var import_request = __nccwpck_require__(6234); +var import_graphql = __nccwpck_require__(8467); +var import_auth_token = __nccwpck_require__(334); + +// pkg/dist-src/version.js +var VERSION = "5.0.2"; + +// pkg/dist-src/index.js +var noop = () => { +}; +var consoleWarn = console.warn.bind(console); +var consoleError = console.error.bind(console); +var userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; +var Octokit = class { + static { + this.VERSION = VERSION; + } + static defaults(defaults) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; + if (typeof defaults === "function") { + super(defaults(options)); + return; + } + super( + Object.assign( + {}, + defaults, + options, + options.userAgent && defaults.userAgent ? { + userAgent: `${options.userAgent} ${defaults.userAgent}` + } : null + ) + ); + } + }; + return OctokitWithDefaults; + } + static { + this.plugins = []; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ + static plugin(...newPlugins) { + const currentPlugins = this.plugins; + const NewOctokit = class extends this { + static { + this.plugins = currentPlugins.concat( + newPlugins.filter((plugin) => !currentPlugins.includes(plugin)) + ); + } + }; + return NewOctokit; } - - return target; -} - -const VERSION = "3.6.0"; - -const _excluded = ["authStrategy"]; -class Octokit { constructor(options = {}) { - const hook = new beforeAfterHook.Collection(); + const hook = new import_before_after_hook.Collection(); const requestDefaults = { - baseUrl: request.request.endpoint.DEFAULTS.baseUrl, + baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl, headers: {}, request: Object.assign({}, options.request, { // @ts-ignore internal usage only, no need to type @@ -6551,321 +6765,283 @@ class Octokit { previews: [], format: "" } - }; // prepend default user agent with `options.userAgent` if set - - requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" "); - + }; + requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail; if (options.baseUrl) { requestDefaults.baseUrl = options.baseUrl; } - if (options.previews) { requestDefaults.mediaType.previews = options.previews; } - if (options.timeZone) { requestDefaults.headers["time-zone"] = options.timeZone; } - - this.request = request.request.defaults(requestDefaults); - this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign({ - debug: () => {}, - info: () => {}, - warn: console.warn.bind(console), - error: console.error.bind(console) - }, options.log); - this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance - // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. - // (2) If only `options.auth` is set, use the default token authentication strategy. - // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. - // TODO: type `options.auth` based on `options.authStrategy`. - + this.request = import_request.request.defaults(requestDefaults); + this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults); + this.log = Object.assign( + { + debug: noop, + info: noop, + warn: consoleWarn, + error: consoleError + }, + options.log + ); + this.hook = hook; if (!options.authStrategy) { if (!options.auth) { - // (1) this.auth = async () => ({ type: "unauthenticated" }); } else { - // (2) - const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ - + const auth = (0, import_auth_token.createTokenAuth)(options.auth); hook.wrap("request", auth.hook); this.auth = auth; } } else { - const { - authStrategy - } = options, - otherOptions = _objectWithoutProperties(options, _excluded); - - const auth = authStrategy(Object.assign({ - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions - }, options.auth)); // @ts-ignore ¯\_(ツ)_/¯ - + const { authStrategy, ...otherOptions } = options; + const auth = authStrategy( + Object.assign( + { + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, + options.auth + ) + ); hook.wrap("request", auth.hook); this.auth = auth; - } // apply plugins - // https://stackoverflow.com/a/16345172 - - + } const classConstructor = this.constructor; - classConstructor.plugins.forEach(plugin => { - Object.assign(this, plugin(this, options)); - }); - } - - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; - - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - - super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } : null)); - } - - }; - return OctokitWithDefaults; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ - - - static plugin(...newPlugins) { - var _a; - - const currentPlugins = this.plugins; - const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a); - return NewOctokit; + for (let i = 0; i < classConstructor.plugins.length; ++i) { + Object.assign(this, classConstructor.plugins[i](this, options)); + } } - -} -Octokit.VERSION = VERSION; -Octokit.plugins = []; - -exports.Octokit = Octokit; -//# sourceMappingURL=index.js.map +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), /***/ 9440: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -Object.defineProperty(exports, "__esModule", ({ value: true })); +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + endpoint: () => endpoint +}); +module.exports = __toCommonJS(dist_src_exports); -var isPlainObject = __nccwpck_require__(3287); -var universalUserAgent = __nccwpck_require__(5030); +// pkg/dist-src/defaults.js +var import_universal_user_agent = __nccwpck_require__(5030); +// pkg/dist-src/version.js +var VERSION = "9.0.4"; + +// pkg/dist-src/defaults.js +var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`; +var DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "" + } +}; + +// pkg/dist-src/util/lowercase-keys.js function lowercaseKeys(object) { if (!object) { return {}; } - return Object.keys(object).reduce((newObj, key) => { newObj[key.toLowerCase()] = object[key]; return newObj; }, {}); } +// pkg/dist-src/util/is-plain-object.js +function isPlainObject(value) { + if (typeof value !== "object" || value === null) + return false; + if (Object.prototype.toString.call(value) !== "[object Object]") + return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) + return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} + +// pkg/dist-src/util/merge-deep.js function mergeDeep(defaults, options) { const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { - [key]: options[key] - });else result[key] = mergeDeep(defaults[key], options[key]); + Object.keys(options).forEach((key) => { + if (isPlainObject(options[key])) { + if (!(key in defaults)) + Object.assign(result, { [key]: options[key] }); + else + result[key] = mergeDeep(defaults[key], options[key]); } else { - Object.assign(result, { - [key]: options[key] - }); + Object.assign(result, { [key]: options[key] }); } }); return result; } +// pkg/dist-src/util/remove-undefined-properties.js function removeUndefinedProperties(obj) { for (const key in obj) { - if (obj[key] === undefined) { + if (obj[key] === void 0) { delete obj[key]; } } - return obj; } +// pkg/dist-src/merge.js function merge(defaults, route, options) { if (typeof route === "string") { let [method, url] = route.split(" "); - options = Object.assign(url ? { - method, - url - } : { - url: method - }, options); + options = Object.assign(url ? { method, url } : { url: method }, options); } else { options = Object.assign({}, route); - } // lowercase header names before merging with defaults to avoid duplicates - - - options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging - + } + options.headers = lowercaseKeys(options.headers); removeUndefinedProperties(options); removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten - - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); + const mergedOptions = mergeDeep(defaults || {}, options); + if (options.url === "/graphql") { + if (defaults && defaults.mediaType.previews?.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter( + (preview) => !mergedOptions.mediaType.previews.includes(preview) + ).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, "")); } - - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); return mergedOptions; } +// pkg/dist-src/util/add-query-parameters.js function addQueryParameters(url, parameters) { const separator = /\?/.test(url) ? "&" : "?"; const names = Object.keys(parameters); - if (names.length === 0) { return url; } - - return url + separator + names.map(name => { + return url + separator + names.map((name) => { if (name === "q") { return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); } - return `${name}=${encodeURIComponent(parameters[name])}`; }).join("&"); } -const urlVariableRegex = /\{[^}]+\}/g; - +// pkg/dist-src/util/extract-url-variable-names.js +var urlVariableRegex = /\{[^}]+\}/g; function removeNonChars(variableName) { return variableName.replace(/^\W+|\W+$/g, "").split(/,/); } - function extractUrlVariableNames(url) { const matches = url.match(urlVariableRegex); - if (!matches) { return []; } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); } +// pkg/dist-src/util/omit.js function omit(object, keysToOmit) { - return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); + const result = { __proto__: null }; + for (const key of Object.keys(object)) { + if (keysToOmit.indexOf(key) === -1) { + result[key] = object[key]; + } + } + return result; } -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* istanbul ignore file */ +// pkg/dist-src/util/url-template.js function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) { if (!/%[0-9A-Fa-f]/.test(part)) { part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); } - return part; }).join(""); } - function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { return "%" + c.charCodeAt(0).toString(16).toUpperCase(); }); } - function encodeValue(operator, value, key) { value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (key) { return encodeUnreserved(key) + "=" + value; } else { return value; } } - function isDefined(value) { - return value !== undefined && value !== null; + return value !== void 0 && value !== null; } - function isKeyOperator(operator) { return operator === ";" || operator === "&" || operator === "?"; } - function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - + var value = context[key], result = []; if (isDefined(value) && value !== "") { if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { value = value.toString(); - if (modifier && modifier !== "*") { value = value.substring(0, parseInt(modifier, 10)); } - - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + result.push( + encodeValue(operator, value, isKeyOperator(operator) ? key : "") + ); } else { if (modifier === "*") { if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + value.filter(isDefined).forEach(function(value2) { + result.push( + encodeValue(operator, value2, isKeyOperator(operator) ? key : "") + ); }); } else { - Object.keys(value).forEach(function (k) { + Object.keys(value).forEach(function(k) { if (isDefined(value[k])) { result.push(encodeValue(operator, value[k], k)); } @@ -6873,20 +7049,18 @@ function getValues(context, operator, key, modifier) { } } else { const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); + value.filter(isDefined).forEach(function(value2) { + tmp.push(encodeValue(operator, value2)); }); } else { - Object.keys(value).forEach(function (k) { + Object.keys(value).forEach(function(k) { if (isDefined(value[k])) { tmp.push(encodeUnreserved(k)); tmp.push(encodeValue(operator, value[k].toString())); } }); } - if (isKeyOperator(operator)) { result.push(encodeUnreserved(key) + "=" + tmp.join(",")); } else if (tmp.length !== 0) { @@ -6905,89 +7079,93 @@ function getValues(context, operator, key, modifier) { result.push(""); } } - return result; } - function parseUrl(template) { return { expand: expand.bind(null, template) }; } - function expand(template, context) { var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; - - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); - - if (operator && operator !== "+") { - var separator = ","; - - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; + template = template.replace( + /\{([^\{\}]+)\}|([^\{\}]+)/g, + function(_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } + expression.split(/,/g).forEach(function(variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); + if (operator && operator !== "+") { + var separator = ","; + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); } - - return (values.length !== 0 ? operator : "") + values.join(separator); } else { - return values.join(","); + return encodeReserved(literal); } - } else { - return encodeReserved(literal); } - }); + ); + if (template === "/") { + return template; + } else { + return template.replace(/\/$/, ""); + } } +// pkg/dist-src/parse.js function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible - + let method = options.method.toUpperCase(); let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); let headers = Object.assign({}, options.headers); let body; - let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later - + let parameters = omit(options, [ + "method", + "baseUrl", + "url", + "headers", + "request", + "mediaType" + ]); const urlVariableNames = extractUrlVariableNames(url); url = parseUrl(url).expand(parameters); - if (!/^http/.test(url)) { url = options.baseUrl + url; } - - const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); + const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl"); const remainingParameters = omit(parameters, omittedParameters); const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - if (!isBinaryRequest) { if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); + headers.accept = headers.accept.split(/,/).map( + (format) => format.replace( + /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, + `application/vnd$1$2.${options.mediaType.format}` + ) + ).join(","); } - - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); + if (url.endsWith("/graphql")) { + if (options.mediaType.previews?.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } } - } // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - - + } if (["GET", "HEAD"].includes(method)) { url = addQueryParameters(url, remainingParameters); } else { @@ -6996,183 +7174,189 @@ function parse(options) { } else { if (Object.keys(remainingParameters).length) { body = remainingParameters; - } else { - headers["content-length"] = 0; } } - } // default content-type for JSON if body is set - - + } if (!headers["content-type"] && typeof body !== "undefined") { headers["content-type"] = "application/json; charset=utf-8"; - } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string - - + } if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { body = ""; - } // Only return body/request keys if present - - - return Object.assign({ - method, - url, - headers - }, typeof body !== "undefined" ? { - body - } : null, options.request ? { - request: options.request - } : null); + } + return Object.assign( + { method, url, headers }, + typeof body !== "undefined" ? { body } : null, + options.request ? { request: options.request } : null + ); } +// pkg/dist-src/endpoint-with-defaults.js function endpointWithDefaults(defaults, route, options) { return parse(merge(defaults, route, options)); } +// pkg/dist-src/with-defaults.js function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), + const DEFAULTS2 = merge(oldDefaults, newDefaults); + const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2); + return Object.assign(endpoint2, { + DEFAULTS: DEFAULTS2, + defaults: withDefaults.bind(null, DEFAULTS2), + merge: merge.bind(null, DEFAULTS2), parse }); } -const VERSION = "6.0.12"; - -const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. - -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "", - previews: [] - } -}; - -const endpoint = withDefaults(null, DEFAULTS); - -exports.endpoint = endpoint; -//# sourceMappingURL=index.js.map +// pkg/dist-src/index.js +var endpoint = withDefaults(null, DEFAULTS); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), /***/ 8467: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + GraphqlResponseError: () => GraphqlResponseError, + graphql: () => graphql2, + withCustomRequest: () => withCustomRequest +}); +module.exports = __toCommonJS(dist_src_exports); +var import_request3 = __nccwpck_require__(6234); +var import_universal_user_agent = __nccwpck_require__(5030); -Object.defineProperty(exports, "__esModule", ({ value: true })); +// pkg/dist-src/version.js +var VERSION = "7.0.2"; -var request = __nccwpck_require__(6234); -var universalUserAgent = __nccwpck_require__(5030); +// pkg/dist-src/with-defaults.js +var import_request2 = __nccwpck_require__(6234); -const VERSION = "4.8.0"; +// pkg/dist-src/graphql.js +var import_request = __nccwpck_require__(6234); +// pkg/dist-src/error.js function _buildMessageForResponseErrors(data) { - return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n"); + return `Request failed due to following response errors: +` + data.errors.map((e) => ` - ${e.message}`).join("\n"); } - -class GraphqlResponseError extends Error { - constructor(request, headers, response) { +var GraphqlResponseError = class extends Error { + constructor(request2, headers, response) { super(_buildMessageForResponseErrors(response)); - this.request = request; + this.request = request2; this.headers = headers; this.response = response; - this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties. - + this.name = "GraphqlResponseError"; this.errors = response.errors; - this.data = response.data; // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - + this.data = response.data; if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } } +}; -} - -const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; -const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; -const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request, query, options) { +// pkg/dist-src/graphql.js +var NON_VARIABLE_OPTIONS = [ + "method", + "baseUrl", + "url", + "headers", + "request", + "query", + "mediaType" +]; +var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request2, query, options) { if (options) { if (typeof query === "string" && "query" in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); + return Promise.reject( + new Error(`[@octokit/graphql] "query" cannot be used as variable name`) + ); } - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) + continue; + return Promise.reject( + new Error( + `[@octokit/graphql] "${key}" cannot be used as variable name` + ) + ); } } - - const parsedOptions = typeof query === "string" ? Object.assign({ - query - }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { + const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query; + const requestOptions = Object.keys( + parsedOptions + ).reduce((result, key) => { if (NON_VARIABLE_OPTIONS.includes(key)) { result[key] = parsedOptions[key]; return result; } - if (!result.variables) { result.variables = {}; } - result.variables[key] = parsedOptions[key]; return result; - }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix - // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 - - const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; - + }, {}); + const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl; if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); } - - return request(requestOptions).then(response => { + return request2(requestOptions).then((response) => { if (response.data.errors) { const headers = {}; - for (const key of Object.keys(response.headers)) { headers[key] = response.headers[key]; } - - throw new GraphqlResponseError(requestOptions, headers, response.data); + throw new GraphqlResponseError( + requestOptions, + headers, + response.data + ); } - return response.data.data; }); } -function withDefaults(request$1, newDefaults) { - const newRequest = request$1.defaults(newDefaults); - +// pkg/dist-src/with-defaults.js +function withDefaults(request2, newDefaults) { + const newRequest = request2.defaults(newDefaults); const newApi = (query, options) => { return graphql(newRequest, query, options); }; - return Object.assign(newApi, { defaults: withDefaults.bind(null, newRequest), - endpoint: request.request.endpoint + endpoint: newRequest.endpoint }); } -const graphql$1 = withDefaults(request.request, { +// pkg/dist-src/index.js +var graphql2 = withDefaults(import_request3.request, { headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` + "user-agent": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` }, method: "POST", url: "/graphql" @@ -7183,94 +7367,59 @@ function withCustomRequest(customRequest) { url: "/graphql" }); } - -exports.GraphqlResponseError = GraphqlResponseError; -exports.graphql = graphql$1; -exports.withCustomRequest = withCustomRequest; -//# sourceMappingURL=index.js.map +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), /***/ 4193: -/***/ ((__unused_webpack_module, exports) => { +/***/ ((module) => { "use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + composePaginateRest: () => composePaginateRest, + isPaginatingEndpoint: () => isPaginatingEndpoint, + paginateRest: () => paginateRest, + paginatingEndpoints: () => paginatingEndpoints +}); +module.exports = __toCommonJS(dist_src_exports); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -const VERSION = "2.21.3"; - -function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - enumerableOnly && (symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - })), keys.push.apply(keys, symbols); - } - - return keys; -} - -function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = null != arguments[i] ? arguments[i] : {}; - i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { - _defineProperty(target, key, source[key]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - - return target; -} - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} +// pkg/dist-src/version.js +var VERSION = "9.1.5"; -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ +// pkg/dist-src/normalize-paginated-list-response.js function normalizePaginatedListResponse(response) { - // endpoints can respond with 204 if repository is empty if (!response.data) { - return _objectSpread2(_objectSpread2({}, response), {}, { + return { + ...response, data: [] - }); + }; } - const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way - // to retrieve the same information. - + if (!responseNeedsNormalization) + return response; const incompleteResults = response.data.incomplete_results; const repositorySelection = response.data.repository_selection; const totalCount = response.data.total_count; @@ -7280,19 +7429,17 @@ function normalizePaginatedListResponse(response) { const namespaceKey = Object.keys(response.data)[0]; const data = response.data[namespaceKey]; response.data = data; - if (typeof incompleteResults !== "undefined") { response.data.incomplete_results = incompleteResults; } - if (typeof repositorySelection !== "undefined") { response.data.repository_selection = repositorySelection; } - response.data.total_count = totalCount; return response; } +// pkg/dist-src/iterator.js function iterator(octokit, route, parameters) { const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); const requestMethod = typeof route === "function" ? route : octokit.request; @@ -7302,26 +7449,18 @@ function iterator(octokit, route, parameters) { return { [Symbol.asyncIterator]: () => ({ async next() { - if (!url) return { - done: true - }; - + if (!url) + return { done: true }; try { - const response = await requestMethod({ - method, - url, - headers - }); - const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format: - // '; rel="next", ; rel="last"' - // sets `url` to undefined if "next" URL is not present or `link` header is not set - - url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { - value: normalizedResponse - }; + const response = await requestMethod({ method, url, headers }); + const normalizedResponse = normalizePaginatedListResponse(response); + url = ((normalizedResponse.headers.link || "").match( + /<([^>]+)>;\s*rel="next"/ + ) || [])[1]; + return { value: normalizedResponse }; } catch (error) { - if (error.status !== 409) throw error; + if (error.status !== 409) + throw error; url = ""; return { value: { @@ -7332,48 +7471,284 @@ function iterator(octokit, route, parameters) { }; } } - }) }; } +// pkg/dist-src/paginate.js function paginate(octokit, route, parameters, mapFn) { if (typeof parameters === "function") { mapFn = parameters; - parameters = undefined; + parameters = void 0; } - - return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); + return gather( + octokit, + [], + iterator(octokit, route, parameters)[Symbol.asyncIterator](), + mapFn + ); } - -function gather(octokit, results, iterator, mapFn) { - return iterator.next().then(result => { +function gather(octokit, results, iterator2, mapFn) { + return iterator2.next().then((result) => { if (result.done) { return results; } - let earlyExit = false; - function done() { earlyExit = true; } - - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); - + results = results.concat( + mapFn ? mapFn(result.value, done) : result.value.data + ); if (earlyExit) { return results; } - - return gather(octokit, results, iterator, mapFn); + return gather(octokit, results, iterator2, mapFn); }); } -const composePaginateRest = Object.assign(paginate, { +// pkg/dist-src/compose-paginate.js +var composePaginateRest = Object.assign(paginate, { iterator }); -const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; +// pkg/dist-src/generated/paginating-endpoints.js +var paginatingEndpoints = [ + "GET /advisories", + "GET /app/hook/deliveries", + "GET /app/installation-requests", + "GET /app/installations", + "GET /assignments/{assignment_id}/accepted_assignments", + "GET /classrooms", + "GET /classrooms/{classroom_id}/assignments", + "GET /enterprises/{enterprise}/dependabot/alerts", + "GET /enterprises/{enterprise}/secret-scanning/alerts", + "GET /events", + "GET /gists", + "GET /gists/public", + "GET /gists/starred", + "GET /gists/{gist_id}/comments", + "GET /gists/{gist_id}/commits", + "GET /gists/{gist_id}/forks", + "GET /installation/repositories", + "GET /issues", + "GET /licenses", + "GET /marketplace_listing/plans", + "GET /marketplace_listing/plans/{plan_id}/accounts", + "GET /marketplace_listing/stubbed/plans", + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", + "GET /networks/{owner}/{repo}/events", + "GET /notifications", + "GET /organizations", + "GET /orgs/{org}/actions/cache/usage-by-repository", + "GET /orgs/{org}/actions/permissions/repositories", + "GET /orgs/{org}/actions/runners", + "GET /orgs/{org}/actions/secrets", + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", + "GET /orgs/{org}/actions/variables", + "GET /orgs/{org}/actions/variables/{name}/repositories", + "GET /orgs/{org}/blocks", + "GET /orgs/{org}/code-scanning/alerts", + "GET /orgs/{org}/codespaces", + "GET /orgs/{org}/codespaces/secrets", + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories", + "GET /orgs/{org}/copilot/billing/seats", + "GET /orgs/{org}/dependabot/alerts", + "GET /orgs/{org}/dependabot/secrets", + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", + "GET /orgs/{org}/events", + "GET /orgs/{org}/failed_invitations", + "GET /orgs/{org}/hooks", + "GET /orgs/{org}/hooks/{hook_id}/deliveries", + "GET /orgs/{org}/installations", + "GET /orgs/{org}/invitations", + "GET /orgs/{org}/invitations/{invitation_id}/teams", + "GET /orgs/{org}/issues", + "GET /orgs/{org}/members", + "GET /orgs/{org}/members/{username}/codespaces", + "GET /orgs/{org}/migrations", + "GET /orgs/{org}/migrations/{migration_id}/repositories", + "GET /orgs/{org}/outside_collaborators", + "GET /orgs/{org}/packages", + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + "GET /orgs/{org}/personal-access-token-requests", + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories", + "GET /orgs/{org}/personal-access-tokens", + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories", + "GET /orgs/{org}/projects", + "GET /orgs/{org}/properties/values", + "GET /orgs/{org}/public_members", + "GET /orgs/{org}/repos", + "GET /orgs/{org}/rulesets", + "GET /orgs/{org}/rulesets/rule-suites", + "GET /orgs/{org}/secret-scanning/alerts", + "GET /orgs/{org}/security-advisories", + "GET /orgs/{org}/teams", + "GET /orgs/{org}/teams/{team_slug}/discussions", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", + "GET /orgs/{org}/teams/{team_slug}/invitations", + "GET /orgs/{org}/teams/{team_slug}/members", + "GET /orgs/{org}/teams/{team_slug}/projects", + "GET /orgs/{org}/teams/{team_slug}/repos", + "GET /orgs/{org}/teams/{team_slug}/teams", + "GET /projects/columns/{column_id}/cards", + "GET /projects/{project_id}/collaborators", + "GET /projects/{project_id}/columns", + "GET /repos/{owner}/{repo}/actions/artifacts", + "GET /repos/{owner}/{repo}/actions/caches", + "GET /repos/{owner}/{repo}/actions/organization-secrets", + "GET /repos/{owner}/{repo}/actions/organization-variables", + "GET /repos/{owner}/{repo}/actions/runners", + "GET /repos/{owner}/{repo}/actions/runs", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", + "GET /repos/{owner}/{repo}/actions/secrets", + "GET /repos/{owner}/{repo}/actions/variables", + "GET /repos/{owner}/{repo}/actions/workflows", + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", + "GET /repos/{owner}/{repo}/activity", + "GET /repos/{owner}/{repo}/assignees", + "GET /repos/{owner}/{repo}/branches", + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", + "GET /repos/{owner}/{repo}/code-scanning/alerts", + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + "GET /repos/{owner}/{repo}/code-scanning/analyses", + "GET /repos/{owner}/{repo}/codespaces", + "GET /repos/{owner}/{repo}/codespaces/devcontainers", + "GET /repos/{owner}/{repo}/codespaces/secrets", + "GET /repos/{owner}/{repo}/collaborators", + "GET /repos/{owner}/{repo}/comments", + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/commits", + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", + "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", + "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", + "GET /repos/{owner}/{repo}/commits/{ref}/status", + "GET /repos/{owner}/{repo}/commits/{ref}/statuses", + "GET /repos/{owner}/{repo}/contributors", + "GET /repos/{owner}/{repo}/dependabot/alerts", + "GET /repos/{owner}/{repo}/dependabot/secrets", + "GET /repos/{owner}/{repo}/deployments", + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", + "GET /repos/{owner}/{repo}/environments", + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps", + "GET /repos/{owner}/{repo}/events", + "GET /repos/{owner}/{repo}/forks", + "GET /repos/{owner}/{repo}/hooks", + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", + "GET /repos/{owner}/{repo}/invitations", + "GET /repos/{owner}/{repo}/issues", + "GET /repos/{owner}/{repo}/issues/comments", + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/issues/events", + "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", + "GET /repos/{owner}/{repo}/issues/{issue_number}/events", + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", + "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", + "GET /repos/{owner}/{repo}/keys", + "GET /repos/{owner}/{repo}/labels", + "GET /repos/{owner}/{repo}/milestones", + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", + "GET /repos/{owner}/{repo}/notifications", + "GET /repos/{owner}/{repo}/pages/builds", + "GET /repos/{owner}/{repo}/projects", + "GET /repos/{owner}/{repo}/pulls", + "GET /repos/{owner}/{repo}/pulls/comments", + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", + "GET /repos/{owner}/{repo}/releases", + "GET /repos/{owner}/{repo}/releases/{release_id}/assets", + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", + "GET /repos/{owner}/{repo}/rules/branches/{branch}", + "GET /repos/{owner}/{repo}/rulesets", + "GET /repos/{owner}/{repo}/rulesets/rule-suites", + "GET /repos/{owner}/{repo}/secret-scanning/alerts", + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", + "GET /repos/{owner}/{repo}/security-advisories", + "GET /repos/{owner}/{repo}/stargazers", + "GET /repos/{owner}/{repo}/subscribers", + "GET /repos/{owner}/{repo}/tags", + "GET /repos/{owner}/{repo}/teams", + "GET /repos/{owner}/{repo}/topics", + "GET /repositories", + "GET /repositories/{repository_id}/environments/{environment_name}/secrets", + "GET /repositories/{repository_id}/environments/{environment_name}/variables", + "GET /search/code", + "GET /search/commits", + "GET /search/issues", + "GET /search/labels", + "GET /search/repositories", + "GET /search/topics", + "GET /search/users", + "GET /teams/{team_id}/discussions", + "GET /teams/{team_id}/discussions/{discussion_number}/comments", + "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", + "GET /teams/{team_id}/discussions/{discussion_number}/reactions", + "GET /teams/{team_id}/invitations", + "GET /teams/{team_id}/members", + "GET /teams/{team_id}/projects", + "GET /teams/{team_id}/repos", + "GET /teams/{team_id}/teams", + "GET /user/blocks", + "GET /user/codespaces", + "GET /user/codespaces/secrets", + "GET /user/emails", + "GET /user/followers", + "GET /user/following", + "GET /user/gpg_keys", + "GET /user/installations", + "GET /user/installations/{installation_id}/repositories", + "GET /user/issues", + "GET /user/keys", + "GET /user/marketplace_purchases", + "GET /user/marketplace_purchases/stubbed", + "GET /user/memberships/orgs", + "GET /user/migrations", + "GET /user/migrations/{migration_id}/repositories", + "GET /user/orgs", + "GET /user/packages", + "GET /user/packages/{package_type}/{package_name}/versions", + "GET /user/public_emails", + "GET /user/repos", + "GET /user/repository_invitations", + "GET /user/social_accounts", + "GET /user/ssh_signing_keys", + "GET /user/starred", + "GET /user/subscriptions", + "GET /user/teams", + "GET /users", + "GET /users/{username}/events", + "GET /users/{username}/events/orgs/{org}", + "GET /users/{username}/events/public", + "GET /users/{username}/followers", + "GET /users/{username}/following", + "GET /users/{username}/gists", + "GET /users/{username}/gpg_keys", + "GET /users/{username}/keys", + "GET /users/{username}/orgs", + "GET /users/{username}/packages", + "GET /users/{username}/projects", + "GET /users/{username}/received_events", + "GET /users/{username}/received_events/public", + "GET /users/{username}/repos", + "GET /users/{username}/social_accounts", + "GET /users/{username}/ssh_signing_keys", + "GET /users/{username}/starred", + "GET /users/{username}/subscriptions" +]; +// pkg/dist-src/paginating-endpoints.js function isPaginatingEndpoint(arg) { if (typeof arg === "string") { return paginatingEndpoints.includes(arg); @@ -7382,11 +7757,7 @@ function isPaginatingEndpoint(arg) { } } -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ - +// pkg/dist-src/index.js function paginateRest(octokit) { return { paginate: Object.assign(paginate.bind(null, octokit), { @@ -7395,202 +7766,384 @@ function paginateRest(octokit) { }; } paginateRest.VERSION = VERSION; - -exports.composePaginateRest = composePaginateRest; -exports.isPaginatingEndpoint = isPaginatingEndpoint; -exports.paginateRest = paginateRest; -exports.paginatingEndpoints = paginatingEndpoints; -//# sourceMappingURL=index.js.map +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), /***/ 3044: -/***/ ((__unused_webpack_module, exports) => { +/***/ ((module) => { "use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + legacyRestEndpointMethods: () => legacyRestEndpointMethods, + restEndpointMethods: () => restEndpointMethods +}); +module.exports = __toCommonJS(dist_src_exports); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - - if (enumerableOnly) { - symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - } - - keys.push.apply(keys, symbols); - } - - return keys; -} - -function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - - return target; -} - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} +// pkg/dist-src/version.js +var VERSION = "10.2.0"; -const Endpoints = { +// pkg/dist-src/generated/endpoints.js +var Endpoints = { actions: { - addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"], - addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], - cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], - createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + addCustomLabelsToSelfHostedRunnerForOrg: [ + "POST /orgs/{org}/actions/runners/{runner_id}/labels" + ], + addCustomLabelsToSelfHostedRunnerForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + approveWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve" + ], + cancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel" + ], + createEnvironmentVariable: [ + "POST /repositories/{repository_id}/environments/{environment_name}/variables" + ], + createOrUpdateEnvironmentSecret: [ + "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], - createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + createOrgVariable: ["POST /orgs/{org}/actions/variables"], + createRegistrationTokenForOrg: [ + "POST /orgs/{org}/actions/runners/registration-token" + ], + createRegistrationTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/registration-token" + ], createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], - createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], - deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], - deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], - deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + createRemoveTokenForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/remove-token" + ], + createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"], + createWorkflowDispatch: [ + "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches" + ], + deleteActionsCacheById: [ + "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}" + ], + deleteActionsCacheByKey: [ + "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}" + ], + deleteArtifact: [ + "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}" + ], + deleteEnvironmentSecret: [ + "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + deleteEnvironmentVariable: [ + "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], - deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"], + deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}" + ], + deleteRepoVariable: [ + "DELETE /repos/{owner}/{repo}/actions/variables/{name}" + ], + deleteSelfHostedRunnerFromOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}" + ], + deleteSelfHostedRunnerFromRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"], - disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], - downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"], - downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], - downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"], - downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], - enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], + deleteWorkflowRunLogs: [ + "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + disableSelectedRepositoryGithubActionsOrganization: [ + "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + disableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable" + ], + downloadArtifact: [ + "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}" + ], + downloadJobLogsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs" + ], + downloadWorkflowRunAttemptLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs" + ], + downloadWorkflowRunLogs: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs" + ], + enableSelectedRepositoryGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}" + ], + enableWorkflow: [ + "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable" + ], + forceCancelWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel" + ], + generateRunnerJitconfigForOrg: [ + "POST /orgs/{org}/actions/runners/generate-jitconfig" + ], + generateRunnerJitconfigForRepo: [ + "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig" + ], getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], - getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], - getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: [ + "GET /orgs/{org}/actions/cache/usage-by-repository" + ], getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], - getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], - getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"], + getAllowedActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/selected-actions" + ], + getAllowedActionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"], - getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], - getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"], - getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"], - getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"], - getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], - getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], + getEnvironmentPublicKey: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key" + ], + getEnvironmentSecret: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}" + ], + getEnvironmentVariable: [ + "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + getGithubActionsDefaultWorkflowPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions/workflow" + ], + getGithubActionsDefaultWorkflowPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/workflow" + ], + getGithubActionsPermissionsOrganization: [ + "GET /orgs/{org}/actions/permissions" + ], + getGithubActionsPermissionsRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions" + ], getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], - getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, { - renamed: ["actions", "getGithubActionsPermissionsRepository"] - }], + getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"], + getPendingDeploymentsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + getRepoPermissions: [ + "GET /repos/{owner}/{repo}/actions/permissions", + {}, + { renamed: ["actions", "getGithubActionsPermissionsRepository"] } + ], getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], + getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"], + getReviewsForRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals" + ], getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}" + ], getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], + getWorkflowAccessToRepository: [ + "GET /repos/{owner}/{repo}/actions/permissions/access" + ], getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"], - getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], - getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], + getWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}" + ], + getWorkflowRunUsage: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing" + ], + getWorkflowUsage: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing" + ], listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"], - listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], - listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"], - listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"], - listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + listEnvironmentSecrets: [ + "GET /repositories/{repository_id}/environments/{environment_name}/secrets" + ], + listEnvironmentVariables: [ + "GET /repositories/{repository_id}/environments/{environment_name}/variables" + ], + listJobsForWorkflowRun: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs" + ], + listJobsForWorkflowRunAttempt: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs" + ], + listLabelsForSelfHostedRunnerForOrg: [ + "GET /orgs/{org}/actions/runners/{runner_id}/labels" + ], + listLabelsForSelfHostedRunnerForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listOrgVariables: ["GET /orgs/{org}/actions/variables"], + listRepoOrganizationSecrets: [ + "GET /repos/{owner}/{repo}/actions/organization-secrets" + ], + listRepoOrganizationVariables: [ + "GET /repos/{owner}/{repo}/actions/organization-variables" + ], listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"], listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], - listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"], - listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"], + listRunnerApplicationsForRepo: [ + "GET /repos/{owner}/{repo}/actions/runners/downloads" + ], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + listSelectedReposForOrgVariable: [ + "GET /orgs/{org}/actions/variables/{name}/repositories" + ], + listSelectedRepositoriesEnabledGithubActionsOrganization: [ + "GET /orgs/{org}/actions/permissions/repositories" + ], listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], - listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], + listWorkflowRunArtifacts: [ + "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts" + ], + listWorkflowRuns: [ + "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs" + ], listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], + reRunJobForWorkflowRun: [ + "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun" + ], reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"], - removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"], - removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"], - removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"], - removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], - setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], - setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], - setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"], - setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"], - setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"], - setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"], - setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], - setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], - setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"], - setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"], - setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"] + reRunWorkflowFailedJobs: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs" + ], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels" + ], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + removeCustomLabelFromSelfHostedRunnerForOrg: [ + "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}" + ], + removeCustomLabelFromSelfHostedRunnerForRepo: [ + "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgVariable: [ + "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}" + ], + reviewCustomGatesForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule" + ], + reviewPendingDeploymentsForRun: [ + "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments" + ], + setAllowedActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/selected-actions" + ], + setAllowedActionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions" + ], + setCustomLabelsForSelfHostedRunnerForOrg: [ + "PUT /orgs/{org}/actions/runners/{runner_id}/labels" + ], + setCustomLabelsForSelfHostedRunnerForRepo: [ + "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels" + ], + setGithubActionsDefaultWorkflowPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/workflow" + ], + setGithubActionsDefaultWorkflowPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/workflow" + ], + setGithubActionsPermissionsOrganization: [ + "PUT /orgs/{org}/actions/permissions" + ], + setGithubActionsPermissionsRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgVariable: [ + "PUT /orgs/{org}/actions/variables/{name}/repositories" + ], + setSelectedRepositoriesEnabledGithubActionsOrganization: [ + "PUT /orgs/{org}/actions/permissions/repositories" + ], + setWorkflowAccessToRepository: [ + "PUT /repos/{owner}/{repo}/actions/permissions/access" + ], + updateEnvironmentVariable: [ + "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}" + ], + updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"], + updateRepoVariable: [ + "PATCH /repos/{owner}/{repo}/actions/variables/{name}" + ] }, activity: { checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], + deleteThreadSubscription: [ + "DELETE /notifications/threads/{thread_id}/subscription" + ], getFeeds: ["GET /feeds"], getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"], + getThreadSubscriptionForAuthenticatedUser: [ + "GET /notifications/threads/{thread_id}/subscription" + ], listEventsForAuthenticatedUser: ["GET /users/{username}/events"], listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], + listOrgEventsForAuthenticatedUser: [ + "GET /users/{username}/events/orgs/{org}" + ], listPublicEvents: ["GET /events"], listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], listPublicEventsForUser: ["GET /users/{username}/events/public"], listPublicOrgEvents: ["GET /orgs/{org}/events"], listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], + listReceivedPublicEventsForUser: [ + "GET /users/{username}/received_events/public" + ], listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], + listRepoNotificationsForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/notifications" + ], listReposStarredByAuthenticatedUser: ["GET /user/starred"], listReposStarredByUser: ["GET /users/{username}/starred"], listReposWatchedByUser: ["GET /users/{username}/subscriptions"], @@ -7601,18 +8154,26 @@ const Endpoints = { markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], + setThreadSubscription: [ + "PUT /notifications/threads/{thread_id}/subscription" + ], starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] }, apps: { - addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, { - renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] - }], - addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"], + addRepoToInstallation: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] } + ], + addRepoToInstallationForAuthenticatedUser: [ + "PUT /user/installations/{installation_id}/repositories/{repository_id}" + ], checkToken: ["POST /applications/{client_id}/token"], createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"], + createInstallationAccessToken: [ + "POST /app/installations/{installation_id}/access_tokens" + ], deleteAuthorization: ["DELETE /applications/{client_id}/grant"], deleteInstallation: ["DELETE /app/installations/{installation_id}"], deleteToken: ["DELETE /applications/{client_id}/token"], @@ -7621,75 +8182,132 @@ const Endpoints = { getInstallation: ["GET /app/installations/{installation_id}"], getOrgInstallation: ["GET /orgs/{org}/installation"], getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], - getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"], + getSubscriptionPlanForAccount: [ + "GET /marketplace_listing/accounts/{account_id}" + ], + getSubscriptionPlanForAccountStubbed: [ + "GET /marketplace_listing/stubbed/accounts/{account_id}" + ], getUserInstallation: ["GET /users/{username}/installation"], getWebhookConfigForApp: ["GET /app/hook/config"], getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], - listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"], + listAccountsForPlanStubbed: [ + "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts" + ], + listInstallationReposForAuthenticatedUser: [ + "GET /user/installations/{installation_id}/repositories" + ], + listInstallationRequestsForAuthenticatedApp: [ + "GET /app/installation-requests" + ], listInstallations: ["GET /app/installations"], listInstallationsForAuthenticatedUser: ["GET /user/installations"], listPlans: ["GET /marketplace_listing/plans"], listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], listReposAccessibleToInstallation: ["GET /installation/repositories"], listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], + listSubscriptionsForAuthenticatedUserStubbed: [ + "GET /user/marketplace_purchases/stubbed" + ], listWebhookDeliveries: ["GET /app/hook/deliveries"], - redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], - removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, { - renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] - }], - removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"], + redeliverWebhookDelivery: [ + "POST /app/hook/deliveries/{delivery_id}/attempts" + ], + removeRepoFromInstallation: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}", + {}, + { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] } + ], + removeRepoFromInstallationForAuthenticatedUser: [ + "DELETE /user/installations/{installation_id}/repositories/{repository_id}" + ], resetToken: ["PATCH /applications/{client_id}/token"], revokeInstallationAccessToken: ["DELETE /installation/token"], scopeToken: ["POST /applications/{client_id}/token/scoped"], suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], + unsuspendInstallation: [ + "DELETE /app/installations/{installation_id}/suspended" + ], updateWebhookConfigForApp: ["PATCH /app/hook/config"] }, billing: { getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], - getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"], - getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"], + getGithubActionsBillingUser: [ + "GET /users/{username}/settings/billing/actions" + ], getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], - getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], - getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"] + getGithubPackagesBillingUser: [ + "GET /users/{username}/settings/billing/packages" + ], + getSharedStorageBillingOrg: [ + "GET /orgs/{org}/settings/billing/shared-storage" + ], + getSharedStorageBillingUser: [ + "GET /users/{username}/settings/billing/shared-storage" + ] }, checks: { create: ["POST /repos/{owner}/{repo}/check-runs"], createSuite: ["POST /repos/{owner}/{repo}/check-suites"], get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], + listAnnotations: [ + "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations" + ], listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], + listForSuite: [ + "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs" + ], listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], - rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], - setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], + rerequestRun: [ + "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest" + ], + rerequestSuite: [ + "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest" + ], + setSuitesPreferences: [ + "PATCH /repos/{owner}/{repo}/check-suites/preferences" + ], update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] }, codeScanning: { - deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"], - getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, { - renamedParameters: { - alert_id: "alert_number" - } - }], - getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], + deleteAnalysis: [ + "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}" + ], + getAlert: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", + {}, + { renamedParameters: { alert_id: "alert_number" } } + ], + getAnalysis: [ + "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}" + ], + getCodeqlDatabase: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + ], + getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"], getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], - listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"], + listAlertInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances" + ], listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, { - renamed: ["codeScanning", "listAlertInstances"] - }], + listAlertsInstances: [ + "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", + {}, + { renamed: ["codeScanning", "listAlertInstances"] } + ], + listCodeqlDatabases: [ + "GET /repos/{owner}/{repo}/code-scanning/codeql/databases" + ], listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}" + ], + updateDefaultSetup: [ + "PATCH /repos/{owner}/{repo}/code-scanning/default-setup" + ], uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] }, codesOfConduct: { @@ -7697,82 +8315,190 @@ const Endpoints = { getConductCode: ["GET /codes_of_conduct/{key}"] }, codespaces: { - addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], - codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], + addRepositoryForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + checkPermissionsForDevcontainer: [ + "GET /repos/{owner}/{repo}/codespaces/permissions_check" + ], + codespaceMachinesForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/machines" + ], createForAuthenticatedUser: ["POST /user/codespaces"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], - createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"], - createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + createOrUpdateSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}" + ], + createWithPrForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces" + ], + createWithRepoForAuthenticatedUser: [ + "POST /repos/{owner}/{repo}/codespaces" + ], deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], - deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], - exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], - getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"], + deleteFromOrganization: [ + "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}" + ], + deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + deleteSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}" + ], + exportForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/exports" + ], + getCodespacesForUserInOrg: [ + "GET /orgs/{org}/members/{username}/codespaces" + ], + getExportDetailsForAuthenticatedUser: [ + "GET /user/codespaces/{codespace_name}/exports/{export_id}" + ], getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], - getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], - listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"], + getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"], + getPublicKeyForAuthenticatedUser: [ + "GET /user/codespaces/secrets/public-key" + ], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}" + ], + getSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}" + ], + listDevcontainersInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/devcontainers" + ], listForAuthenticatedUser: ["GET /user/codespaces"], - listInOrganization: ["GET /orgs/{org}/codespaces", {}, { - renamedParameters: { - org_id: "org" - } - }], - listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], + listInOrganization: [ + "GET /orgs/{org}/codespaces", + {}, + { renamedParameters: { org_id: "org" } } + ], + listInRepositoryForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces" + ], + listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"], listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], - listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"], + listRepositoriesForSecretForAuthenticatedUser: [ + "GET /user/codespaces/secrets/{secret_name}/repositories" + ], listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], - removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], - repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], - setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"], + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], + preFlightWithRepoForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/new" + ], + publishForAuthenticatedUser: [ + "POST /user/codespaces/{codespace_name}/publish" + ], + removeRepositoryForSecretForAuthenticatedUser: [ + "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}" + ], + repoMachinesForAuthenticatedUser: [ + "GET /repos/{owner}/{repo}/codespaces/machines" + ], + setRepositoriesForSecretForAuthenticatedUser: [ + "PUT /user/codespaces/secrets/{secret_name}/repositories" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories" + ], startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], - stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"], + stopInOrganization: [ + "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop" + ], updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] }, + copilot: { + addCopilotForBusinessSeatsForTeams: [ + "POST /orgs/{org}/copilot/billing/selected_teams" + ], + addCopilotForBusinessSeatsForUsers: [ + "POST /orgs/{org}/copilot/billing/selected_users" + ], + cancelCopilotSeatAssignmentForTeams: [ + "DELETE /orgs/{org}/copilot/billing/selected_teams" + ], + cancelCopilotSeatAssignmentForUsers: [ + "DELETE /orgs/{org}/copilot/billing/selected_users" + ], + getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"], + getCopilotSeatDetailsForUser: [ + "GET /orgs/{org}/members/{username}/copilot" + ], + listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"] + }, dependabot: { - addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + addSelectedRepoToOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + createOrUpdateOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}" + ], + createOrUpdateRepoSecret: [ + "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: [ + "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"], getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/public-key" + ], + getRepoSecret: [ + "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/dependabot/alerts" + ], + listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"], listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], - listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"], - removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], - setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"] + listSelectedReposForOrgSecret: [ + "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + removeSelectedRepoFromOrgSecret: [ + "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}" + ], + setSelectedReposForOrgSecret: [ + "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}" + ] }, dependencyGraph: { - createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], - diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"] - }, - emojis: { - get: ["GET /emojis"] - }, - enterpriseAdmin: { - addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"], - getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"], - getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"], - listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"], - removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"], - setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"], - setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"], - setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"] + createRepositorySnapshot: [ + "POST /repos/{owner}/{repo}/dependency-graph/snapshots" + ], + diffRange: [ + "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}" + ], + exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"] }, + emojis: { get: ["GET /emojis"] }, gists: { checkIsStarred: ["GET /gists/{gist_id}/star"], create: ["POST /gists"], @@ -7818,33 +8544,52 @@ const Endpoints = { getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, { - renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] - }], + getRestrictionsForYourPublicRepos: [ + "GET /user/interaction-limits", + {}, + { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] } + ], removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], - removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, { - renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] - }], + removeRestrictionsForRepo: [ + "DELETE /repos/{owner}/{repo}/interaction-limits" + ], + removeRestrictionsForYourPublicRepos: [ + "DELETE /user/interaction-limits", + {}, + { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] } + ], setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, { - renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] - }] + setRestrictionsForYourPublicRepos: [ + "PUT /user/interaction-limits", + {}, + { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] } + ] }, issues: { - addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], + addAssignees: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + checkUserCanBeAssignedToIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}" + ], create: ["POST /repos/{owner}/{repo}/issues"], - createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], + createComment: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/comments" + ], createLabel: ["POST /repos/{owner}/{repo}/labels"], createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], + deleteComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}" + ], deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], + deleteMilestone: [ + "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}" + ], get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], @@ -7856,24 +8601,38 @@ const Endpoints = { listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], + listEventsForTimeline: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline" + ], listForAuthenticatedUser: ["GET /user/issues"], listForOrg: ["GET /orgs/{org}/issues"], listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"], + listLabelsForMilestone: [ + "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels" + ], listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], + listLabelsOnIssue: [ + "GET /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], listMilestones: ["GET /repos/{owner}/{repo}/milestones"], lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], - removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], + removeAllLabels: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels" + ], + removeAssignees: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees" + ], + removeLabel: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}" + ], setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"] + updateMilestone: [ + "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}" + ] }, licenses: { get: ["GET /licenses/{license}"], @@ -7882,65 +8641,151 @@ const Endpoints = { }, markdown: { render: ["POST /markdown"], - renderRaw: ["POST /markdown/raw", { - headers: { - "content-type": "text/plain; charset=utf-8" - } - }] + renderRaw: [ + "POST /markdown/raw", + { headers: { "content-type": "text/plain; charset=utf-8" } } + ] }, meta: { get: ["GET /meta"], + getAllVersions: ["GET /versions"], getOctocat: ["GET /octocat"], getZen: ["GET /zen"], root: ["GET /"] }, migrations: { - cancelImport: ["DELETE /repos/{owner}/{repo}/import"], - deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], - deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], - downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], - getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], - getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], - getImportStatus: ["GET /repos/{owner}/{repo}/import"], - getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], + cancelImport: [ + "DELETE /repos/{owner}/{repo}/import", + {}, + { + deprecated: "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import" + } + ], + deleteArchiveForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/archive" + ], + deleteArchiveForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/archive" + ], + downloadArchiveForOrg: [ + "GET /orgs/{org}/migrations/{migration_id}/archive" + ], + getArchiveForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/archive" + ], + getCommitAuthors: [ + "GET /repos/{owner}/{repo}/import/authors", + {}, + { + deprecated: "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors" + } + ], + getImportStatus: [ + "GET /repos/{owner}/{repo}/import", + {}, + { + deprecated: "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status" + } + ], + getLargeFiles: [ + "GET /repos/{owner}/{repo}/import/large_files", + {}, + { + deprecated: "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files" + } + ], getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], listForAuthenticatedUser: ["GET /user/migrations"], listForOrg: ["GET /orgs/{org}/migrations"], - listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], + listReposForAuthenticatedUser: [ + "GET /user/migrations/{migration_id}/repositories" + ], listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], - listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, { - renamed: ["migrations", "listReposForAuthenticatedUser"] - }], - mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], - setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], + listReposForUser: [ + "GET /user/migrations/{migration_id}/repositories", + {}, + { renamed: ["migrations", "listReposForAuthenticatedUser"] } + ], + mapCommitAuthor: [ + "PATCH /repos/{owner}/{repo}/import/authors/{author_id}", + {}, + { + deprecated: "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author" + } + ], + setLfsPreference: [ + "PATCH /repos/{owner}/{repo}/import/lfs", + {}, + { + deprecated: "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference" + } + ], startForAuthenticatedUser: ["POST /user/migrations"], startForOrg: ["POST /orgs/{org}/migrations"], - startImport: ["PUT /repos/{owner}/{repo}/import"], - unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"], - unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], - updateImport: ["PATCH /repos/{owner}/{repo}/import"] + startImport: [ + "PUT /repos/{owner}/{repo}/import", + {}, + { + deprecated: "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import" + } + ], + unlockRepoForAuthenticatedUser: [ + "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock" + ], + unlockRepoForOrg: [ + "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock" + ], + updateImport: [ + "PATCH /repos/{owner}/{repo}/import", + {}, + { + deprecated: "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import" + } + ] }, orgs: { + addSecurityManagerTeam: [ + "PUT /orgs/{org}/security-managers/teams/{team_slug}" + ], blockUser: ["PUT /orgs/{org}/blocks/{username}"], cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], + convertMemberToOutsideCollaborator: [ + "PUT /orgs/{org}/outside_collaborators/{username}" + ], createInvitation: ["POST /orgs/{org}/invitations"], + createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"], + createOrUpdateCustomPropertiesValuesForRepos: [ + "PATCH /orgs/{org}/properties/values" + ], + createOrUpdateCustomProperty: [ + "PUT /orgs/{org}/properties/schema/{custom_property_name}" + ], createWebhook: ["POST /orgs/{org}/hooks"], + delete: ["DELETE /orgs/{org}"], deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + enableOrDisableSecurityProductOnAllOrgRepos: [ + "POST /orgs/{org}/{security_product}/{enablement}" + ], get: ["GET /orgs/{org}"], + getAllCustomProperties: ["GET /orgs/{org}/properties/schema"], + getCustomProperty: [ + "GET /orgs/{org}/properties/schema/{custom_property_name}" + ], getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], + getWebhookDelivery: [ + "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}" + ], list: ["GET /organizations"], listAppInstallations: ["GET /orgs/{org}/installations"], listBlockedUsers: ["GET /orgs/{org}/blocks"], - listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"], + listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"], listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], listForAuthenticatedUser: ["GET /user/orgs"], listForUser: ["GET /users/{username}/orgs"], @@ -7948,55 +8793,148 @@ const Endpoints = { listMembers: ["GET /orgs/{org}/members"], listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPatGrantRepositories: [ + "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories" + ], + listPatGrantRequestRepositories: [ + "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories" + ], + listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"], + listPatGrants: ["GET /orgs/{org}/personal-access-tokens"], listPendingInvitations: ["GET /orgs/{org}/invitations"], listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], listWebhooks: ["GET /orgs/{org}/hooks"], pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], + redeliverWebhookDelivery: [ + "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeCustomProperty: [ + "DELETE /orgs/{org}/properties/schema/{custom_property_name}" + ], removeMember: ["DELETE /orgs/{org}/members/{username}"], removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], - removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"], + removeOutsideCollaborator: [ + "DELETE /orgs/{org}/outside_collaborators/{username}" + ], + removePublicMembershipForAuthenticatedUser: [ + "DELETE /orgs/{org}/public_members/{username}" + ], + removeSecurityManagerTeam: [ + "DELETE /orgs/{org}/security-managers/teams/{team_slug}" + ], + reviewPatGrantRequest: [ + "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}" + ], + reviewPatGrantRequestsInBulk: [ + "POST /orgs/{org}/personal-access-token-requests" + ], setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], + setPublicMembershipForAuthenticatedUser: [ + "PUT /orgs/{org}/public_members/{username}" + ], unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], update: ["PATCH /orgs/{org}"], - updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], + updateMembershipForAuthenticatedUser: [ + "PATCH /user/memberships/orgs/{org}" + ], + updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"], + updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"], updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] }, packages: { - deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"], - deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], - deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], - deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], - deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] - }], - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"] - }], - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"], - getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"], - getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"], - getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], - getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], - getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], - getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + deletePackageForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}" + ], + deletePackageForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}" + ], + deletePackageForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}" + ], + deletePackageVersionForAuthenticatedUser: [ + "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForOrg: [ + "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + deletePackageVersionForUser: [ + "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getAllPackageVersionsForAPackageOwnedByAnOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", + {}, + { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] } + ], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions", + {}, + { + renamed: [ + "packages", + "getAllPackageVersionsForPackageOwnedByAuthenticatedUser" + ] + } + ], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByOrg: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions" + ], + getAllPackageVersionsForPackageOwnedByUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions" + ], + getPackageForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}" + ], + getPackageForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}" + ], + getPackageForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}" + ], + getPackageVersionForAuthenticatedUser: [ + "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForOrganization: [ + "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + getPackageVersionForUser: [ + "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}" + ], + listDockerMigrationConflictingPackagesForAuthenticatedUser: [ + "GET /user/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForOrganization: [ + "GET /orgs/{org}/docker/conflicts" + ], + listDockerMigrationConflictingPackagesForUser: [ + "GET /users/{username}/docker/conflicts" + ], listPackagesForAuthenticatedUser: ["GET /user/packages"], listPackagesForOrganization: ["GET /orgs/{org}/packages"], listPackagesForUser: ["GET /users/{username}/packages"], - restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], - restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], - restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"] + restorePackageForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}" + ], + restorePackageVersionForAuthenticatedUser: [ + "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForOrg: [ + "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ], + restorePackageVersionForUser: [ + "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore" + ] }, projects: { addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], @@ -8011,7 +8949,9 @@ const Endpoints = { get: ["GET /projects/{project_id}"], getCard: ["GET /projects/columns/cards/{card_id}"], getColumn: ["GET /projects/columns/{column_id}"], - getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], + getPermissionForUser: [ + "GET /projects/{project_id}/collaborators/{username}/permission" + ], listCards: ["GET /projects/columns/{column_id}/cards"], listCollaborators: ["GET /projects/{project_id}/collaborators"], listColumns: ["GET /projects/{project_id}/columns"], @@ -8020,7 +8960,9 @@ const Endpoints = { listForUser: ["GET /users/{username}/projects"], moveCard: ["POST /projects/columns/cards/{card_id}/moves"], moveColumn: ["POST /projects/columns/{column_id}/moves"], - removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], + removeCollaborator: [ + "DELETE /projects/{project_id}/collaborators/{username}" + ], update: ["PATCH /projects/{project_id}"], updateCard: ["PATCH /projects/columns/cards/{card_id}"], updateColumn: ["PATCH /projects/columns/{column_id}"] @@ -8028,191 +8970,411 @@ const Endpoints = { pulls: { checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"], + createReplyForReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies" + ], createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"], + createReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], + deletePendingReview: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + deleteReviewComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ], + dismissReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals" + ], get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + getReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"], + listCommentsForReview: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments" + ], listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], + listRequestedReviewers: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + listReviewComments: [ + "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments" + ], listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"], + removeRequestedReviewers: [ + "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + requestReviewers: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers" + ], + submitReview: [ + "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events" + ], update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], - updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"] - }, - rateLimit: { - get: ["GET /rate_limit"] + updateBranch: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch" + ], + updateReview: [ + "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}" + ], + updateReviewComment: [ + "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}" + ] }, + rateLimit: { get: ["GET /rate_limit"] }, reactions: { - createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], - createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], - createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], - createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"], - deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"], - deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"], - deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"], - deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"], - deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"], - deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"], - deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"], - listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], + createForCommitComment: [ + "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], + createForIssue: [ + "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions" + ], + createForIssueComment: [ + "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + createForPullRequestReviewComment: [ + "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + createForRelease: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + createForTeamDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + createForTeamDiscussionInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ], + deleteForCommitComment: [ + "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForIssue: [ + "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}" + ], + deleteForIssueComment: [ + "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForPullRequestComment: [ + "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}" + ], + deleteForRelease: [ + "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}" + ], + deleteForTeamDiscussion: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}" + ], + deleteForTeamDiscussionComment: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}" + ], + listForCommitComment: [ + "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions" + ], listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], - listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], - listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], - listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"] + listForIssueComment: [ + "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions" + ], + listForPullRequestReviewComment: [ + "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions" + ], + listForRelease: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/reactions" + ], + listForTeamDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions" + ], + listForTeamDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions" + ] }, repos: { - acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, { - renamed: ["repos", "acceptInvitationForAuthenticatedUser"] - }], - acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"], - addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], + acceptInvitation: [ + "PATCH /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] } + ], + acceptInvitationForAuthenticatedUser: [ + "PATCH /user/repository_invitations/{invitation_id}" + ], + addAppAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], + addStatusCheckContexts: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + addTeamAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + addUserAccessRestrictions: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], + checkAutomatedSecurityFixes: [ + "GET /repos/{owner}/{repo}/automated-security-fixes" + ], checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], + checkVulnerabilityAlerts: [ + "GET /repos/{owner}/{repo}/vulnerability-alerts" + ], codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], + compareCommitsWithBasehead: [ + "GET /repos/{owner}/{repo}/compare/{basehead}" + ], createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], - createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + createCommitComment: [ + "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], + createCommitSignatureProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], createDeployKey: ["POST /repos/{owner}/{repo}/keys"], createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + createDeploymentBranchPolicy: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + createDeploymentProtectionRule: [ + "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], + createDeploymentStatus: [ + "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], createForAuthenticatedUser: ["POST /user/repos"], createFork: ["POST /repos/{owner}/{repo}/forks"], createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], + createOrUpdateEnvironment: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}" + ], createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createOrgRuleset: ["POST /orgs/{org}/rulesets"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], createPagesSite: ["POST /repos/{owner}/{repo}/pages"], createRelease: ["POST /repos/{owner}/{repo}/releases"], + createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"], createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], - createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], + createUsingTemplate: [ + "POST /repos/{template_owner}/{template_repo}/generate" + ], createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, { - renamed: ["repos", "declineInvitationForAuthenticatedUser"] - }], - declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"], + declineInvitation: [ + "DELETE /user/repository_invitations/{invitation_id}", + {}, + { renamed: ["repos", "declineInvitationForAuthenticatedUser"] } + ], + declineInvitationForAuthenticatedUser: [ + "DELETE /user/repository_invitations/{invitation_id}" + ], delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], + deleteAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + deleteAdminBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + deleteAnEnvironment: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}" + ], deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], - deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], + deleteBranchProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection" + ], deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + deleteCommitSignatureProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], + deleteDeployment: [ + "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}" + ], + deleteDeploymentBranchPolicy: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], + deleteInvitation: [ + "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"], deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], - deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + deletePullRequestReviewProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], - deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], + deleteReleaseAsset: [ + "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + deleteTagProtection: [ + "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}" + ], deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], - disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"], - disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], - downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, { - renamed: ["repos", "downloadZipballArchive"] - }], + disableAutomatedSecurityFixes: [ + "DELETE /repos/{owner}/{repo}/automated-security-fixes" + ], + disableDeploymentProtectionRule: [ + "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + disablePrivateVulnerabilityReporting: [ + "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + disableVulnerabilityAlerts: [ + "DELETE /repos/{owner}/{repo}/vulnerability-alerts" + ], + downloadArchive: [ + "GET /repos/{owner}/{repo}/zipball/{ref}", + {}, + { renamed: ["repos", "downloadZipballArchive"] } + ], downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], - enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"], - enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], - generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], + enableAutomatedSecurityFixes: [ + "PUT /repos/{owner}/{repo}/automated-security-fixes" + ], + enablePrivateVulnerabilityReporting: [ + "PUT /repos/{owner}/{repo}/private-vulnerability-reporting" + ], + enableVulnerabilityAlerts: [ + "PUT /repos/{owner}/{repo}/vulnerability-alerts" + ], + generateReleaseNotes: [ + "POST /repos/{owner}/{repo}/releases/generate-notes" + ], get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + getAccessRestrictions: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions" + ], + getAdminBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + getAllDeploymentProtectionRules: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules" + ], getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], - getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"], + getAllStatusCheckContexts: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts" + ], getAllTopics: ["GET /repos/{owner}/{repo}/topics"], - getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"], + getAppsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps" + ], getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], + getBranchProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection" + ], + getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"], getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"], + getCollaboratorPermissionLevel: [ + "GET /repos/{owner}/{repo}/collaborators/{username}/permission" + ], getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + getCommitSignatureProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures" + ], getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getCustomDeploymentProtectionRule: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}" + ], + getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"], getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"], - getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], + getDeploymentBranchPolicy: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], + getDeploymentStatus: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}" + ], + getEnvironment: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}" + ], getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"], + getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"], + getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"], + getOrgRulesets: ["GET /orgs/{org}/rulesets"], getPages: ["GET /repos/{owner}/{repo}/pages"], getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + getPullRequestReviewProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], getReadme: ["GET /repos/{owner}/{repo}/readme"], getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"], + getRepoRuleSuite: [ + "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}" + ], + getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"], + getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"], + getStatusChecksProtection: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + getTeamsWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams" + ], getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"], + getUsersWithAccessToProtectedBranch: [ + "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users" + ], getViews: ["GET /repos/{owner}/{repo}/traffic/views"], getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"], + getWebhookConfigForRepo: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + getWebhookDelivery: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}" + ], + listActivities: ["GET /repos/{owner}/{repo}/activity"], listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"], + listBranchesForHeadCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head" + ], listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], + listCommentsForCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments" + ], listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], + listCommitStatusesForRef: [ + "GET /repos/{owner}/{repo}/commits/{ref}/statuses" + ], listCommits: ["GET /repos/{owner}/{repo}/commits"], listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listCustomDeploymentRuleIntegrations: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps" + ], listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + listDeploymentBranchPolicies: [ + "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies" + ], + listDeploymentStatuses: [ + "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses" + ], listDeployments: ["GET /repos/{owner}/{repo}/deployments"], listForAuthenticatedUser: ["GET /user/repos"], listForOrg: ["GET /orgs/{org}/repos"], @@ -8223,67 +9385,117 @@ const Endpoints = { listLanguages: ["GET /repos/{owner}/{repo}/languages"], listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"], - listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], + listPullRequestsAssociatedWithCommit: [ + "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls" + ], + listReleaseAssets: [ + "GET /repos/{owner}/{repo}/releases/{release_id}/assets" + ], listReleases: ["GET /repos/{owner}/{repo}/releases"], listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], listTags: ["GET /repos/{owner}/{repo}/tags"], listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], + listWebhookDeliveries: [ + "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries" + ], listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], merge: ["POST /repos/{owner}/{repo}/merges"], mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], - removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], - removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], + redeliverWebhookDelivery: [ + "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts" + ], + removeAppAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + removeCollaborator: [ + "DELETE /repos/{owner}/{repo}/collaborators/{username}" + ], + removeStatusCheckContexts: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + removeStatusCheckProtection: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], + removeTeamAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + removeUserAccessRestrictions: [ + "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], + setAdminBranchProtection: [ + "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins" + ], + setAppAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", + {}, + { mapToData: "apps" } + ], + setStatusCheckContexts: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", + {}, + { mapToData: "contexts" } + ], + setTeamAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", + {}, + { mapToData: "teams" } + ], + setUserAccessRestrictions: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", + {}, + { mapToData: "users" } + ], testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], transfer: ["POST /repos/{owner}/{repo}/transfer"], update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], + updateBranchProtection: [ + "PUT /repos/{owner}/{repo}/branches/{branch}/protection" + ], updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: [ + "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}" + ], updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], - updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + updateInvitation: [ + "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}" + ], + updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"], + updatePullRequestReviewProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews" + ], updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], - updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, { - renamed: ["repos", "updateStatusCheckProtection"] - }], - updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + updateReleaseAsset: [ + "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}" + ], + updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"], + updateStatusCheckPotection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", + {}, + { renamed: ["repos", "updateStatusCheckProtection"] } + ], + updateStatusCheckProtection: [ + "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks" + ], updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], - uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", { - baseUrl: "https://uploads.github.com" - }] + updateWebhookConfigForRepo: [ + "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config" + ], + uploadReleaseAsset: [ + "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", + { baseUrl: "https://uploads.github.com" } + ] }, search: { code: ["GET /search/code"], @@ -8295,390 +9507,596 @@ const Endpoints = { users: ["GET /search/users"] }, secretScanning: { - getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], + getAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ], + listAlertsForEnterprise: [ + "GET /enterprises/{enterprise}/secret-scanning/alerts" + ], listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"], - updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"] + listLocationsForAlert: [ + "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations" + ], + updateAlert: [ + "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}" + ] + }, + securityAdvisories: { + createPrivateVulnerabilityReport: [ + "POST /repos/{owner}/{repo}/security-advisories/reports" + ], + createRepositoryAdvisory: [ + "POST /repos/{owner}/{repo}/security-advisories" + ], + createRepositoryAdvisoryCveRequest: [ + "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve" + ], + getGlobalAdvisory: ["GET /advisories/{ghsa_id}"], + getRepositoryAdvisory: [ + "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ], + listGlobalAdvisories: ["GET /advisories"], + listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"], + listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"], + updateRepositoryAdvisory: [ + "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}" + ] }, teams: { - addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"], - addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + addOrUpdateMembershipForUserInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + addOrUpdateProjectPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + addOrUpdateRepoPermissionsInOrg: [ + "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + checkPermissionsForProjectInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + checkPermissionsForRepoInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + createDiscussionCommentInOrg: [ + "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + deleteDiscussionCommentInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + deleteDiscussionInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], + getDiscussionCommentInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + getDiscussionInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], + getMembershipForUserInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], list: ["GET /orgs/{org}/teams"], listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + listDiscussionCommentsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments" + ], listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], listForAuthenticatedUser: ["GET /user/teams"], listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], + listPendingInvitationsInOrg: [ + "GET /orgs/{org}/teams/{team_slug}/invitations" + ], listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"], - removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + removeMembershipForUserInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}" + ], + removeProjectInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}" + ], + removeRepoInOrg: [ + "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}" + ], + updateDiscussionCommentInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}" + ], + updateDiscussionInOrg: [ + "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}" + ], updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] }, users: { - addEmailForAuthenticated: ["POST /user/emails", {}, { - renamed: ["users", "addEmailForAuthenticatedUser"] - }], + addEmailForAuthenticated: [ + "POST /user/emails", + {}, + { renamed: ["users", "addEmailForAuthenticatedUser"] } + ], addEmailForAuthenticatedUser: ["POST /user/emails"], + addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"], block: ["PUT /user/blocks/{username}"], checkBlocked: ["GET /user/blocks/{username}"], checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, { - renamed: ["users", "createGpgKeyForAuthenticatedUser"] - }], + createGpgKeyForAuthenticated: [ + "POST /user/gpg_keys", + {}, + { renamed: ["users", "createGpgKeyForAuthenticatedUser"] } + ], createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, { - renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] - }], + createPublicSshKeyForAuthenticated: [ + "POST /user/keys", + {}, + { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] } + ], createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - deleteEmailForAuthenticated: ["DELETE /user/emails", {}, { - renamed: ["users", "deleteEmailForAuthenticatedUser"] - }], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteEmailForAuthenticated: [ + "DELETE /user/emails", + {}, + { renamed: ["users", "deleteEmailForAuthenticatedUser"] } + ], deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, { - renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] - }], + deleteGpgKeyForAuthenticated: [ + "DELETE /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] } + ], deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, { - renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] - }], + deletePublicSshKeyForAuthenticated: [ + "DELETE /user/keys/{key_id}", + {}, + { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] } + ], deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"], + deleteSshSigningKeyForAuthenticatedUser: [ + "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}" + ], follow: ["PUT /user/following/{username}"], getAuthenticated: ["GET /user"], getByUsername: ["GET /users/{username}"], getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, { - renamed: ["users", "getGpgKeyForAuthenticatedUser"] - }], + getGpgKeyForAuthenticated: [ + "GET /user/gpg_keys/{gpg_key_id}", + {}, + { renamed: ["users", "getGpgKeyForAuthenticatedUser"] } + ], getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, { - renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] - }], + getPublicSshKeyForAuthenticated: [ + "GET /user/keys/{key_id}", + {}, + { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] } + ], getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: [ + "GET /user/ssh_signing_keys/{ssh_signing_key_id}" + ], list: ["GET /users"], - listBlockedByAuthenticated: ["GET /user/blocks", {}, { - renamed: ["users", "listBlockedByAuthenticatedUser"] - }], + listBlockedByAuthenticated: [ + "GET /user/blocks", + {}, + { renamed: ["users", "listBlockedByAuthenticatedUser"] } + ], listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: ["GET /user/emails", {}, { - renamed: ["users", "listEmailsForAuthenticatedUser"] - }], + listEmailsForAuthenticated: [ + "GET /user/emails", + {}, + { renamed: ["users", "listEmailsForAuthenticatedUser"] } + ], listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: ["GET /user/following", {}, { - renamed: ["users", "listFollowedByAuthenticatedUser"] - }], + listFollowedByAuthenticated: [ + "GET /user/following", + {}, + { renamed: ["users", "listFollowedByAuthenticatedUser"] } + ], listFollowedByAuthenticatedUser: ["GET /user/following"], listFollowersForAuthenticatedUser: ["GET /user/followers"], listFollowersForUser: ["GET /users/{username}/followers"], listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, { - renamed: ["users", "listGpgKeysForAuthenticatedUser"] - }], + listGpgKeysForAuthenticated: [ + "GET /user/gpg_keys", + {}, + { renamed: ["users", "listGpgKeysForAuthenticatedUser"] } + ], listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, { - renamed: ["users", "listPublicEmailsForAuthenticatedUser"] - }], + listPublicEmailsForAuthenticated: [ + "GET /user/public_emails", + {}, + { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] } + ], listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, { - renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] - }], + listPublicSshKeysForAuthenticated: [ + "GET /user/keys", + {}, + { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] } + ], listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, { - renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] - }], - setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], + listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"], + listSocialAccountsForUser: ["GET /users/{username}/social_accounts"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: [ + "PATCH /user/email/visibility", + {}, + { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] } + ], + setPrimaryEmailVisibilityForAuthenticatedUser: [ + "PATCH /user/email/visibility" + ], unblock: ["DELETE /user/blocks/{username}"], unfollow: ["DELETE /user/following/{username}"], updateAuthenticated: ["PATCH /user"] } }; +var endpoints_default = Endpoints; -const VERSION = "5.16.2"; - -function endpointsToMethods(octokit, endpointsMap) { - const newMethods = {}; - - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign({ +// pkg/dist-src/endpoints-to-methods.js +var endpointMethodsMap = /* @__PURE__ */ new Map(); +for (const [scope, endpoints] of Object.entries(endpoints_default)) { + for (const [methodName, endpoint] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign( + { method, url - }, defaults); - - if (!newMethods[scope]) { - newMethods[scope] = {}; - } - - const scopeMethods = newMethods[scope]; - - if (decorations) { - scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); - continue; - } - - scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); + }, + defaults + ); + if (!endpointMethodsMap.has(scope)) { + endpointMethodsMap.set(scope, /* @__PURE__ */ new Map()); + } + endpointMethodsMap.get(scope).set(methodName, { + scope, + methodName, + endpointDefaults, + decorations + }); + } +} +var handler = { + has({ scope }, methodName) { + return endpointMethodsMap.get(scope).has(methodName); + }, + getOwnPropertyDescriptor(target, methodName) { + return { + value: this.get(target, methodName), + // ensures method is in the cache + configurable: true, + writable: true, + enumerable: true + }; + }, + defineProperty(target, methodName, descriptor) { + Object.defineProperty(target.cache, methodName, descriptor); + return true; + }, + deleteProperty(target, methodName) { + delete target.cache[methodName]; + return true; + }, + ownKeys({ scope }) { + return [...endpointMethodsMap.get(scope).keys()]; + }, + set(target, methodName, value) { + return target.cache[methodName] = value; + }, + get({ octokit, scope, cache }, methodName) { + if (cache[methodName]) { + return cache[methodName]; + } + const method = endpointMethodsMap.get(scope).get(methodName); + if (!method) { + return void 0; + } + const { endpointDefaults, decorations } = method; + if (decorations) { + cache[methodName] = decorate( + octokit, + scope, + methodName, + endpointDefaults, + decorations + ); + } else { + cache[methodName] = octokit.request.defaults(endpointDefaults); } + return cache[methodName]; + } +}; +function endpointsToMethods(octokit) { + const newMethods = {}; + for (const scope of endpointMethodsMap.keys()) { + newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler); } - return newMethods; } - function decorate(octokit, scope, methodName, defaults, decorations) { const requestWithDefaults = octokit.request.defaults(defaults); - /* istanbul ignore next */ - function withDecorations(...args) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData` - + let options = requestWithDefaults.endpoint.merge(...args); if (decorations.mapToData) { options = Object.assign({}, options, { data: options[decorations.mapToData], - [decorations.mapToData]: undefined + [decorations.mapToData]: void 0 }); return requestWithDefaults(options); } - if (decorations.renamed) { const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + octokit.log.warn( + `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()` + ); } - if (decorations.deprecated) { octokit.log.warn(decorations.deprecated); } - if (decorations.renamedParameters) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - const options = requestWithDefaults.endpoint.merge(...args); - - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options) { - octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); - - if (!(alias in options)) { - options[alias] = options[name]; + const options2 = requestWithDefaults.endpoint.merge(...args); + for (const [name, alias] of Object.entries( + decorations.renamedParameters + )) { + if (name in options2) { + octokit.log.warn( + `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead` + ); + if (!(alias in options2)) { + options2[alias] = options2[name]; } - - delete options[name]; + delete options2[name]; } } - - return requestWithDefaults(options); - } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - - + return requestWithDefaults(options2); + } return requestWithDefaults(...args); } - return Object.assign(withDecorations, requestWithDefaults); } +// pkg/dist-src/index.js function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit, Endpoints); + const api = endpointsToMethods(octokit); return { rest: api }; } restEndpointMethods.VERSION = VERSION; function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit, Endpoints); - return _objectSpread2(_objectSpread2({}, api), {}, { + const api = endpointsToMethods(octokit); + return { + ...api, rest: api - }); + }; } legacyRestEndpointMethods.VERSION = VERSION; - -exports.legacyRestEndpointMethods = legacyRestEndpointMethods; -exports.restEndpointMethods = restEndpointMethods; -//# sourceMappingURL=index.js.map +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), /***/ 537: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var deprecation = __nccwpck_require__(8932); -var once = _interopDefault(__nccwpck_require__(1223)); - -const logOnceCode = once(deprecation => console.warn(deprecation)); -const logOnceHeaders = once(deprecation => console.warn(deprecation)); -/** - * Error with extra properties to help with debugging - */ - -class RequestError extends Error { +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 __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + RequestError: () => RequestError +}); +module.exports = __toCommonJS(dist_src_exports); +var import_deprecation = __nccwpck_require__(8932); +var import_once = __toESM(__nccwpck_require__(1223)); +var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation)); +var RequestError = class extends Error { constructor(message, statusCode, options) { - super(message); // Maintains proper stack trace (only available on V8) - - /* istanbul ignore next */ - + super(message); if (Error.captureStackTrace) { Error.captureStackTrace(this, this.constructor); } - this.name = "HttpError"; this.status = statusCode; let headers; - if ("headers" in options && typeof options.headers !== "undefined") { headers = options.headers; } - if ("response" in options) { this.response = options.response; headers = options.response.headers; - } // redact request credentials without mutating original request options - - + } const requestCopy = Object.assign({}, options.request); - if (options.request.headers.authorization) { requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") + authorization: options.request.headers.authorization.replace( + / .*$/, + " [REDACTED]" + ) }); } - - requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit - // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended - // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; // deprecations - + requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; Object.defineProperty(this, "code", { get() { - logOnceCode(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + logOnceCode( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.code` is deprecated, use `error.status`." + ) + ); return statusCode; } - }); Object.defineProperty(this, "headers", { get() { - logOnceHeaders(new deprecation.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); + logOnceHeaders( + new import_deprecation.Deprecation( + "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`." + ) + ); return headers || {}; } - }); } - -} - -exports.RequestError = RequestError; -//# sourceMappingURL=index.js.map +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), /***/ 6234: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -Object.defineProperty(exports, "__esModule", ({ value: true })); +// pkg/dist-src/index.js +var dist_src_exports = {}; +__export(dist_src_exports, { + request: () => request +}); +module.exports = __toCommonJS(dist_src_exports); +var import_endpoint = __nccwpck_require__(9440); +var import_universal_user_agent = __nccwpck_require__(5030); -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } +// pkg/dist-src/version.js +var VERSION = "8.1.6"; -var endpoint = __nccwpck_require__(9440); -var universalUserAgent = __nccwpck_require__(5030); -var isPlainObject = __nccwpck_require__(3287); -var nodeFetch = _interopDefault(__nccwpck_require__(467)); -var requestError = __nccwpck_require__(537); +// pkg/dist-src/is-plain-object.js +function isPlainObject(value) { + if (typeof value !== "object" || value === null) + return false; + if (Object.prototype.toString.call(value) !== "[object Object]") + return false; + const proto = Object.getPrototypeOf(value); + if (proto === null) + return true; + const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor; + return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value); +} -const VERSION = "5.6.3"; +// pkg/dist-src/fetch-wrapper.js +var import_request_error = __nccwpck_require__(537); +// pkg/dist-src/get-buffer-response.js function getBufferResponse(response) { return response.arrayBuffer(); } +// pkg/dist-src/fetch-wrapper.js function fetchWrapper(requestOptions) { + var _a, _b, _c; const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; - - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false; + if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { requestOptions.body = JSON.stringify(requestOptions.body); } - let headers = {}; let status; let url; - const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch; - return fetch(requestOptions.url, Object.assign({ + let { fetch } = globalThis; + if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) { + fetch = requestOptions.request.fetch; + } + if (!fetch) { + throw new Error( + "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing" + ); + } + return fetch(requestOptions.url, { method: requestOptions.method, body: requestOptions.body, headers: requestOptions.headers, - redirect: requestOptions.redirect - }, // `requestOptions.request.agent` type is incompatible - // see https://github.com/octokit/types.ts/pull/264 - requestOptions.request)).then(async response => { + signal: (_c = requestOptions.request) == null ? void 0 : _c.signal, + // duplex must be set if request.body is ReadableStream or Async Iterables. + // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex. + ...requestOptions.body && { duplex: "half" } + }).then(async (response) => { url = response.url; status = response.status; - for (const keyAndValue of response.headers) { headers[keyAndValue[0]] = keyAndValue[1]; } - if ("deprecation" in headers) { const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); const deprecationLink = matches && matches.pop(); - log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); + log.warn( + `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}` + ); } - if (status === 204 || status === 205) { return; - } // GitHub API returns 200 for HEAD requests - - + } if (requestOptions.method === "HEAD") { if (status < 400) { return; } - - throw new requestError.RequestError(response.statusText, status, { + throw new import_request_error.RequestError(response.statusText, status, { response: { url, status, headers, - data: undefined + data: void 0 }, request: requestOptions }); } - if (status === 304) { - throw new requestError.RequestError("Not modified", status, { + throw new import_request_error.RequestError("Not modified", status, { response: { url, status, @@ -8688,10 +10106,9 @@ function fetchWrapper(requestOptions) { request: requestOptions }); } - if (status >= 400) { const data = await getResponseData(response); - const error = new requestError.RequestError(toErrorMessage(data), status, { + const error = new import_request_error.RequestError(toErrorMessage(data), status, { response: { url, status, @@ -8702,87 +10119,87 @@ function fetchWrapper(requestOptions) { }); throw error; } - - return getResponseData(response); - }).then(data => { + return parseSuccessResponseBody ? await getResponseData(response) : response.body; + }).then((data) => { return { status, url, headers, data }; - }).catch(error => { - if (error instanceof requestError.RequestError) throw error; - throw new requestError.RequestError(error.message, 500, { + }).catch((error) => { + if (error instanceof import_request_error.RequestError) + throw error; + else if (error.name === "AbortError") + throw error; + let message = error.message; + if (error.name === "TypeError" && "cause" in error) { + if (error.cause instanceof Error) { + message = error.cause.message; + } else if (typeof error.cause === "string") { + message = error.cause; + } + } + throw new import_request_error.RequestError(message, 500, { request: requestOptions }); }); } - async function getResponseData(response) { const contentType = response.headers.get("content-type"); - if (/application\/json/.test(contentType)) { - return response.json(); + return response.json().catch(() => response.text()).catch(() => ""); } - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { return response.text(); } - return getBufferResponse(response); } - function toErrorMessage(data) { - if (typeof data === "string") return data; // istanbul ignore else - just in case - + if (typeof data === "string") + return data; if ("message" in data) { if (Array.isArray(data.errors)) { return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; } - return data.message; - } // istanbul ignore next - just in case - - + } return `Unknown error: ${JSON.stringify(data)}`; } +// pkg/dist-src/with-defaults.js function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); - - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); - + const endpoint2 = oldEndpoint.defaults(newDefaults); + const newApi = function(route, parameters) { + const endpointOptions = endpoint2.merge(route, parameters); if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); + return fetchWrapper(endpoint2.parse(endpointOptions)); } - - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + const request2 = (route2, parameters2) => { + return fetchWrapper( + endpoint2.parse(endpoint2.merge(route2, parameters2)) + ); }; - - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint) + Object.assign(request2, { + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) }); - return endpointOptions.request.hook(request, endpointOptions); + return endpointOptions.request.hook(request2, endpointOptions); }; - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint) + endpoint: endpoint2, + defaults: withDefaults.bind(null, endpoint2) }); } -const request = withDefaults(endpoint.endpoint, { +// pkg/dist-src/index.js +var request = withDefaults(import_endpoint.endpoint, { headers: { - "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + "user-agent": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}` } }); - -exports.request = request; -//# sourceMappingURL=index.js.map +// Annotate the CommonJS export names for ESM import in node: +0 && (0); /***/ }), @@ -9634,8 +11051,9 @@ module.exports = function (/**String*/ input, /** object */ options) { * @param zipPath optional path inside zip * @param filter optional RegExp or Function if files match will * be included. + * @param {number | object} attr - number as unix file permissions, object as filesystem Stats object */ - addLocalFolder: function (/**String*/ localPath, /**String=*/ zipPath, /**=RegExp|Function*/ filter) { + addLocalFolder: function (/**String*/ localPath, /**String=*/ zipPath, /**=RegExp|Function*/ filter, /**=number|object*/ attr) { // Prepare filter if (filter instanceof RegExp) { // if filter is RegExp wrap it @@ -9667,9 +11085,9 @@ module.exports = function (/**String*/ input, /** object */ options) { if (filter(p)) { var stats = filetools.fs.statSync(filepath); if (stats.isFile()) { - self.addFile(zipPath + p, filetools.fs.readFileSync(filepath), "", stats); + self.addFile(zipPath + p, filetools.fs.readFileSync(filepath), "", attr ? attr : stats); } else { - self.addFile(zipPath + p + "/", Buffer.alloc(0), "", stats); + self.addFile(zipPath + p + "/", Buffer.alloc(0), "", attr ? attr : stats); } } }); @@ -9743,7 +11161,9 @@ module.exports = function (/**String*/ input, /** object */ options) { } }); } else { - next(); + process.nextTick(() => { + next(); + }); } } else { callback(true, undefined); @@ -9809,24 +11229,22 @@ module.exports = function (/**String*/ input, /** object */ options) { var fileattr = entry.isDirectory ? 0x10 : 0; // (MS-DOS directory flag) // extended attributes field for Unix - if (!Utils.isWin) { - // set file type either S_IFDIR / S_IFREG - let unix = entry.isDirectory ? 0x4000 : 0x8000; - - if (isStat) { - // File attributes from file stats - unix |= 0xfff & attr.mode; - } else if ("number" === typeof attr) { - // attr from given attr values - unix |= 0xfff & attr; - } else { - // Default values: - unix |= entry.isDirectory ? 0o755 : 0o644; // permissions (drwxr-xr-x) or (-r-wr--r--) - } + // set file type either S_IFDIR / S_IFREG + let unix = entry.isDirectory ? 0x4000 : 0x8000; - fileattr = (fileattr | (unix << 16)) >>> 0; // add attributes + if (isStat) { + // File attributes from file stats + unix |= 0xfff & attr.mode; + } else if ("number" === typeof attr) { + // attr from given attr values + unix |= 0xfff & attr; + } else { + // Default values: + unix |= entry.isDirectory ? 0o755 : 0o644; // permissions (drwxr-xr-x) or (-r-wr--r--) } + fileattr = (fileattr | (unix << 16)) >>> 0; // add attributes + entry.attr = fileattr; entry.setData(content); @@ -10001,12 +11419,14 @@ module.exports = function (/**String*/ input, /** object */ options) { * @param callback The callback will be executed when all entries are extracted successfully or any error is thrown. */ extractAllToAsync: function (/**String*/ targetPath, /**Boolean*/ overwrite, /**Boolean*/ keepOriginalPermission, /**Function*/ callback) { - if (!callback) { - callback = function () {}; - } overwrite = get_Bool(overwrite, false); if (typeof keepOriginalPermission === "function" && !callback) callback = keepOriginalPermission; keepOriginalPermission = get_Bool(keepOriginalPermission, false); + if (!callback) { + callback = function (err) { + throw new Error(err); + }; + } if (!_zip) { callback(new Error(Utils.Errors.NO_ZIP)); return; @@ -10502,12 +11922,12 @@ module.exports = function () { /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { exports.EntryHeader = __nccwpck_require__(9032); -exports.MainHeader = __nccwpck_require__(4408); +exports.MainHeader = __nccwpck_require__(8952); /***/ }), -/***/ 4408: +/***/ 8952: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { var Utils = __nccwpck_require__(5182), @@ -10588,7 +12008,7 @@ module.exports = function () { // total number of entries _totalEntries = Utils.readBigUInt64LE(data, Constants.ZIP64TOT); // central directory size in bytes - _size = Utils.readBigUInt64LE(data, Constants.ZIP64SIZ); + _size = Utils.readBigUInt64LE(data, Constants.ZIP64SIZE); // offset of first CEN header _offset = Utils.readBigUInt64LE(data, Constants.ZIP64OFF); @@ -10639,7 +12059,7 @@ module.exports = function () { } }; }; - + // Misspelled /***/ }), @@ -11221,6 +12641,7 @@ module.exports.FileAttr = __nccwpck_require__(8321); const fsystem = (__nccwpck_require__(2895).require)(); const pth = __nccwpck_require__(1017); const Constants = __nccwpck_require__(4522); +const Errors = __nccwpck_require__(1255); const isWin = typeof process === "object" && "win32" === process.platform; const is_Obj = (obj) => obj && typeof obj === "object"; @@ -12202,63 +13623,67 @@ module.exports = function (/*Buffer|null*/ inBuffer, /** object */ options) { /***/ 3682: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -var register = __nccwpck_require__(4670) -var addHook = __nccwpck_require__(5549) -var removeHook = __nccwpck_require__(6819) +var register = __nccwpck_require__(4670); +var addHook = __nccwpck_require__(5549); +var removeHook = __nccwpck_require__(6819); // bind with array of arguments: https://stackoverflow.com/a/21792913 -var bind = Function.bind -var bindable = bind.bind(bind) - -function bindApi (hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) - hook.api = { remove: removeHookRef } - hook.remove = removeHookRef - - ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind] - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) - }) +var bind = Function.bind; +var bindable = bind.bind(bind); + +function bindApi(hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply( + null, + name ? [state, name] : [state] + ); + hook.api = { remove: removeHookRef }; + hook.remove = removeHookRef; + ["before", "error", "after", "wrap"].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind]; + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args); + }); } -function HookSingular () { - var singularHookName = 'h' +function HookSingular() { + var singularHookName = "h"; var singularHookState = { - registry: {} - } - var singularHook = register.bind(null, singularHookState, singularHookName) - bindApi(singularHook, singularHookState, singularHookName) - return singularHook + registry: {}, + }; + var singularHook = register.bind(null, singularHookState, singularHookName); + bindApi(singularHook, singularHookState, singularHookName); + return singularHook; } -function HookCollection () { +function HookCollection() { var state = { - registry: {} - } + registry: {}, + }; - var hook = register.bind(null, state) - bindApi(hook, state) + var hook = register.bind(null, state); + bindApi(hook, state); - return hook + return hook; } -var collectionHookDeprecationMessageDisplayed = false -function Hook () { +var collectionHookDeprecationMessageDisplayed = false; +function Hook() { if (!collectionHookDeprecationMessageDisplayed) { - console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') - collectionHookDeprecationMessageDisplayed = true + console.warn( + '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4' + ); + collectionHookDeprecationMessageDisplayed = true; } - return HookCollection() + return HookCollection(); } -Hook.Singular = HookSingular.bind() -Hook.Collection = HookCollection.bind() +Hook.Singular = HookSingular.bind(); +Hook.Collection = HookCollection.bind(); -module.exports = Hook +module.exports = Hook; // expose constructors as a named property for TypeScript -module.exports.Hook = Hook -module.exports.Singular = Hook.Singular -module.exports.Collection = Hook.Collection +module.exports.Hook = Hook; +module.exports.Singular = Hook.Singular; +module.exports.Collection = Hook.Collection; /***/ }), @@ -13306,7 +14731,7 @@ exports.flatten = (...args) => { /***/ }), -/***/ 2286: +/***/ 8367: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; @@ -14160,85 +15585,6 @@ const cloneResponse = response => { module.exports = cloneResponse; -/***/ }), - -/***/ 5728: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -const { promisify } = __nccwpck_require__(3837) -const JSONB = __nccwpck_require__(2820) -const zlib = __nccwpck_require__(9796) - -const mergeOptions = __nccwpck_require__(4968) - -const compress = promisify(zlib.brotliCompress) - -const decompress = promisify(zlib.brotliDecompress) - -const identity = val => val - -const createCompress = ({ - enable = true, - serialize = JSONB.stringify, - deserialize = JSONB.parse, - compressOptions, - decompressOptions -} = {}) => { - if (!enable) { - return { serialize, deserialize, decompress: identity, compress: identity } - } - - return { - serialize, - deserialize, - compress: async (data, options = {}) => { - if (data === undefined) return data - const serializedData = serialize(data) - return compress(serializedData, mergeOptions(compressOptions, options)) - }, - decompress: async (data, options = {}) => { - if (data === undefined) return data - return deserialize( - await decompress(data, mergeOptions(decompressOptions, options)) - ) - } - } -} - -module.exports = createCompress -module.exports.stringify = JSONB.stringify -module.exports.parse = JSONB.parse - - -/***/ }), - -/***/ 4968: -/***/ ((module) => { - -"use strict"; - - -module.exports = (defaultOptions = {}, options = {}) => { - const params = { - ...(defaultOptions.params || {}), - ...(options.params || {}) - } - - return { - ...defaultOptions, - ...options, - ...(Object.keys(params).length - ? { - params - } - : {}) - } -} - - /***/ }), /***/ 2391: @@ -14632,12 +15978,11 @@ module.exports = function globParent(str, opts) { "use strict"; const taskManager = __nccwpck_require__(2708); -const patternManager = __nccwpck_require__(8306); const async_1 = __nccwpck_require__(5679); const stream_1 = __nccwpck_require__(4630); const sync_1 = __nccwpck_require__(2405); const settings_1 = __nccwpck_require__(952); -const utils = __nccwpck_require__(5444); +const utils = __nccwpck_require__(8223); async function FastGlob(source, options) { assertPatternsInput(source); const works = getWorks(source, async_1.default, options); @@ -14647,6 +15992,10 @@ async function FastGlob(source, options) { // https://github.com/typescript-eslint/typescript-eslint/issues/60 // eslint-disable-next-line no-redeclare (function (FastGlob) { + FastGlob.glob = FastGlob; + FastGlob.globSync = sync; + FastGlob.globStream = stream; + FastGlob.async = FastGlob; function sync(source, options) { assertPatternsInput(source); const works = getWorks(source, sync_1.default, options); @@ -14666,7 +16015,7 @@ async function FastGlob(source, options) { FastGlob.stream = stream; function generateTasks(source, options) { assertPatternsInput(source); - const patterns = patternManager.transform([].concat(source)); + const patterns = [].concat(source); const settings = new settings_1.default(options); return taskManager.generate(patterns, settings); } @@ -14682,9 +16031,40 @@ async function FastGlob(source, options) { return utils.path.escape(source); } FastGlob.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertPathToPattern(source); + } + FastGlob.convertPathToPattern = convertPathToPattern; + let posix; + (function (posix) { + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escapePosixPath(source); + } + posix.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertPosixPathToPattern(source); + } + posix.convertPathToPattern = convertPathToPattern; + })(posix = FastGlob.posix || (FastGlob.posix = {})); + let win32; + (function (win32) { + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escapeWindowsPath(source); + } + win32.escapePath = escapePath; + function convertPathToPattern(source) { + assertPatternsInput(source); + return utils.path.convertWindowsPathToPattern(source); + } + win32.convertPathToPattern = convertPathToPattern; + })(win32 = FastGlob.win32 || (FastGlob.win32 = {})); })(FastGlob || (FastGlob = {})); function getWorks(source, _Provider, options) { - const patterns = patternManager.transform([].concat(source)); + const patterns = [].concat(source); const settings = new settings_1.default(options); const tasks = taskManager.generate(patterns, settings); const provider = new _Provider(settings); @@ -14700,35 +16080,6 @@ function assertPatternsInput(input) { module.exports = FastGlob; -/***/ }), - -/***/ 8306: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.removeDuplicateSlashes = exports.transform = void 0; -/** - * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string. - * The latter is due to the presence of the device path at the beginning of the UNC path. - * @todo rewrite to negative lookbehind with the next major release. - */ -const DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; -function transform(patterns) { - return patterns.map((pattern) => removeDuplicateSlashes(pattern)); -} -exports.transform = transform; -/** - * This package only works with forward slashes as a path separator. - * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes. - */ -function removeDuplicateSlashes(pattern) { - return pattern.replace(DOUBLE_SLASH_RE, '/'); -} -exports.removeDuplicateSlashes = removeDuplicateSlashes; - - /***/ }), /***/ 2708: @@ -14738,10 +16089,12 @@ exports.removeDuplicateSlashes = removeDuplicateSlashes; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __nccwpck_require__(5444); -function generate(patterns, settings) { +const utils = __nccwpck_require__(8223); +function generate(input, settings) { + const patterns = processPatterns(input, settings); + const ignore = processPatterns(settings.ignore, settings); const positivePatterns = getPositivePatterns(patterns); - const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); + const negativePatterns = getNegativePatternsAsPositive(patterns, ignore); const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); @@ -14749,6 +16102,34 @@ function generate(patterns, settings) { return staticTasks.concat(dynamicTasks); } exports.generate = generate; +function processPatterns(input, settings) { + let patterns = input; + /** + * The original pattern like `{,*,**,a/*}` can lead to problems checking the depth when matching entry + * and some problems with the micromatch package (see fast-glob issues: #365, #394). + * + * To solve this problem, we expand all patterns containing brace expansion. This can lead to a slight slowdown + * in matching in the case of a large set of patterns after expansion. + */ + if (settings.braceExpansion) { + patterns = utils.pattern.expandPatternsWithBraceExpansion(patterns); + } + /** + * If the `baseNameMatch` option is enabled, we must add globstar to patterns, so that they can be used + * at any nesting level. + * + * We do this here, because otherwise we have to complicate the filtering logic. For example, we need to change + * the pattern in the filter before creating a regular expression. There is no need to change the patterns + * in the application. Only on the input. + */ + if (settings.baseNameMatch) { + patterns = patterns.map((pattern) => pattern.includes('/') ? pattern : `**/${pattern}`); + } + /** + * This method also removes duplicate slashes that may have been in the pattern or formed as a result of expansion. + */ + return patterns.map((pattern) => utils.pattern.removeDuplicateSlashes(pattern)); +} /** * Returns tasks grouped by basic pattern directories. * @@ -14825,23 +16206,18 @@ exports.convertPatternGroupToTask = convertPatternGroupToTask; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -const stream_1 = __nccwpck_require__(2083); +const async_1 = __nccwpck_require__(7747); const provider_1 = __nccwpck_require__(257); class ProviderAsync extends provider_1.default { constructor() { super(...arguments); - this._reader = new stream_1.default(this._settings); + this._reader = new async_1.default(this._settings); } - read(task) { + async read(task) { const root = this._getRootDirectory(task); const options = this._getReaderOptions(task); - const entries = []; - return new Promise((resolve, reject) => { - const stream = this.api(root, task, options); - stream.once('error', reject); - stream.on('data', (entry) => entries.push(options.transform(entry))); - stream.once('end', () => resolve(entries)); - }); + const entries = await this.api(root, task, options); + return entries.map((entry) => options.transform(entry)); } api(root, task, options) { if (task.dynamic) { @@ -14861,7 +16237,7 @@ exports["default"] = ProviderAsync; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -const utils = __nccwpck_require__(5444); +const utils = __nccwpck_require__(8223); const partial_1 = __nccwpck_require__(5295); class DeepFilter { constructor(_settings, _micromatchOptions) { @@ -14931,7 +16307,7 @@ exports["default"] = DeepFilter; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -const utils = __nccwpck_require__(5444); +const utils = __nccwpck_require__(8223); class EntryFilter { constructor(_settings, _micromatchOptions) { this._settings = _settings; @@ -14940,31 +16316,32 @@ class EntryFilter { } getFilter(positive, negative) { const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); - const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, Object.assign(Object.assign({}, this._micromatchOptions), { dot: true })); return (entry) => this._filter(entry, positiveRe, negativeRe); } _filter(entry, positiveRe, negativeRe) { - if (this._settings.unique && this._isDuplicateEntry(entry)) { + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._settings.unique && this._isDuplicateEntry(filepath)) { return false; } if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { return false; } - if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) { + if (this._isSkippedByAbsoluteNegativePatterns(filepath, negativeRe)) { return false; } - const filepath = this._settings.baseNameMatch ? entry.name : entry.path; - const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe); + const isDirectory = entry.dirent.isDirectory(); + const isMatched = this._isMatchToPatterns(filepath, positiveRe, isDirectory) && !this._isMatchToPatterns(filepath, negativeRe, isDirectory); if (this._settings.unique && isMatched) { - this._createIndexRecord(entry); + this._createIndexRecord(filepath); } return isMatched; } - _isDuplicateEntry(entry) { - return this.index.has(entry.path); + _isDuplicateEntry(filepath) { + return this.index.has(filepath); } - _createIndexRecord(entry) { - this.index.set(entry.path, undefined); + _createIndexRecord(filepath) { + this.index.set(filepath, undefined); } _onlyFileFilter(entry) { return this._settings.onlyFiles && !entry.dirent.isFile(); @@ -14979,13 +16356,15 @@ class EntryFilter { const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); return utils.pattern.matchAny(fullpath, patternsRe); } - /** - * First, just trying to apply patterns to the path. - * Second, trying to apply patterns to the path with final slash. - */ - _isMatchToPatterns(entryPath, patternsRe) { - const filepath = utils.path.removeLeadingDotSegment(entryPath); - return utils.pattern.matchAny(filepath, patternsRe) || utils.pattern.matchAny(filepath + '/', patternsRe); + _isMatchToPatterns(filepath, patternsRe, isDirectory) { + // Trying to match files and directories by patterns. + const isMatched = utils.pattern.matchAny(filepath, patternsRe); + // A pattern with a trailling slash can be used for directory matching. + // To apply such pattern, we need to add a tralling slash to the path. + if (!isMatched && isDirectory) { + return utils.pattern.matchAny(filepath + '/', patternsRe); + } + return isMatched; } } exports["default"] = EntryFilter; @@ -14999,7 +16378,7 @@ exports["default"] = EntryFilter; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -const utils = __nccwpck_require__(5444); +const utils = __nccwpck_require__(8223); class ErrorFilter { constructor(_settings) { this._settings = _settings; @@ -15022,7 +16401,7 @@ exports["default"] = ErrorFilter; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -const utils = __nccwpck_require__(5444); +const utils = __nccwpck_require__(8223); class Matcher { constructor(_patterns, _settings, _micromatchOptions) { this._patterns = _patterns; @@ -15032,12 +16411,7 @@ class Matcher { this._fillStorage(); } _fillStorage() { - /** - * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level). - * So, before expand patterns with brace expansion into separated patterns. - */ - const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns); - for (const pattern of patterns) { + for (const pattern of this._patterns) { const segments = this._getPatternSegments(pattern); const sections = this._splitSegmentsIntoSections(segments); this._storage.push({ @@ -15252,7 +16626,7 @@ exports["default"] = ProviderSync; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -const utils = __nccwpck_require__(5444); +const utils = __nccwpck_require__(8223); class EntryTransformer { constructor(_settings) { this._settings = _settings; @@ -15278,6 +16652,49 @@ class EntryTransformer { exports["default"] = EntryTransformer; +/***/ }), + +/***/ 7747: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const fsWalk = __nccwpck_require__(6026); +const reader_1 = __nccwpck_require__(5582); +const stream_1 = __nccwpck_require__(2083); +class ReaderAsync extends reader_1.default { + constructor() { + super(...arguments); + this._walkAsync = fsWalk.walk; + this._readerStream = new stream_1.default(this._settings); + } + dynamic(root, options) { + return new Promise((resolve, reject) => { + this._walkAsync(root, options, (error, entries) => { + if (error === null) { + resolve(entries); + } + else { + reject(error); + } + }); + }); + } + async static(patterns, options) { + const entries = []; + const stream = this._readerStream.static(patterns, options); + // After #235, replace it with an asynchronous iterator. + return new Promise((resolve, reject) => { + stream.once('error', reject); + stream.on('data', (entry) => entries.push(entry)); + stream.once('end', () => resolve(entries)); + }); + } +} +exports["default"] = ReaderAsync; + + /***/ }), /***/ 5582: @@ -15288,7 +16705,7 @@ exports["default"] = EntryTransformer; Object.defineProperty(exports, "__esModule", ({ value: true })); const path = __nccwpck_require__(1017); const fsStat = __nccwpck_require__(109); -const utils = __nccwpck_require__(5444); +const utils = __nccwpck_require__(8223); class Reader { constructor(_settings) { this._settings = _settings; @@ -15487,6 +16904,8 @@ class Settings { if (this.stats) { this.objectMode = true; } + // Remove the cast to the array in the next major (#404). + this.ignore = [].concat(this.ignore); } _getValue(option, value) { return option === undefined ? value : option; @@ -15572,7 +16991,7 @@ exports.createDirentFromStats = createDirentFromStats; /***/ }), -/***/ 5444: +/***/ 8223: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -15603,10 +17022,29 @@ exports.string = string; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0; +exports.convertPosixPathToPattern = exports.convertWindowsPathToPattern = exports.convertPathToPattern = exports.escapePosixPath = exports.escapeWindowsPath = exports.escape = exports.removeLeadingDotSegment = exports.makeAbsolute = exports.unixify = void 0; +const os = __nccwpck_require__(2037); const path = __nccwpck_require__(1017); +const IS_WINDOWS_PLATFORM = os.platform() === 'win32'; const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\ -const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g; +/** + * All non-escaped special characters. + * Posix: ()*?[]{|}, !+@ before (, ! at the beginning, \\ before non-special characters. + * Windows: (){}[], !+@ before (, ! at the beginning. + */ +const POSIX_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g; +const WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()[\]{}]|^!|[!+@](?=\())/g; +/** + * The device path (\\.\ or \\?\). + * https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#dos-device-paths + */ +const DOS_DEVICE_PATH_RE = /^\\\\([.?])/; +/** + * All backslashes except those escaping special characters. + * Windows: !()+@{} + * https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions + */ +const WINDOWS_BACKSLASHES_RE = /\\(?![!()+@[\]{}])/g; /** * Designed to work only with simple paths: `dir\\file`. */ @@ -15618,10 +17056,6 @@ function makeAbsolute(cwd, filepath) { return path.resolve(cwd, filepath); } exports.makeAbsolute = makeAbsolute; -function escape(pattern) { - return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); -} -exports.escape = escape; function removeLeadingDotSegment(entry) { // We do not use `startsWith` because this is 10x slower than current implementation for some cases. // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with @@ -15634,6 +17068,26 @@ function removeLeadingDotSegment(entry) { return entry; } exports.removeLeadingDotSegment = removeLeadingDotSegment; +exports.escape = IS_WINDOWS_PLATFORM ? escapeWindowsPath : escapePosixPath; +function escapeWindowsPath(pattern) { + return pattern.replace(WINDOWS_UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); +} +exports.escapeWindowsPath = escapeWindowsPath; +function escapePosixPath(pattern) { + return pattern.replace(POSIX_UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); +} +exports.escapePosixPath = escapePosixPath; +exports.convertPathToPattern = IS_WINDOWS_PLATFORM ? convertWindowsPathToPattern : convertPosixPathToPattern; +function convertWindowsPathToPattern(filepath) { + return escapeWindowsPath(filepath) + .replace(DOS_DEVICE_PATH_RE, '//$1') + .replace(WINDOWS_BACKSLASHES_RE, '/'); +} +exports.convertWindowsPathToPattern = convertWindowsPathToPattern; +function convertPosixPathToPattern(filepath) { + return escapePosixPath(filepath); +} +exports.convertPosixPathToPattern = convertPosixPathToPattern; /***/ }), @@ -15644,7 +17098,7 @@ exports.removeLeadingDotSegment = removeLeadingDotSegment; "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; +exports.removeDuplicateSlashes = exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; const path = __nccwpck_require__(1017); const globParent = __nccwpck_require__(4460); const micromatch = __nccwpck_require__(6228); @@ -15655,6 +17109,11 @@ const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[[^[]*]/; const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\([^(]*\|[^|]*\)/; const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\([^(]*\)/; const BRACE_EXPANSION_SEPARATORS_RE = /,|\.\./; +/** + * Matches a sequence of two or more consecutive slashes, excluding the first two slashes at the beginning of the string. + * The latter is due to the presence of the device path at the beginning of the UNC path. + */ +const DOUBLE_SLASH_RE = /(?!^)\/{2,}/g; function isStaticPattern(pattern, options = {}) { return !isDynamicPattern(pattern, options); } @@ -15773,10 +17232,16 @@ function expandPatternsWithBraceExpansion(patterns) { } exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; function expandBraceExpansion(pattern) { - return micromatch.braces(pattern, { - expand: true, - nodupes: true - }); + const patterns = micromatch.braces(pattern, { expand: true, nodupes: true, keepEscaping: true }); + /** + * Sort the patterns by length so that the same depth patterns are processed side by side. + * `a/{b,}/{c,}/*` – `['a///*', 'a/b//*', 'a//c/*', 'a/b/c/*']` + */ + patterns.sort((a, b) => a.length - b.length); + /** + * Micromatch can return an empty string in the case of patterns like `{a,}`. + */ + return patterns.filter((pattern) => pattern !== ''); } exports.expandBraceExpansion = expandBraceExpansion; function getPatternParts(pattern, options) { @@ -15811,6 +17276,14 @@ function matchAny(entry, patternsRe) { return patternsRe.some((patternRe) => patternRe.test(entry)); } exports.matchAny = matchAny; +/** + * This package only works with forward slashes as a path separator. + * Because of this, we cannot use the standard `path.normalize` method, because on Windows platform it will use of backslashes. + */ +function removeDuplicateSlashes(pattern) { + return pattern.replace(DOUBLE_SLASH_RE, '/'); +} +exports.removeDuplicateSlashes = removeDuplicateSlashes; /***/ }), @@ -16131,6 +17604,12 @@ function queueAsPromised (context, worker, concurrency) { } function drained () { + if (queue.idle()) { + return new Promise(function (resolve) { + resolve() + }) + } + var previousDrain = queue.drain var p = new Promise(function (resolve) { @@ -16569,6 +18048,7 @@ function asPromise(normalizedOptions) { request._beforeError(new types_1.HTTPError(response)); return; } + request.destroy(); resolve(request.options.resolveBodyOnly ? response.body : response); }); const onError = (error) => { @@ -16849,7 +18329,7 @@ const http = __nccwpck_require__(3685); const http_1 = __nccwpck_require__(3685); const https = __nccwpck_require__(5687); const http_timer_1 = __nccwpck_require__(8097); -const cacheable_lookup_1 = __nccwpck_require__(2286); +const cacheable_lookup_1 = __nccwpck_require__(8367); const CacheableRequest = __nccwpck_require__(8116); const decompressResponse = __nccwpck_require__(2391); // @ts-expect-error Missing types @@ -19230,6 +20710,7 @@ const statusCodeCacheableByDefault = new Set([ 206, 300, 301, + 308, 404, 405, 410, @@ -19302,10 +20783,10 @@ function parseCacheControl(header) { // TODO: When there is more than one value present for a given directive (e.g., two Expires header fields, multiple Cache-Control: max-age directives), // the directive's value is considered invalid. Caches are encouraged to consider responses that have invalid freshness information to be stale - const parts = header.trim().split(/\s*,\s*/); // TODO: lame parsing + const parts = header.trim().split(/,/); for (const part of parts) { - const [k, v] = part.split(/\s*=\s*/, 2); - cc[k] = v === undefined ? true : v.replace(/^"|"$/g, ''); // TODO: lame unquoting + const [k, v] = part.split(/=/, 2); + cc[k.trim()] = v === undefined ? true : v.trim().replace(/^"|"$/g, ''); } return cc; @@ -21653,52 +23134,6 @@ module.exports = function(num) { }; -/***/ }), - -/***/ 3287: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; -} - -function isPlainObject(o) { - var ctor,prot; - - if (isObject(o) === false) return false; - - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; - - // If has modified prototype - prot = ctor.prototype; - if (isObject(prot) === false) return false; - - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } - - // Most likely a plain Object - return true; -} - -exports.isPlainObject = isPlainObject; - - /***/ }), /***/ 2820: @@ -21774,7 +23209,6 @@ exports.parse = function (s) { const EventEmitter = __nccwpck_require__(2361); const JSONB = __nccwpck_require__(2820); -const compressBrotli = __nccwpck_require__(5728); const loadStore = options => { const adapters = { @@ -21823,13 +23257,10 @@ class Keyv extends EventEmitter { this.opts.store = loadStore(adapterOptions); } - if (this.opts.compress) { - const brotli = compressBrotli(this.opts.compress.opts); - this.opts.serialize = async ({value, expires}) => brotli.serialize({value: await brotli.compress(value), expires}); - this.opts.deserialize = async data => { - const {value, expires} = brotli.deserialize(data); - return {value: await brotli.decompress(value), expires}; - }; + if (this.opts.compression) { + const compression = this.opts.compression; + this.opts.serialize = compression.serialize.bind(compression); + this.opts.deserialize = compression.deserialize.bind(compression); } if (typeof this.opts.store.on === 'function' && emitErrors) { @@ -21842,7 +23273,7 @@ class Keyv extends EventEmitter { for await (const [key, raw] of typeof iterator === 'function' ? iterator(this.opts.store.namespace) : iterator) { - const data = this.opts.deserialize(raw); + const data = await this.opts.deserialize(raw); if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) { continue; } @@ -21894,7 +23325,7 @@ class Keyv extends EventEmitter { for (const key of keyPrefixed) { promises.push(Promise.resolve() .then(() => store.get(key)) - .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : data) + .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data)) .then(data => { if (data === undefined || data === null) { return undefined; @@ -21916,13 +23347,13 @@ class Keyv extends EventEmitter { data.push(value.value); } - return data.every(x => x === undefined) ? [] : data; + return data; }); } return Promise.resolve() .then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed)) - .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : data) + .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data)) .then(data => { if (data === undefined || data === null) { return undefined; @@ -21931,10 +23362,6 @@ class Keyv extends EventEmitter { if (isArray) { const result = []; - if (data.length === 0) { - return []; - } - for (let row of data) { if ((typeof row === 'string')) { row = this.opts.deserialize(row); @@ -21953,7 +23380,7 @@ class Keyv extends EventEmitter { } } - return result.every(x => x === undefined) ? [] : result; + return result; } if (typeof data.expires === 'number' && Date.now() > data.expires) { @@ -22224,8 +23651,8 @@ function pauseStreams (streams, options) { const util = __nccwpck_require__(3837); const braces = __nccwpck_require__(610); -const picomatch = __nccwpck_require__(8569); -const utils = __nccwpck_require__(479); +const picomatch = __nccwpck_require__(2864); +const utils = __nccwpck_require__(7426); const isEmptyString = val => val === '' || val === './'; /** @@ -22691,9668 +24118,29886 @@ module.exports = micromatch; /***/ }), -/***/ 2610: -/***/ ((module) => { +/***/ 2864: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -// We define these manually to ensure they're always copied -// even if they would move up the prototype chain -// https://nodejs.org/api/http.html#http_class_http_incomingmessage -const knownProps = [ - 'destroy', - 'setTimeout', - 'socket', - 'headers', - 'trailers', - 'rawHeaders', - 'statusCode', - 'httpVersion', - 'httpVersionMinor', - 'httpVersionMajor', - 'rawTrailers', - 'statusMessage' -]; - -module.exports = (fromStream, toStream) => { - const fromProps = new Set(Object.keys(fromStream).concat(knownProps)); - - for (const prop of fromProps) { - // Don't overwrite existing properties - if (prop in toStream) { - continue; - } - - toStream[prop] = typeof fromStream[prop] === 'function' ? fromStream[prop].bind(fromStream) : fromStream[prop]; - } -}; +module.exports = __nccwpck_require__(555); /***/ }), -/***/ 467: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ 6476: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var Stream = _interopDefault(__nccwpck_require__(2781)); -var http = _interopDefault(__nccwpck_require__(3685)); -var Url = _interopDefault(__nccwpck_require__(7310)); -var whatwgUrl = _interopDefault(__nccwpck_require__(8665)); -var https = _interopDefault(__nccwpck_require__(5687)); -var zlib = _interopDefault(__nccwpck_require__(9796)); - -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js - -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; - -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); - -class Blob { - constructor() { - this[TYPE] = ''; - - const blobParts = arguments[0]; - const options = arguments[1]; - - const buffers = []; - let size = 0; - - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } - - this[BUFFER] = Buffer.concat(buffers); - - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; - - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); - - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} - -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); - -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); - -/** - * fetch-error.js - * - * FetchError interface for operational errors - */ +const path = __nccwpck_require__(1017); +const WIN_SLASH = '\\\\/'; +const WIN_NO_SLASH = `[^${WIN_SLASH}]`; /** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError + * Posix glob regex */ -function FetchError(message, type, systemError) { - Error.call(this, message); - - this.message = message; - this.type = type; - - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } - - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; - -let convert; -try { - convert = (__nccwpck_require__(2877).convert); -} catch (e) {} - -const INTERNALS = Symbol('Body internals'); +const DOT_LITERAL = '\\.'; +const PLUS_LITERAL = '\\+'; +const QMARK_LITERAL = '\\?'; +const SLASH_LITERAL = '\\/'; +const ONE_CHAR = '(?=.)'; +const QMARK = '[^/]'; +const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; +const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; +const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; +const NO_DOT = `(?!${DOT_LITERAL})`; +const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; +const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; +const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; +const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; +const STAR = `${QMARK}*?`; -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; +const POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR +}; /** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void + * Windows glob regex */ -function Body(body) { - var _this = this; - - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; - - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; - - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} - -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, - - get bodyUsed() { - return this[INTERNALS].disturbed; - }, - - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, - - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf - }); - }); - }, - - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; - - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, - - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, - - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, - - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; - - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); - } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); +const WINDOWS_CHARS = { + ...POSIX_CHARS, -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); - } - } + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|$)` }; /** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise + * POSIX Bracket Regex */ -function consumeBody() { - var _this4 = this; - - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); - } - - this[INTERNALS].disturbed = true; - - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } - - let body = this.body; - - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } - - // body is blob - if (isBlob(body)) { - body = body.stream(); - } - - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); - } +const POSIX_REGEX_SOURCE = { + alnum: 'a-zA-Z0-9', + alpha: 'a-zA-Z', + ascii: '\\x00-\\x7F', + blank: ' \\t', + cntrl: '\\x00-\\x1F\\x7F', + digit: '0-9', + graph: '\\x21-\\x7E', + lower: 'a-z', + print: '\\x20-\\x7E ', + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: ' \\t\\r\\n\\v\\f', + upper: 'A-Z', + word: 'A-Za-z0-9_', + xdigit: 'A-Fa-f0-9' +}; - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; - - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); - } +module.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); + // regular expressions + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; - } + // Replace globs with equivalent patterns to reduce parsing time. + REPLACEMENTS: { + '***': '*', + '**/**': '**', + '**/**/**': '**' + }, - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; - } + // Digits + CHAR_0: 48, /* 0 */ + CHAR_9: 57, /* 9 */ - accumBytes += chunk.length; - accum.push(chunk); - }); + // Alphabet chars. + CHAR_UPPERCASE_A: 65, /* A */ + CHAR_LOWERCASE_A: 97, /* a */ + CHAR_UPPERCASE_Z: 90, /* Z */ + CHAR_LOWERCASE_Z: 122, /* z */ - body.on('end', function () { - if (abort) { - return; - } + CHAR_LEFT_PARENTHESES: 40, /* ( */ + CHAR_RIGHT_PARENTHESES: 41, /* ) */ - clearTimeout(resTimeout); + CHAR_ASTERISK: 42, /* * */ - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); -} + // Non-alphabetic chars. + CHAR_AMPERSAND: 38, /* & */ + CHAR_AT: 64, /* @ */ + CHAR_BACKWARD_SLASH: 92, /* \ */ + CHAR_CARRIAGE_RETURN: 13, /* \r */ + CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ + CHAR_COLON: 58, /* : */ + CHAR_COMMA: 44, /* , */ + CHAR_DOT: 46, /* . */ + CHAR_DOUBLE_QUOTE: 34, /* " */ + CHAR_EQUAL: 61, /* = */ + CHAR_EXCLAMATION_MARK: 33, /* ! */ + CHAR_FORM_FEED: 12, /* \f */ + CHAR_FORWARD_SLASH: 47, /* / */ + CHAR_GRAVE_ACCENT: 96, /* ` */ + CHAR_HASH: 35, /* # */ + CHAR_HYPHEN_MINUS: 45, /* - */ + CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ + CHAR_LEFT_CURLY_BRACE: 123, /* { */ + CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ + CHAR_LINE_FEED: 10, /* \n */ + CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ + CHAR_PERCENT: 37, /* % */ + CHAR_PLUS: 43, /* + */ + CHAR_QUESTION_MARK: 63, /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ + CHAR_RIGHT_CURLY_BRACE: 125, /* } */ + CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ + CHAR_SEMICOLON: 59, /* ; */ + CHAR_SINGLE_QUOTE: 39, /* ' */ + CHAR_SPACE: 32, /* */ + CHAR_TAB: 9, /* \t */ + CHAR_UNDERSCORE: 95, /* _ */ + CHAR_VERTICAL_LINE: 124, /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } + SEP: path.sep, - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; + /** + * Create EXTGLOB_CHARS + */ - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } + extglobChars(chars) { + return { + '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, + '?': { type: 'qmark', open: '(?:', close: ')?' }, + '+': { type: 'plus', open: '(?:', close: ')+' }, + '*': { type: 'star', open: '(?:', close: ')*' }, + '@': { type: 'at', open: '(?:', close: ')' } + }; + }, - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); + /** + * Create GLOB_CHARS + */ - // html5 - if (!res && str) { - res = / { - // found charset - if (res) { - charset = res.pop(); +"use strict"; - // prevent decode issues when sites use incorrect encoding - // ref: https://hsivonen.fi/encoding-menu/ - if (charset === 'gb2312' || charset === 'gbk') { - charset = 'gb18030'; - } - } - // turn raw buffers into a single utf-8 buffer - return convert(buffer, 'UTF-8', charset).toString(); -} +const constants = __nccwpck_require__(6476); +const utils = __nccwpck_require__(7426); /** - * Detect a URLSearchParams object - * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143 - * - * @param Object obj Object to detect by type or brand - * @return String + * Constants */ -function isURLSearchParams(obj) { - // Duck-typing as a necessary condition. - if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') { - return false; - } - // Brand-checking and more duck-typing as optional condition. - return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function'; -} +const { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS +} = constants; /** - * Check if `obj` is a W3C `Blob` object (which `File` inherits from) - * @param {*} obj - * @return {boolean} + * Helpers */ -function isBlob(obj) { - return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]); -} -/** - * Clone body given Res/Req instance - * - * @param Mixed instance Response or Request instance - * @return Mixed - */ -function clone(instance) { - let p1, p2; - let body = instance.body; +const expandRange = (args, options) => { + if (typeof options.expandRange === 'function') { + return options.expandRange(...args, options); + } - // don't allow cloning a used body - if (instance.bodyUsed) { - throw new Error('cannot clone body after it is used'); - } + args.sort(); + const value = `[${args.join('-')}]`; - // check that body is a stream and not form-data object - // note: we can't clone the form-data object without having it as a dependency - if (body instanceof Stream && typeof body.getBoundary !== 'function') { - // tee instance body - p1 = new PassThrough(); - p2 = new PassThrough(); - body.pipe(p1); - body.pipe(p2); - // set instance body to teed body and return the other teed body - instance[INTERNALS].body = p1; - body = p2; - } + try { + /* eslint-disable-next-line no-new */ + new RegExp(value); + } catch (ex) { + return args.map(v => utils.escapeRegex(v)).join('..'); + } - return body; -} + return value; +}; /** - * Performs the operation "extract a `Content-Type` value from |object|" as - * specified in the specification: - * https://fetch.spec.whatwg.org/#concept-bodyinit-extract - * - * This function assumes that instance.body is present. - * - * @param Mixed instance Any options.body input + * Create the message for a syntax error */ -function extractContentType(body) { - if (body === null) { - // body is null - return null; - } else if (typeof body === 'string') { - // body is string - return 'text/plain;charset=UTF-8'; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - return 'application/x-www-form-urlencoded;charset=UTF-8'; - } else if (isBlob(body)) { - // body is blob - return body.type || null; - } else if (Buffer.isBuffer(body)) { - // body is buffer - return null; - } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - return null; - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - return null; - } else if (typeof body.getBoundary === 'function') { - // detect form data input from form-data module - return `multipart/form-data;boundary=${body.getBoundary()}`; - } else if (body instanceof Stream) { - // body is stream - // can't really do much about this - return null; - } else { - // Body constructor defaults other things to string - return 'text/plain;charset=UTF-8'; - } -} -/** - * The Fetch Standard treats this as if "total bytes" is a property on the body. - * For us, we have to explicitly get it with a function. - * - * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes - * - * @param Body instance Instance of Body - * @return Number? Number of bytes, or null if not possible - */ -function getTotalBytes(instance) { - const body = instance.body; - - - if (body === null) { - // body is null - return 0; - } else if (isBlob(body)) { - return body.size; - } else if (Buffer.isBuffer(body)) { - // body is buffer - return body.length; - } else if (body && typeof body.getLengthSync === 'function') { - // detect form data input from form-data module - if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x - body.hasKnownLength && body.hasKnownLength()) { - // 2.x - return body.getLengthSync(); - } - return null; - } else { - // body is stream - return null; - } -} +const syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; +}; /** - * Write a Body to a Node.js WritableStream (e.g. http.Request) object. - * - * @param Body instance Instance of Body - * @return Void + * Parse the given input string. + * @param {String} input + * @param {Object} options + * @return {Object} */ -function writeToStream(dest, instance) { - const body = instance.body; - - - if (body === null) { - // body is null - dest.end(); - } else if (isBlob(body)) { - body.stream().pipe(dest); - } else if (Buffer.isBuffer(body)) { - // body is buffer - dest.write(body); - dest.end(); - } else { - // body is stream - body.pipe(dest); - } -} - -// expose Promise -Body.Promise = global.Promise; -/** - * headers.js - * - * Headers class offers convenient helpers - */ +const parse = (input, options) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } -const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/; -const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + input = REPLACEMENTS[input] || input; -function validateName(name) { - name = `${name}`; - if (invalidTokenRegex.test(name) || name === '') { - throw new TypeError(`${name} is not a legal HTTP header name`); - } -} + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; -function validateValue(value) { - value = `${value}`; - if (invalidHeaderCharRegex.test(value)) { - throw new TypeError(`${value} is not a legal HTTP header value`); - } -} + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } -/** - * Find the key in the map object given a header name. - * - * Returns undefined if not found. - * - * @param String name Header name - * @return String|Undefined - */ -function find(map, name) { - name = name.toLowerCase(); - for (const key in map) { - if (key.toLowerCase() === name) { - return key; - } - } - return undefined; -} + const bos = { type: 'bos', value: '', output: opts.prepend || '' }; + const tokens = [bos]; -const MAP = Symbol('map'); -class Headers { - /** - * Headers class - * - * @param Object headers Response headers - * @return Void - */ - constructor() { - let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; + const capture = opts.capture ? '' : '?:'; + const win32 = utils.isWindows(options); - this[MAP] = Object.create(null); + // create constants based on platform, for windows or posix + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } + const globstar = opts => { + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; - return; - } + const nodot = opts.dot ? '' : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } + if (opts.capture) { + star = `(${star})`; + } - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } + // minimatch options support + if (typeof opts.noext === 'boolean') { + opts.noextglob = opts.noext; + } - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } - } - - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: '', + output: '', + prefix: '', + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; - return this[MAP][key].join(', '); - } + input = utils.removePrefix(input, state); + len = input.length; - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; - - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; - - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } - } + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; - } + /** + * Tokenizing helpers + */ - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); - } else { - this[MAP][name] = [value]; - } - } + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index] || ''; + const remaining = () => input.slice(state.index + 1); + const consume = (value = '', num = 0) => { + state.consumed += value; + state.index += num; + }; - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; - } + const append = token => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } - } + const negate = () => { + let count = 1; - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; - } + while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { + advance(); + state.start++; + count++; + } - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); - } + if (count % 2 === 0) { + return false; + } - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); - } + state.negated = true; + state.start++; + return true; + }; - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); - } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + const increment = type => { + state[type]++; + stack.push(type); + }; -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true -}); + const decrement = type => { + state[type]--; + stack.pop(); + }; -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } -}); + /** + * Push tokens onto the tokens array. This helper speeds up + * tokenizing by 1) helping us avoid backtracking as much as possible, + * and 2) helping us avoid creating extra tokens when consecutive + * characters are plain text. This improves performance and simplifies + * lookbehinds. + */ -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + const push = tok => { + if (prev.type === 'globstar') { + const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); + const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); -} + if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = 'star'; + prev.value = '*'; + prev.output = star; + state.output += prev.output; + } + } -const INTERNAL = Symbol('internal'); + if (extglobs.length && tok.type !== 'paren') { + extglobs[extglobs.length - 1].inner += tok.value; + } -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 - }; - return iterator; -} + if (tok.value || tok.output) append(tok); + if (prev && prev.type === 'text' && tok.type === 'text') { + prev.value += tok.value; + prev.output = (prev.output || '') + tok.value; + return; + } -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; + const extglobOpen = (type, value) => { + const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? '(' : '') + token.open; - this[INTERNAL].index = index + 1; + increment('parens'); + push({ type, value, output: state.output ? '' : ONE_CHAR }); + push({ type: 'paren', extglob: true, value: advance(), output }); + extglobs.push(token); + }; - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + const extglobClose = token => { + let output = token.close + (opts.capture ? ')' : ''); + let rest; -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); + if (token.type === 'negate') { + let extglobStar = star; -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); - - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } + if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { + extglobStar = globstar(opts); + } - return obj; -} + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)$))${extglobStar}`; + } -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; - } - } - return headers; -} + if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis. + // In this case, we need to parse the string and use it in the output of the original pattern. + // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`. + // + // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`. + const expression = parse(rest, { ...options, fastpaths: false }).output; -const INTERNALS$1 = Symbol('Response internals'); + output = token.close = `)${expression})${extglobStar})`; + } -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; + if (token.prev.type === 'bos') { + state.negatedExtglob = true; + } + } -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + push({ type: 'paren', extglob: true, value, output }); + decrement('parens'); + }; - Body.call(this, body, opts); + /** + * Fast paths + */ - const status = opts.status || 200; - const headers = new Headers(opts.headers); + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === '\\') { + backslashes = true; + return m; + } - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } + if (first === '?') { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ''); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); + } + return QMARK.repeat(chars.length); + } - get url() { - return this[INTERNALS$1].url || ''; - } + if (first === '.') { + return DOT_LITERAL.repeat(chars.length); + } - get status() { - return this[INTERNALS$1].status; - } + if (first === '*') { + if (esc) { + return esc + first + (rest ? star : ''); + } + return star; + } + return esc ? m : `\\${m}`; + }); - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ''); + } else { + output = output.replace(/\\+/g, m => { + return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); + }); + } + } - get redirected() { - return this[INTERNALS$1].counter > 0; - } + if (output === input && opts.contains === true) { + state.output = input; + return state; + } - get statusText() { - return this[INTERNALS$1].statusText; - } + state.output = utils.wrapOutput(output, state, options); + return state; + } - get headers() { - return this[INTERNALS$1].headers; - } + /** + * Tokenize input until we reach end-of-string + */ - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } -} + while (!eos()) { + value = advance(); -Body.mixIn(Response.prototype); + if (value === '\u0000') { + continue; + } -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); + /** + * Escaped characters + */ -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); + if (value === '\\') { + const next = peek(); -const INTERNALS$2 = Symbol('Request internals'); -const URL = Url.URL || whatwgUrl.URL; + if (next === '/' && opts.bash !== true) { + continue; + } -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; + if (next === '.' || next === ';') { + continue; + } -/** - * Wrapper around `new URL` to handle arbitrary URLs - * - * @param {string} urlStr - * @return {void} - */ -function parseURL(urlStr) { - /* - Check whether the URL is absolute or not - Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 - Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 - */ - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL(urlStr).toString(); - } + if (!next) { + value += '\\'; + push({ type: 'text', value }); + continue; + } - // Fallback to old implementation for arbitrary URLs - return parse_url(urlStr); -} + // collapse slashes to reduce potential for exploits + const match = /^\\+/.exec(remaining()); + let slashes = 0; -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += '\\'; + } + } -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; -} + if (opts.unescape === true) { + value = advance(); + } else { + value += advance(); + } -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); -} + if (state.brackets === 0) { + push({ type: 'text', value }); + continue; + } + } -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - let parsedURL; - - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parseURL(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } + /** + * If we're inside a regex character class, continue + * until we reach the closing bracket. + */ - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); + if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { + if (opts.posix !== false && value === ':') { + const inner = prev.value.slice(1); + if (inner.includes('[')) { + prev.posix = true; - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } + if (inner.includes(':')) { + const idx = prev.value.lastIndexOf('['); + const pre = prev.value.slice(0, idx); + const rest = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE[rest]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); + if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { + value = `\\${value}`; + } - const headers = new Headers(init.headers || input.headers || {}); + if (value === ']' && (prev.value === '[' || prev.value === '[^')) { + value = `\\${value}`; + } - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } + if (opts.posix === true && value === '!' && prev.value === '[') { + value = '^'; + } - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; + prev.value += value; + append({ value }); + continue; + } - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } + /** + * If we're inside a quoted string, continue + * until we reach the closing double quote. + */ - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } + /** + * Double quotes + */ - get method() { - return this[INTERNALS$2].method; - } + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: 'text', value }); + } + continue; + } - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } + /** + * Parentheses + */ - get headers() { - return this[INTERNALS$2].headers; - } + if (value === '(') { + increment('parens'); + push({ type: 'paren', value }); + continue; + } - get redirect() { - return this[INTERNALS$2].redirect; - } + if (value === ')') { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '(')); + } - get signal() { - return this[INTERNALS$2].signal; - } + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} + push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); + decrement('parens'); + continue; + } -Body.mixIn(Request.prototype); + /** + * Square brackets + */ -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); + if (value === '[') { + if (opts.nobracket === true || !remaining().includes(']')) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('closing', ']')); + } -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); + value = `\\${value}`; + } else { + increment('brackets'); + } -/** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request - */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); + push({ type: 'bracket', value }); + continue; + } - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } + if (value === ']') { + if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { + push({ type: 'text', value, output: `\\${value}` }); + continue; + } - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '[')); + } - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } + push({ type: 'text', value, output: `\\${value}` }); + continue; + } - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } + decrement('brackets'); - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { + value = `/${value}`; + } - // HTTP-network-or-cache fetch step 2.11 - if (!headers.has('User-Agent')) { - headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); - } + prev.value += value; + append({ value }); - // HTTP-network-or-cache fetch step 2.15 - if (request.compress && !headers.has('Accept-Encoding')) { - headers.set('Accept-Encoding', 'gzip,deflate'); - } + // when literal brackets are explicitly disabled + // assume we should match with a regex character class + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } - let agent = request.agent; - if (typeof agent === 'function') { - agent = agent(parsedURL); - } + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); - if (!headers.has('Connection') && !agent) { - headers.set('Connection', 'close'); - } + // when literal brackets are explicitly enabled + // assume we should escape the brackets to match literal characters + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } - // HTTP-network fetch step 4.2 - // chunked encoding is handled by Node.js + // when the user specifies nothing, try to match both + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } - return Object.assign({}, parsedURL, { - method: request.method, - headers: exportNodeCompatibleHeaders(headers), - agent - }); -} + /** + * Braces + */ -/** - * abort-error.js - * - * AbortError interface for cancelled requests - */ + if (value === '{' && opts.nobrace !== true) { + increment('braces'); -/** - * Create AbortError instance - * - * @param String message Error message for human - * @return AbortError - */ -function AbortError(message) { - Error.call(this, message); + const open = { + type: 'brace', + value, + output: '(', + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; - this.type = 'aborted'; - this.message = message; + braces.push(open); + push(open); + continue; + } - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} + if (value === '}') { + const brace = braces[braces.length - 1]; -AbortError.prototype = Object.create(Error.prototype); -AbortError.prototype.constructor = AbortError; -AbortError.prototype.name = 'AbortError'; + if (opts.nobrace === true || !brace) { + push({ type: 'text', value, output: value }); + continue; + } -const URL$1 = Url.URL || whatwgUrl.URL; + let output = ')'; -// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 -const PassThrough$1 = Stream.PassThrough; + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; -const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { - const orig = new URL$1(original).hostname; - const dest = new URL$1(destination).hostname; + for (let i = arr.length - 1; i >= 0; i--) { + tokens.pop(); + if (arr[i].type === 'brace') { + break; + } + if (arr[i].type !== 'dots') { + range.unshift(arr[i].value); + } + } - return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); -}; + output = expandRange(range, opts); + state.backtrack = true; + } -/** - * Fetch function - * - * @param Mixed url Absolute url or Request instance - * @param Object opts Fetch options - * @return Promise - */ -function fetch(url, opts) { + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = '\\{'; + value = output = '\\}'; + state.output = out; + for (const t of toks) { + state.output += (t.output || t.value); + } + } - // allow custom promise - if (!fetch.Promise) { - throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); - } + push({ type: 'brace', value, output }); + decrement('braces'); + braces.pop(); + continue; + } - Body.Promise = fetch.Promise; + /** + * Pipes + */ - // wrap http.request into fetch - return new fetch.Promise(function (resolve, reject) { - // build request object - const request = new Request(url, opts); - const options = getNodeRequestOptions(request); + if (value === '|') { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: 'text', value }); + continue; + } - const send = (options.protocol === 'https:' ? https : http).request; - const signal = request.signal; + /** + * Commas + */ - let response = null; + if (value === ',') { + let output = value; - const abort = function abort() { - let error = new AbortError('The user aborted a request.'); - reject(error); - if (request.body && request.body instanceof Stream.Readable) { - request.body.destroy(error); - } - if (!response || !response.body) return; - response.body.emit('error', error); - }; + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === 'braces') { + brace.comma = true; + output = '|'; + } - if (signal && signal.aborted) { - abort(); - return; - } + push({ type: 'comma', value, output }); + continue; + } - const abortAndFinalize = function abortAndFinalize() { - abort(); - finalize(); - }; + /** + * Slashes + */ - // send request - const req = send(options); - let reqTimeout; + if (value === '/') { + // if the beginning of the glob is "./", advance the start + // to the current index, and don't add the "./" characters + // to the state. This greatly simplifies lookbehinds when + // checking for BOS characters like "!" and "." (not "./") + if (prev.type === 'dot' && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ''; + state.output = ''; + tokens.pop(); + prev = bos; // reset "prev" to the first token + continue; + } - if (signal) { - signal.addEventListener('abort', abortAndFinalize); - } + push({ type: 'slash', value, output: SLASH_LITERAL }); + continue; + } - function finalize() { - req.abort(); - if (signal) signal.removeEventListener('abort', abortAndFinalize); - clearTimeout(reqTimeout); - } + /** + * Dots + */ - if (request.timeout) { - req.once('socket', function (socket) { - reqTimeout = setTimeout(function () { - reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); - finalize(); - }, request.timeout); - }); - } + if (value === '.') { + if (state.braces > 0 && prev.type === 'dot') { + if (prev.value === '.') prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = 'dots'; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; + } - req.on('error', function (err) { - reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); - finalize(); - }); + if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { + push({ type: 'text', value, output: DOT_LITERAL }); + continue; + } - req.on('response', function (res) { - clearTimeout(reqTimeout); + push({ type: 'dot', value, output: DOT_LITERAL }); + continue; + } - const headers = createHeadersLenient(res.headers); + /** + * Question marks + */ - // HTTP fetch step 5 - if (fetch.isRedirect(res.statusCode)) { - // HTTP fetch step 5.2 - const location = headers.get('Location'); + if (value === '?') { + const isGroup = prev && prev.value === '('; + if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('qmark', value); + continue; + } - // HTTP fetch step 5.3 - let locationURL = null; - try { - locationURL = location === null ? null : new URL$1(location, request.url).toString(); - } catch (err) { - // error here can only be invalid URL in Location: header - // do not throw when options.redirect == manual - // let the user extract the errorneous redirect URL - if (request.redirect !== 'manual') { - reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); - finalize(); - return; - } - } + if (prev && prev.type === 'paren') { + const next = peek(); + let output = value; - // HTTP fetch step 5.5 - switch (request.redirect) { - case 'error': - reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); - finalize(); - return; - case 'manual': - // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. - if (locationURL !== null) { - // handle corrupted header - try { - headers.set('Location', locationURL); - } catch (err) { - // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request - reject(err); - } - } - break; - case 'follow': - // HTTP-redirect fetch step 2 - if (locationURL === null) { - break; - } + if (next === '<' && !utils.supportsLookbehinds()) { + throw new Error('Node.js v10 or higher is required for regex lookbehinds'); + } - // HTTP-redirect fetch step 5 - if (request.counter >= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } + if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { + output = `\\${value}`; + } - // HTTP-redirect fetch step 6 (counter increment) - // Create a new Request object. - const requestOpts = { - headers: new Headers(request.headers), - follow: request.follow, - counter: request.counter + 1, - agent: request.agent, - compress: request.compress, - method: request.method, - body: request.body, - signal: request.signal, - timeout: request.timeout, - size: request.size - }; - - if (!isDomainOrSubdomain(request.url, locationURL)) { - for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { - requestOpts.headers.delete(name); - } - } + push({ type: 'text', value, output }); + continue; + } - // HTTP-redirect fetch step 9 - if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { - reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); - finalize(); - return; - } + if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { + push({ type: 'qmark', value, output: QMARK_NO_DOT }); + continue; + } - // HTTP-redirect fetch step 11 - if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { - requestOpts.method = 'GET'; - requestOpts.body = undefined; - requestOpts.headers.delete('content-length'); - } + push({ type: 'qmark', value, output: QMARK }); + continue; + } - // HTTP-redirect fetch step 15 - resolve(fetch(new Request(locationURL, requestOpts))); - finalize(); - return; - } - } + /** + * Exclamation + */ - // prepare response - res.once('end', function () { - if (signal) signal.removeEventListener('abort', abortAndFinalize); - }); - let body = res.pipe(new PassThrough$1()); - - const response_options = { - url: request.url, - status: res.statusCode, - statusText: res.statusMessage, - headers: headers, - size: request.size, - timeout: request.timeout, - counter: request.counter - }; + if (value === '!') { + if (opts.noextglob !== true && peek() === '(') { + if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { + extglobOpen('negate', value); + continue; + } + } - // HTTP-network fetch step 12.1.1.3 - const codings = headers.get('Content-Encoding'); + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } + } - // HTTP-network fetch step 12.1.1.4: handle content codings + /** + * Plus + */ - // in following scenarios we ignore compression support - // 1. compression support is disabled - // 2. HEAD request - // 3. no Content-Encoding header - // 4. no content response (204) - // 5. content not modified response (304) - if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { - response = new Response(body, response_options); - resolve(response); - return; - } + if (value === '+') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('plus', value); + continue; + } - // For Node v6+ - // Be less strict when decoding compressed responses, since sometimes - // servers send slightly invalid responses that are still accepted - // by common browsers. - // Always using Z_SYNC_FLUSH is what cURL does. - const zlibOptions = { - flush: zlib.Z_SYNC_FLUSH, - finishFlush: zlib.Z_SYNC_FLUSH - }; + if ((prev && prev.value === '(') || opts.regex === false) { + push({ type: 'plus', value, output: PLUS_LITERAL }); + continue; + } - // for gzip - if (codings == 'gzip' || codings == 'x-gzip') { - body = body.pipe(zlib.createGunzip(zlibOptions)); - response = new Response(body, response_options); - resolve(response); - return; - } + if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { + push({ type: 'plus', value }); + continue; + } - // for deflate - if (codings == 'deflate' || codings == 'x-deflate') { - // handle the infamous raw deflate response from old servers - // a hack for old IIS and Apache servers - const raw = res.pipe(new PassThrough$1()); - raw.once('data', function (chunk) { - // see http://stackoverflow.com/questions/37519828 - if ((chunk[0] & 0x0F) === 0x08) { - body = body.pipe(zlib.createInflate()); - } else { - body = body.pipe(zlib.createInflateRaw()); - } - response = new Response(body, response_options); - resolve(response); - }); - return; - } + push({ type: 'plus', value: PLUS_LITERAL }); + continue; + } - // for br - if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { - body = body.pipe(zlib.createBrotliDecompress()); - response = new Response(body, response_options); - resolve(response); - return; - } + /** + * Plain text + */ - // otherwise, use response as-is - response = new Response(body, response_options); - resolve(response); - }); + if (value === '@') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + push({ type: 'at', extglob: true, value, output: '' }); + continue; + } - writeToStream(req, request); - }); -} -/** - * Redirect code matching - * - * @param Number code Status code - * @return Boolean - */ -fetch.isRedirect = function (code) { - return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; -}; + push({ type: 'text', value }); + continue; + } -// expose Promise -fetch.Promise = global.Promise; + /** + * Plain text + */ -module.exports = exports = fetch; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports["default"] = exports; -exports.Headers = Headers; -exports.Request = Request; -exports.Response = Response; -exports.FetchError = FetchError; + if (value !== '*') { + if (value === '$' || value === '^') { + value = `\\${value}`; + } + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } -/***/ }), + push({ type: 'text', value }); + continue; + } -/***/ 7952: -/***/ ((module) => { + /** + * Stars + */ -"use strict"; + if (prev && (prev.type === 'globstar' || prev.star === true)) { + prev.type = 'star'; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen('star', value); + continue; + } -// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs -const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain'; -const DATA_URL_DEFAULT_CHARSET = 'us-ascii'; + if (prev.type === 'star') { + if (opts.noglobstar === true) { + consume(value); + continue; + } -const testParameter = (name, filters) => { - return filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name); -}; + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === 'slash' || prior.type === 'bos'; + const afterStar = before && (before.type === 'star' || before.type === 'globstar'); -const normalizeDataURL = (urlString, {stripHash}) => { - const match = /^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(urlString); + if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { + push({ type: 'star', value, output: '' }); + continue; + } - if (!match) { - throw new Error(`Invalid URL: ${urlString}`); - } + const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); + const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); + if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { + push({ type: 'star', value, output: '' }); + continue; + } - let {type, data, hash} = match.groups; - const mediaType = type.split(';'); - hash = stripHash ? '' : hash; + // strip consecutive `/**/` + while (rest.slice(0, 3) === '/**') { + const after = input[state.index + 4]; + if (after && after !== '/') { + break; + } + rest = rest.slice(3); + consume('/**', 3); + } - let isBase64 = false; - if (mediaType[mediaType.length - 1] === 'base64') { - mediaType.pop(); - isBase64 = true; - } + if (prior.type === 'bos' && eos()) { + prev.type = 'globstar'; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } - // Lowercase MIME type - const mimeType = (mediaType.shift() || '').toLowerCase(); - const attributes = mediaType - .map(attribute => { - let [key, value = ''] = attribute.split('=').map(string => string.trim()); + if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; - // Lowercase `charset` - if (key === 'charset') { - value = value.toLowerCase(); + prev.type = 'globstar'; + prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } - if (value === DATA_URL_DEFAULT_CHARSET) { - return ''; - } - } + if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { + const end = rest[1] !== void 0 ? '|$' : ''; - return `${key}${value ? `=${value}` : ''}`; - }) - .filter(Boolean); + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; - const normalizedMediaType = [ - ...attributes - ]; + prev.type = 'globstar'; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; - if (isBase64) { - normalizedMediaType.push('base64'); - } + state.output += prior.output + prev.output; + state.globstar = true; - if (normalizedMediaType.length !== 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) { - normalizedMediaType.unshift(mimeType); - } + consume(value + advance()); - return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`; -}; + push({ type: 'slash', value: '/', output: '' }); + continue; + } -const normalizeUrl = (urlString, options) => { - options = { - defaultProtocol: 'http:', - normalizeProtocol: true, - forceHttp: false, - forceHttps: false, - stripAuthentication: true, - stripHash: false, - stripTextFragment: true, - stripWWW: true, - removeQueryParameters: [/^utm_\w+/i], - removeTrailingSlash: true, - removeSingleSlash: true, - removeDirectoryIndex: false, - sortQueryParameters: true, - ...options - }; + if (prior.type === 'bos' && rest[0] === '/') { + prev.type = 'globstar'; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: 'slash', value: '/', output: '' }); + continue; + } - urlString = urlString.trim(); + // remove single star from output + state.output = state.output.slice(0, -prev.output.length); - // Data URL - if (/^data:/i.test(urlString)) { - return normalizeDataURL(urlString, options); - } + // reset previous token to globstar + prev.type = 'globstar'; + prev.output = globstar(opts); + prev.value += value; - if (/^view-source:/i.test(urlString)) { - throw new Error('`view-source:` is not supported as it is a non-standard protocol'); - } + // reset output with globstar + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } - const hasRelativeProtocol = urlString.startsWith('//'); - const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString); + const token = { type: 'star', value, output: star }; - // Prepend protocol - if (!isRelativeUrl) { - urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol); - } + if (opts.bash === true) { + token.output = '.*?'; + if (prev.type === 'bos' || prev.type === 'slash') { + token.output = nodot + token.output; + } + push(token); + continue; + } - const urlObj = new URL(urlString); + if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { + token.output = value; + push(token); + continue; + } - if (options.forceHttp && options.forceHttps) { - throw new Error('The `forceHttp` and `forceHttps` options cannot be used together'); - } + if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { + if (prev.type === 'dot') { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; - if (options.forceHttp && urlObj.protocol === 'https:') { - urlObj.protocol = 'http:'; - } + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; - if (options.forceHttps && urlObj.protocol === 'http:') { - urlObj.protocol = 'https:'; - } + } else { + state.output += nodot; + prev.output += nodot; + } - // Remove auth - if (options.stripAuthentication) { - urlObj.username = ''; - urlObj.password = ''; - } + if (peek() !== '*') { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } - // Remove hash - if (options.stripHash) { - urlObj.hash = ''; - } else if (options.stripTextFragment) { - urlObj.hash = urlObj.hash.replace(/#?:~:text.*?$/i, ''); - } + push(token); + } - // Remove duplicate slashes if not preceded by a protocol - if (urlObj.pathname) { - urlObj.pathname = urlObj.pathname.replace(/(? 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); + state.output = utils.escapeLast(state.output, '['); + decrement('brackets'); + } - // Decode URI octets - if (urlObj.pathname) { - try { - urlObj.pathname = decodeURI(urlObj.pathname); - } catch (_) {} - } + while (state.parens > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); + state.output = utils.escapeLast(state.output, '('); + decrement('parens'); + } - // Remove directory index - if (options.removeDirectoryIndex === true) { - options.removeDirectoryIndex = [/^index\.[a-z]+$/]; - } + while (state.braces > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); + state.output = utils.escapeLast(state.output, '{'); + decrement('braces'); + } - if (Array.isArray(options.removeDirectoryIndex) && options.removeDirectoryIndex.length > 0) { - let pathComponents = urlObj.pathname.split('/'); - const lastComponent = pathComponents[pathComponents.length - 1]; + if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { + push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); + } - if (testParameter(lastComponent, options.removeDirectoryIndex)) { - pathComponents = pathComponents.slice(0, pathComponents.length - 1); - urlObj.pathname = pathComponents.slice(1).join('/') + '/'; - } - } - - if (urlObj.hostname) { - // Remove trailing dot - urlObj.hostname = urlObj.hostname.replace(/\.$/, ''); - - // Remove `www.` - if (options.stripWWW && /^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(urlObj.hostname)) { - // Each label should be max 63 at length (min: 1). - // Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names - // Each TLD should be up to 63 characters long (min: 2). - // It is technically possible to have a single character TLD, but none currently exist. - urlObj.hostname = urlObj.hostname.replace(/^www\./, ''); - } - } - - // Remove query unwanted parameters - if (Array.isArray(options.removeQueryParameters)) { - for (const key of [...urlObj.searchParams.keys()]) { - if (testParameter(key, options.removeQueryParameters)) { - urlObj.searchParams.delete(key); - } - } - } - - if (options.removeQueryParameters === true) { - urlObj.search = ''; - } - - // Sort query parameters - if (options.sortQueryParameters) { - urlObj.searchParams.sort(); - } - - if (options.removeTrailingSlash) { - urlObj.pathname = urlObj.pathname.replace(/\/$/, ''); - } - - const oldUrlString = urlString; - - // Take advantage of many of the Node `url` normalizations - urlString = urlObj.toString(); + // rebuild the output if we had to backtrack at any point + if (state.backtrack === true) { + state.output = ''; - if (!options.removeSingleSlash && urlObj.pathname === '/' && !oldUrlString.endsWith('/') && urlObj.hash === '') { - urlString = urlString.replace(/\/$/, ''); - } + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; - // Remove ending `/` unless removeSingleSlash is false - if ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '' && options.removeSingleSlash) { - urlString = urlString.replace(/\/$/, ''); - } + if (token.suffix) { + state.output += token.suffix; + } + } + } - // Restore relative protocol, if applicable - if (hasRelativeProtocol && !options.normalizeProtocol) { - urlString = urlString.replace(/^http:\/\//, '//'); - } + return state; +}; - // Remove http/https - if (options.stripProtocol) { - urlString = urlString.replace(/^(?:https?:)?\/\//, ''); - } +/** + * Fast paths for creating regular expressions for common glob patterns. + * This can significantly speed up processing and has very little downside + * impact when none of the fast paths match. + */ - return urlString; -}; +parse.fastpaths = (input, options) => { + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } -module.exports = normalizeUrl; + input = REPLACEMENTS[input] || input; + const win32 = utils.isWindows(options); + // create constants based on platform, for windows or posix + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); -/***/ }), + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? '' : '?:'; + const state = { negated: false, prefix: '' }; + let star = opts.bash === true ? '.*?' : STAR; -/***/ 1223: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (opts.capture) { + star = `(${star})`; + } -var wrappy = __nccwpck_require__(2940) -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) + const globstar = opts => { + if (opts.noglobstar === true) return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) + const create = str => { + switch (str) { + case '*': + return `${nodot}${ONE_CHAR}${star}`; - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) + case '.*': + return `${DOT_LITERAL}${ONE_CHAR}${star}`; -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) - } - f.called = false - return f -} + case '*.*': + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) - } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f -} + case '*/*': + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; + case '**': + return nodot + globstar(opts); -/***/ }), + case '**/*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; -/***/ 9072: -/***/ ((module) => { + case '**/*.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; -"use strict"; + case '**/.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; + default: { + const match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) return; -class CancelError extends Error { - constructor(reason) { - super(reason || 'Promise was canceled'); - this.name = 'CancelError'; - } + const source = create(match[1]); + if (!source) return; - get isCanceled() { - return true; - } -} + return source + DOT_LITERAL + match[2]; + } + } + }; -class PCancelable { - static fn(userFn) { - return (...arguments_) => { - return new PCancelable((resolve, reject, onCancel) => { - arguments_.push(onCancel); - // eslint-disable-next-line promise/prefer-await-to-then - userFn(...arguments_).then(resolve, reject); - }); - }; - } + const output = utils.removePrefix(input, state); + let source = create(output); - constructor(executor) { - this._cancelHandlers = []; - this._isPending = true; - this._isCanceled = false; - this._rejectOnCancel = true; + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; + } - this._promise = new Promise((resolve, reject) => { - this._reject = reject; + return source; +}; - const onResolve = value => { - if (!this._isCanceled || !onCancel.shouldReject) { - this._isPending = false; - resolve(value); - } - }; +module.exports = parse; - const onReject = error => { - this._isPending = false; - reject(error); - }; - const onCancel = handler => { - if (!this._isPending) { - throw new Error('The `onCancel` handler was attached after the promise settled.'); - } +/***/ }), - this._cancelHandlers.push(handler); - }; +/***/ 555: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - Object.defineProperties(onCancel, { - shouldReject: { - get: () => this._rejectOnCancel, - set: boolean => { - this._rejectOnCancel = boolean; - } - } - }); +"use strict"; - return executor(onResolve, onReject, onCancel); - }); - } - then(onFulfilled, onRejected) { - // eslint-disable-next-line promise/prefer-await-to-then - return this._promise.then(onFulfilled, onRejected); - } +const path = __nccwpck_require__(1017); +const scan = __nccwpck_require__(7751); +const parse = __nccwpck_require__(5961); +const utils = __nccwpck_require__(7426); +const constants = __nccwpck_require__(6476); +const isObject = val => val && typeof val === 'object' && !Array.isArray(val); - catch(onRejected) { - return this._promise.catch(onRejected); - } +/** + * Creates a matcher function from one or more glob patterns. The + * returned function takes a string to match as its first argument, + * and returns true if the string is a match. The returned matcher + * function also takes a boolean as the second argument that, when true, + * returns an object with additional information. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch(glob[, options]); + * + * const isMatch = picomatch('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @name picomatch + * @param {String|Array} `globs` One or more glob patterns. + * @param {Object=} `options` + * @return {Function=} Returns a matcher function. + * @api public + */ - finally(onFinally) { - return this._promise.finally(onFinally); - } +const picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map(input => picomatch(input, options, returnState)); + const arrayMatcher = str => { + for (const isMatch of fns) { + const state = isMatch(str); + if (state) return state; + } + return false; + }; + return arrayMatcher; + } - cancel(reason) { - if (!this._isPending || this._isCanceled) { - return; - } + const isState = isObject(glob) && glob.tokens && glob.input; - this._isCanceled = true; + if (glob === '' || (typeof glob !== 'string' && !isState)) { + throw new TypeError('Expected pattern to be a non-empty string'); + } - if (this._cancelHandlers.length > 0) { - try { - for (const handler of this._cancelHandlers) { - handler(); - } - } catch (error) { - this._reject(error); - return; - } - } + const opts = options || {}; + const posix = utils.isWindows(options); + const regex = isState + ? picomatch.compileRe(glob, options) + : picomatch.makeRe(glob, options, false, true); - if (this._rejectOnCancel) { - this._reject(new CancelError(reason)); - } - } + const state = regex.state; + delete regex.state; - get isCanceled() { - return this._isCanceled; - } -} + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); + } -Object.setPrototypeOf(PCancelable.prototype, Promise.prototype); + const matcher = (input, returnObject = false) => { + const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + const result = { glob, state, regex, posix, input, output, match, isMatch }; -module.exports = PCancelable; -module.exports.CancelError = CancelError; + if (typeof opts.onResult === 'function') { + opts.onResult(result); + } + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } -/***/ }), + if (isIgnored(input)) { + if (typeof opts.onIgnore === 'function') { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; + } -/***/ 8569: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (typeof opts.onMatch === 'function') { + opts.onMatch(result); + } + return returnObject ? result : true; + }; -"use strict"; + if (returnState) { + matcher.state = state; + } + return matcher; +}; -module.exports = __nccwpck_require__(3322); +/** + * Test `input` with the given `regex`. This is used by the main + * `picomatch()` function to test the input string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.test(input, regex[, options]); + * + * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); + * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } + * ``` + * @param {String} `input` String to test. + * @param {RegExp} `regex` + * @return {Object} Returns an object with matching info. + * @api public + */ +picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected input to be a string'); + } -/***/ }), + if (input === '') { + return { isMatch: false, output: '' }; + } -/***/ 6099: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const opts = options || {}; + const format = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = (match && format) ? format(input) : input; -"use strict"; + if (match === false) { + output = format ? format(input) : input; + match = output === glob; + } + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } + } -const path = __nccwpck_require__(1017); -const WIN_SLASH = '\\\\/'; -const WIN_NO_SLASH = `[^${WIN_SLASH}]`; + return { isMatch: Boolean(match), match, output }; +}; /** - * Posix glob regex + * Match the basename of a filepath. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.matchBase(input, glob[, options]); + * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true + * ``` + * @param {String} `input` String to test. + * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). + * @return {Boolean} + * @api public */ -const DOT_LITERAL = '\\.'; -const PLUS_LITERAL = '\\+'; -const QMARK_LITERAL = '\\?'; -const SLASH_LITERAL = '\\/'; -const ONE_CHAR = '(?=.)'; -const QMARK = '[^/]'; -const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; -const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; -const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; -const NO_DOT = `(?!${DOT_LITERAL})`; -const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; -const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; -const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; -const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; -const STAR = `${QMARK}*?`; - -const POSIX_CHARS = { - DOT_LITERAL, - PLUS_LITERAL, - QMARK_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - QMARK, - END_ANCHOR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK_NO_DOT, - STAR, - START_ANCHOR +picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(path.basename(input)); }; /** - * Windows glob regex + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.isMatch(string, patterns[, options]); + * + * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String|Array} str The string to test. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} [options] See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public */ -const WINDOWS_CHARS = { - ...POSIX_CHARS, - - SLASH_LITERAL: `[${WIN_SLASH}]`, - QMARK: WIN_NO_SLASH, - STAR: `${WIN_NO_SLASH}*?`, - DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, - NO_DOT: `(?!${DOT_LITERAL})`, - NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, - NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, - NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, - QMARK_NO_DOT: `[^.${WIN_SLASH}]`, - START_ANCHOR: `(?:^|[${WIN_SLASH}])`, - END_ANCHOR: `(?:[${WIN_SLASH}]|$)` -}; +picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); /** - * POSIX Bracket Regex + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const picomatch = require('picomatch'); + * const result = picomatch.parse(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as a regex source string. + * @api public */ -const POSIX_REGEX_SOURCE = { - alnum: 'a-zA-Z0-9', - alpha: 'a-zA-Z', - ascii: '\\x00-\\x7F', - blank: ' \\t', - cntrl: '\\x00-\\x1F\\x7F', - digit: '0-9', - graph: '\\x21-\\x7E', - lower: 'a-z', - print: '\\x20-\\x7E ', - punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', - space: ' \\t\\r\\n\\v\\f', - upper: 'A-Z', - word: 'A-Za-z0-9_', - xdigit: 'A-Fa-f0-9' +picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); + return parse(pattern, { ...options, fastpaths: false }); }; -module.exports = { - MAX_LENGTH: 1024 * 64, - POSIX_REGEX_SOURCE, - - // regular expressions - REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, - REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, - REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, - REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, - REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, - REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, - - // Replace globs with equivalent patterns to reduce parsing time. - REPLACEMENTS: { - '***': '*', - '**/**': '**', - '**/**/**': '**' - }, - - // Digits - CHAR_0: 48, /* 0 */ - CHAR_9: 57, /* 9 */ - - // Alphabet chars. - CHAR_UPPERCASE_A: 65, /* A */ - CHAR_LOWERCASE_A: 97, /* a */ - CHAR_UPPERCASE_Z: 90, /* Z */ - CHAR_LOWERCASE_Z: 122, /* z */ - - CHAR_LEFT_PARENTHESES: 40, /* ( */ - CHAR_RIGHT_PARENTHESES: 41, /* ) */ - - CHAR_ASTERISK: 42, /* * */ - - // Non-alphabetic chars. - CHAR_AMPERSAND: 38, /* & */ - CHAR_AT: 64, /* @ */ - CHAR_BACKWARD_SLASH: 92, /* \ */ - CHAR_CARRIAGE_RETURN: 13, /* \r */ - CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ - CHAR_COLON: 58, /* : */ - CHAR_COMMA: 44, /* , */ - CHAR_DOT: 46, /* . */ - CHAR_DOUBLE_QUOTE: 34, /* " */ - CHAR_EQUAL: 61, /* = */ - CHAR_EXCLAMATION_MARK: 33, /* ! */ - CHAR_FORM_FEED: 12, /* \f */ - CHAR_FORWARD_SLASH: 47, /* / */ - CHAR_GRAVE_ACCENT: 96, /* ` */ - CHAR_HASH: 35, /* # */ - CHAR_HYPHEN_MINUS: 45, /* - */ - CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ - CHAR_LEFT_CURLY_BRACE: 123, /* { */ - CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ - CHAR_LINE_FEED: 10, /* \n */ - CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ - CHAR_PERCENT: 37, /* % */ - CHAR_PLUS: 43, /* + */ - CHAR_QUESTION_MARK: 63, /* ? */ - CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ - CHAR_RIGHT_CURLY_BRACE: 125, /* } */ - CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ - CHAR_SEMICOLON: 59, /* ; */ - CHAR_SINGLE_QUOTE: 39, /* ' */ - CHAR_SPACE: 32, /* */ - CHAR_TAB: 9, /* \t */ - CHAR_UNDERSCORE: 95, /* _ */ - CHAR_VERTICAL_LINE: 124, /* | */ - CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ - - SEP: path.sep, - - /** - * Create EXTGLOB_CHARS - */ +/** + * Scan a glob pattern to separate the pattern into segments. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.scan(input[, options]); + * + * const result = picomatch.scan('!./foo/*.js'); + * console.log(result); + * { prefix: '!./', + * input: '!./foo/*.js', + * start: 3, + * base: 'foo', + * glob: '*.js', + * isBrace: false, + * isBracket: false, + * isGlob: true, + * isExtglob: false, + * isGlobstar: false, + * negated: true } + * ``` + * @param {String} `input` Glob pattern to scan. + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ - extglobChars(chars) { - return { - '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, - '?': { type: 'qmark', open: '(?:', close: ')?' }, - '+': { type: 'plus', open: '(?:', close: ')+' }, - '*': { type: 'star', open: '(?:', close: ')*' }, - '@': { type: 'at', open: '(?:', close: ')' } - }; - }, +picomatch.scan = (input, options) => scan(input, options); - /** - * Create GLOB_CHARS - */ +/** + * Compile a regular expression from the `state` object returned by the + * [parse()](#parse) method. + * + * @param {Object} `state` + * @param {Object} `options` + * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. + * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. + * @return {RegExp} + * @api public + */ - globChars(win32) { - return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; +picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return state.output; } -}; - - -/***/ }), -/***/ 2139: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const opts = options || {}; + const prepend = opts.contains ? '' : '^'; + const append = opts.contains ? '' : '$'; -"use strict"; + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*$`; + } + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; + } -const constants = __nccwpck_require__(6099); -const utils = __nccwpck_require__(479); + return regex; +}; /** - * Constants + * Create a regular expression from a parsed glob pattern. + * + * ```js + * const picomatch = require('picomatch'); + * const state = picomatch.parse('*.js'); + * // picomatch.compileRe(state[, options]); + * + * console.log(picomatch.compileRe(state)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `state` The object returned from the `.parse` method. + * @param {Object} `options` + * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. + * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. + * @return {RegExp} Returns a regex created from the given pattern. + * @api public */ -const { - MAX_LENGTH, - POSIX_REGEX_SOURCE, - REGEX_NON_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_BACKREF, - REPLACEMENTS -} = constants; +picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { + if (!input || typeof input !== 'string') { + throw new TypeError('Expected a non-empty string'); + } -/** - * Helpers - */ + let parsed = { negated: false, fastpaths: true }; -const expandRange = (args, options) => { - if (typeof options.expandRange === 'function') { - return options.expandRange(...args, options); + if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { + parsed.output = parse.fastpaths(input, options); } - args.sort(); - const value = `[${args.join('-')}]`; - - try { - /* eslint-disable-next-line no-new */ - new RegExp(value); - } catch (ex) { - return args.map(v => utils.escapeRegex(v)).join('..'); + if (!parsed.output) { + parsed = parse(input, options); } - return value; + return picomatch.compileRe(parsed, options, returnOutput, returnState); }; /** - * Create the message for a syntax error + * Create a regular expression from the given regex source string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.toRegex(source[, options]); + * + * const { output } = picomatch.parse('*.js'); + * console.log(picomatch.toRegex(output)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `source` Regular expression source string. + * @param {Object} `options` + * @return {RegExp} + * @api public */ -const syntaxError = (type, char) => { - return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; +picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); + } catch (err) { + if (options && options.debug === true) throw err; + return /$^/; + } }; /** - * Parse the given input string. - * @param {String} input - * @param {Object} options + * Picomatch constants. * @return {Object} */ -const parse = (input, options) => { - if (typeof input !== 'string') { - throw new TypeError('Expected a string'); - } - - input = REPLACEMENTS[input] || input; +picomatch.constants = constants; - const opts = { ...options }; - const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; +/** + * Expose "picomatch" + */ - let len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } +module.exports = picomatch; - const bos = { type: 'bos', value: '', output: opts.prepend || '' }; - const tokens = [bos]; - const capture = opts.capture ? '' : '?:'; - const win32 = utils.isWindows(options); +/***/ }), - // create constants based on platform, for windows or posix - const PLATFORM_CHARS = constants.globChars(win32); - const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); +/***/ 7751: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - const { - DOT_LITERAL, - PLUS_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK, - QMARK_NO_DOT, - STAR, - START_ANCHOR - } = PLATFORM_CHARS; +"use strict"; - const globstar = opts => { - return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; - const nodot = opts.dot ? '' : NO_DOT; - const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; - let star = opts.bash === true ? globstar(opts) : STAR; +const utils = __nccwpck_require__(7426); +const { + CHAR_ASTERISK, /* * */ + CHAR_AT, /* @ */ + CHAR_BACKWARD_SLASH, /* \ */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_EXCLAMATION_MARK, /* ! */ + CHAR_FORWARD_SLASH, /* / */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_PLUS, /* + */ + CHAR_QUESTION_MARK, /* ? */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_RIGHT_SQUARE_BRACKET /* ] */ +} = __nccwpck_require__(6476); - if (opts.capture) { - star = `(${star})`; - } +const isPathSeparator = code => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +}; - // minimatch options support - if (typeof opts.noext === 'boolean') { - opts.noextglob = opts.noext; +const depth = token => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; } +}; - const state = { - input, - index: -1, - start: 0, - dot: opts.dot === true, - consumed: '', - output: '', - prefix: '', - backtrack: false, - negated: false, - brackets: 0, - braces: 0, - parens: 0, - quotes: 0, - globstar: false, - tokens - }; - - input = utils.removePrefix(input, state); - len = input.length; +/** + * Quickly scans a glob pattern and returns an object with a handful of + * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), + * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not + * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). + * + * ```js + * const pm = require('picomatch'); + * console.log(pm.scan('foo/bar/*.js')); + * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {Object} Returns an object with tokens and regex source string. + * @api public + */ - const extglobs = []; - const braces = []; - const stack = []; - let prev = bos; - let value; +const scan = (input, options) => { + const opts = options || {}; - /** - * Tokenizing helpers - */ + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; - const eos = () => state.index === len - 1; - const peek = state.peek = (n = 1) => input[state.index + n]; - const advance = state.advance = () => input[++state.index] || ''; - const remaining = () => input.slice(state.index + 1); - const consume = (value = '', num = 0) => { - state.consumed += value; - state.index += num; - }; + let str = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let negatedExtglob = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { value: '', depth: 0, isGlob: false }; - const append = token => { - state.output += token.output != null ? token.output : token.value; - consume(token.value); + const eos = () => index >= length; + const peek = () => str.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str.charCodeAt(++index); }; - const negate = () => { - let count = 1; + while (index < length) { + code = advance(); + let next; - while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { - advance(); - state.start++; - count++; - } + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); - if (count % 2 === 0) { - return false; + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; } - state.negated = true; - state.start++; - return true; - }; + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; - const increment = type => { - state[type]++; - stack.push(type); - }; + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } - const decrement = type => { - state[type]--; - stack.pop(); - }; + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } - /** - * Push tokens onto the tokens array. This helper speeds up - * tokenizing by 1) helping us avoid backtracking as much as possible, - * and 2) helping us avoid creating extra tokens when consecutive - * characters are plain text. This improves performance and simplifies - * lookbehinds. - */ + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; - const push = tok => { - if (prev.type === 'globstar') { - const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); - const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); + if (scanToEnd === true) { + continue; + } - if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { - state.output = state.output.slice(0, -prev.output.length); - prev.type = 'star'; - prev.value = '*'; - prev.output = star; - state.output += prev.output; - } - } + break; + } - if (extglobs.length && tok.type !== 'paren') { - extglobs[extglobs.length - 1].inner += tok.value; - } + if (braceEscaped !== true && code === CHAR_COMMA) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; - if (tok.value || tok.output) append(tok); - if (prev && prev.type === 'text' && tok.type === 'text') { - prev.value += tok.value; - prev.output = (prev.output || '') + tok.value; - return; - } + if (scanToEnd === true) { + continue; + } - tok.prev = prev; - tokens.push(tok); - prev = tok; - }; + break; + } - const extglobOpen = (type, value) => { - const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; - token.prev = prev; - token.parens = state.parens; - token.output = state.output; - const output = (opts.capture ? '(' : '') + token.open; + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } - increment('parens'); - push({ type, value, output: state.output ? '' : ONE_CHAR }); - push({ type: 'paren', extglob: true, value: advance(), output }); - extglobs.push(token); - }; - - const extglobClose = token => { - let output = token.close + (opts.capture ? ')' : ''); - let rest; - - if (token.type === 'negate') { - let extglobStar = star; - - if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { - extglobStar = globstar(opts); + if (scanToEnd === true) { + continue; } - if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { - output = token.close = `)$))${extglobStar}`; - } + break; + } - if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { - // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis. - // In this case, we need to parse the string and use it in the output of the original pattern. - // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`. - // - // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`. - const expression = parse(rest, { ...options, fastpaths: false }).output; + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { value: '', depth: 0, isGlob: false }; - output = token.close = `)${expression})${extglobStar})`; + if (finished === true) continue; + if (prev === CHAR_DOT && index === (start + 1)) { + start += 2; + continue; } - if (token.prev.type === 'bos') { - state.negatedExtglob = true; - } + lastIndex = index + 1; + continue; } - push({ type: 'paren', extglob: true, value, output }); - decrement('parens'); - }; - - /** - * Fast paths - */ - - if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { - let backslashes = false; - - let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { - if (first === '\\') { - backslashes = true; - return m; - } + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS + || code === CHAR_AT + || code === CHAR_ASTERISK + || code === CHAR_QUESTION_MARK + || code === CHAR_EXCLAMATION_MARK; - if (first === '?') { - if (esc) { - return esc + first + (rest ? QMARK.repeat(rest.length) : ''); - } - if (index === 0) { - return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; } - return QMARK.repeat(chars.length); - } - if (first === '.') { - return DOT_LITERAL.repeat(chars.length); - } + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } - if (first === '*') { - if (esc) { - return esc + first + (rest ? star : ''); + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; } - return star; - } - return esc ? m : `\\${m}`; - }); - - if (backslashes === true) { - if (opts.unescape === true) { - output = output.replace(/\\/g, ''); - } else { - output = output.replace(/\\+/g, m => { - return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); - }); + break; } } - if (output === input && opts.contains === true) { - state.output = input; - return state; - } - - state.output = utils.wrapOutput(output, state, options); - return state; - } - - /** - * Tokenize input until we reach end-of-string - */ - - while (!eos()) { - value = advance(); - - if (value === '\u0000') { - continue; - } - - /** - * Escaped characters - */ - - if (value === '\\') { - const next = peek(); + if (code === CHAR_ASTERISK) { + if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; - if (next === '/' && opts.bash !== true) { + if (scanToEnd === true) { continue; } + break; + } - if (next === '.' || next === ';') { - continue; - } + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; - if (!next) { - value += '\\'; - push({ type: 'text', value }); + if (scanToEnd === true) { continue; } + break; + } - // collapse slashes to reduce potential for exploits - const match = /^\\+/.exec(remaining()); - let slashes = 0; - - if (match && match[0].length > 2) { - slashes = match[0].length; - state.index += slashes; - if (slashes % 2 !== 0) { - value += '\\'; + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; } - } - if (opts.unescape === true) { - value = advance(); - } else { - value += advance(); + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + break; + } } - if (state.brackets === 0) { - push({ type: 'text', value }); + if (scanToEnd === true) { continue; } + + break; } - /** - * If we're inside a regex character class, continue - * until we reach the closing bracket. - */ + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } - if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { - if (opts.posix !== false && value === ':') { - const inner = prev.value.slice(1); - if (inner.includes('[')) { - prev.posix = true; + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; - if (inner.includes(':')) { - const idx = prev.value.lastIndexOf('['); - const pre = prev.value.slice(0, idx); - const rest = prev.value.slice(idx + 2); - const posix = POSIX_REGEX_SOURCE[rest]; - if (posix) { - prev.value = pre + posix; - state.backtrack = true; - advance(); + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } - if (!bos.output && tokens.indexOf(prev) === 1) { - bos.output = ONE_CHAR; - } - continue; - } + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; } } + continue; } + break; + } - if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { - value = `\\${value}`; - } - - if (value === ']' && (prev.value === '[' || prev.value === '[^')) { - value = `\\${value}`; - } + if (isGlob === true) { + finished = true; - if (opts.posix === true && value === '!' && prev.value === '[') { - value = '^'; + if (scanToEnd === true) { + continue; } - prev.value += value; - append({ value }); - continue; + break; } + } - /** - * If we're inside a quoted string, continue - * until we reach the closing double quote. - */ + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } - if (state.quotes === 1 && value !== '"') { - value = utils.escapeRegex(value); - prev.value += value; - append({ value }); - continue; + let base = str; + let prefix = ''; + let glob = ''; + + if (start > 0) { + prefix = str.slice(0, start); + str = str.slice(start); + lastIndex -= start; + } + + if (base && isGlob === true && lastIndex > 0) { + base = str.slice(0, lastIndex); + glob = str.slice(lastIndex); + } else if (isGlob === true) { + base = ''; + glob = str; + } else { + base = str; + } + + if (base && base !== '' && base !== '/' && base !== str) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); } + } - /** - * Double quotes - */ + if (opts.unescape === true) { + if (glob) glob = utils.removeBackslashes(glob); - if (value === '"') { - state.quotes = state.quotes === 1 ? 0 : 1; - if (opts.keepQuotes === true) { - push({ type: 'text', value }); - } - continue; + if (base && backslashes === true) { + base = utils.removeBackslashes(base); } + } - /** - * Parentheses - */ + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated, + negatedExtglob + }; - if (value === '(') { - increment('parens'); - push({ type: 'paren', value }); - continue; + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); } + state.tokens = tokens; + } - if (value === ')') { - if (state.parens === 0 && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError('opening', '(')); - } + if (opts.parts === true || opts.tokens === true) { + let prevIndex; - const extglob = extglobs[extglobs.length - 1]; - if (extglob && state.parens === extglob.parens + 1) { - extglobClose(extglobs.pop()); - continue; + for (let idx = 0; idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== '') { + parts.push(value); } + prevIndex = i; + } - push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); - decrement('parens'); - continue; + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); + + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } } - /** - * Square brackets - */ + state.slashes = slashes; + state.parts = parts; + } - if (value === '[') { - if (opts.nobracket === true || !remaining().includes(']')) { - if (opts.nobracket !== true && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError('closing', ']')); - } + return state; +}; - value = `\\${value}`; - } else { - increment('brackets'); - } +module.exports = scan; - push({ type: 'bracket', value }); - continue; - } - if (value === ']') { - if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { - push({ type: 'text', value, output: `\\${value}` }); - continue; - } +/***/ }), - if (state.brackets === 0) { - if (opts.strictBrackets === true) { - throw new SyntaxError(syntaxError('opening', '[')); - } +/***/ 7426: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - push({ type: 'text', value, output: `\\${value}` }); - continue; - } +"use strict"; - decrement('brackets'); - const prevValue = prev.value.slice(1); - if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { - value = `/${value}`; - } +const path = __nccwpck_require__(1017); +const win32 = process.platform === 'win32'; +const { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL +} = __nccwpck_require__(6476); - prev.value += value; - append({ value }); +exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); +exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); +exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); +exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); - // when literal brackets are explicitly disabled - // assume we should match with a regex character class - if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { - continue; - } +exports.removeBackslashes = str => { + return str.replace(REGEX_REMOVE_BACKSLASH, match => { + return match === '\\' ? '' : match; + }); +}; - const escaped = utils.escapeRegex(prev.value); - state.output = state.output.slice(0, -prev.value.length); +exports.supportsLookbehinds = () => { + const segs = process.version.slice(1).split('.').map(Number); + if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { + return true; + } + return false; +}; - // when literal brackets are explicitly enabled - // assume we should escape the brackets to match literal characters - if (opts.literalBrackets === true) { - state.output += escaped; - prev.value = escaped; - continue; - } +exports.isWindows = options => { + if (options && typeof options.windows === 'boolean') { + return options.windows; + } + return win32 === true || path.sep === '\\'; +}; - // when the user specifies nothing, try to match both - prev.value = `(${capture}${escaped}|${prev.value})`; - state.output += prev.value; - continue; - } +exports.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) return input; + if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; +}; - /** - * Braces - */ +exports.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith('./')) { + output = output.slice(2); + state.prefix = './'; + } + return output; +}; - if (value === '{' && opts.nobrace !== true) { - increment('braces'); +exports.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? '' : '^'; + const append = options.contains ? '' : '$'; - const open = { - type: 'brace', - value, - output: '(', - outputIndex: state.output.length, - tokensIndex: state.tokens.length - }; + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*$)`; + } + return output; +}; - braces.push(open); - push(open); - continue; - } - if (value === '}') { - const brace = braces[braces.length - 1]; +/***/ }), - if (opts.nobrace === true || !brace) { - push({ type: 'text', value, output: value }); - continue; - } +/***/ 2610: +/***/ ((module) => { - let output = ')'; +"use strict"; - if (brace.dots === true) { - const arr = tokens.slice(); - const range = []; - for (let i = arr.length - 1; i >= 0; i--) { - tokens.pop(); - if (arr[i].type === 'brace') { - break; - } - if (arr[i].type !== 'dots') { - range.unshift(arr[i].value); - } - } - - output = expandRange(range, opts); - state.backtrack = true; - } +// We define these manually to ensure they're always copied +// even if they would move up the prototype chain +// https://nodejs.org/api/http.html#http_class_http_incomingmessage +const knownProps = [ + 'destroy', + 'setTimeout', + 'socket', + 'headers', + 'trailers', + 'rawHeaders', + 'statusCode', + 'httpVersion', + 'httpVersionMinor', + 'httpVersionMajor', + 'rawTrailers', + 'statusMessage' +]; - if (brace.comma !== true && brace.dots !== true) { - const out = state.output.slice(0, brace.outputIndex); - const toks = state.tokens.slice(brace.tokensIndex); - brace.value = brace.output = '\\{'; - value = output = '\\}'; - state.output = out; - for (const t of toks) { - state.output += (t.output || t.value); - } - } +module.exports = (fromStream, toStream) => { + const fromProps = new Set(Object.keys(fromStream).concat(knownProps)); - push({ type: 'brace', value, output }); - decrement('braces'); - braces.pop(); - continue; - } + for (const prop of fromProps) { + // Don't overwrite existing properties + if (prop in toStream) { + continue; + } - /** - * Pipes - */ + toStream[prop] = typeof fromStream[prop] === 'function' ? fromStream[prop].bind(fromStream) : fromStream[prop]; + } +}; - if (value === '|') { - if (extglobs.length > 0) { - extglobs[extglobs.length - 1].conditions++; - } - push({ type: 'text', value }); - continue; - } - /** - * Commas - */ +/***/ }), - if (value === ',') { - let output = value; +/***/ 7952: +/***/ ((module) => { - const brace = braces[braces.length - 1]; - if (brace && stack[stack.length - 1] === 'braces') { - brace.comma = true; - output = '|'; - } +"use strict"; - push({ type: 'comma', value, output }); - continue; - } - /** - * Slashes - */ +// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs +const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain'; +const DATA_URL_DEFAULT_CHARSET = 'us-ascii'; - if (value === '/') { - // if the beginning of the glob is "./", advance the start - // to the current index, and don't add the "./" characters - // to the state. This greatly simplifies lookbehinds when - // checking for BOS characters like "!" and "." (not "./") - if (prev.type === 'dot' && state.index === state.start + 1) { - state.start = state.index + 1; - state.consumed = ''; - state.output = ''; - tokens.pop(); - prev = bos; // reset "prev" to the first token - continue; - } +const testParameter = (name, filters) => { + return filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name); +}; - push({ type: 'slash', value, output: SLASH_LITERAL }); - continue; - } +const normalizeDataURL = (urlString, {stripHash}) => { + const match = /^data:(?[^,]*?),(?[^#]*?)(?:#(?.*))?$/.exec(urlString); - /** - * Dots - */ + if (!match) { + throw new Error(`Invalid URL: ${urlString}`); + } - if (value === '.') { - if (state.braces > 0 && prev.type === 'dot') { - if (prev.value === '.') prev.output = DOT_LITERAL; - const brace = braces[braces.length - 1]; - prev.type = 'dots'; - prev.output += value; - prev.value += value; - brace.dots = true; - continue; - } + let {type, data, hash} = match.groups; + const mediaType = type.split(';'); + hash = stripHash ? '' : hash; - if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { - push({ type: 'text', value, output: DOT_LITERAL }); - continue; - } + let isBase64 = false; + if (mediaType[mediaType.length - 1] === 'base64') { + mediaType.pop(); + isBase64 = true; + } - push({ type: 'dot', value, output: DOT_LITERAL }); - continue; - } + // Lowercase MIME type + const mimeType = (mediaType.shift() || '').toLowerCase(); + const attributes = mediaType + .map(attribute => { + let [key, value = ''] = attribute.split('=').map(string => string.trim()); - /** - * Question marks - */ + // Lowercase `charset` + if (key === 'charset') { + value = value.toLowerCase(); - if (value === '?') { - const isGroup = prev && prev.value === '('; - if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { - extglobOpen('qmark', value); - continue; - } + if (value === DATA_URL_DEFAULT_CHARSET) { + return ''; + } + } - if (prev && prev.type === 'paren') { - const next = peek(); - let output = value; + return `${key}${value ? `=${value}` : ''}`; + }) + .filter(Boolean); - if (next === '<' && !utils.supportsLookbehinds()) { - throw new Error('Node.js v10 or higher is required for regex lookbehinds'); - } + const normalizedMediaType = [ + ...attributes + ]; - if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { - output = `\\${value}`; - } + if (isBase64) { + normalizedMediaType.push('base64'); + } - push({ type: 'text', value, output }); - continue; - } + if (normalizedMediaType.length !== 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) { + normalizedMediaType.unshift(mimeType); + } - if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { - push({ type: 'qmark', value, output: QMARK_NO_DOT }); - continue; - } + return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`; +}; - push({ type: 'qmark', value, output: QMARK }); - continue; - } +const normalizeUrl = (urlString, options) => { + options = { + defaultProtocol: 'http:', + normalizeProtocol: true, + forceHttp: false, + forceHttps: false, + stripAuthentication: true, + stripHash: false, + stripTextFragment: true, + stripWWW: true, + removeQueryParameters: [/^utm_\w+/i], + removeTrailingSlash: true, + removeSingleSlash: true, + removeDirectoryIndex: false, + sortQueryParameters: true, + ...options + }; - /** - * Exclamation - */ + urlString = urlString.trim(); - if (value === '!') { - if (opts.noextglob !== true && peek() === '(') { - if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { - extglobOpen('negate', value); - continue; - } - } + // Data URL + if (/^data:/i.test(urlString)) { + return normalizeDataURL(urlString, options); + } - if (opts.nonegate !== true && state.index === 0) { - negate(); - continue; - } - } + if (/^view-source:/i.test(urlString)) { + throw new Error('`view-source:` is not supported as it is a non-standard protocol'); + } - /** - * Plus - */ + const hasRelativeProtocol = urlString.startsWith('//'); + const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString); - if (value === '+') { - if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { - extglobOpen('plus', value); - continue; - } + // Prepend protocol + if (!isRelativeUrl) { + urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol); + } - if ((prev && prev.value === '(') || opts.regex === false) { - push({ type: 'plus', value, output: PLUS_LITERAL }); - continue; - } + const urlObj = new URL(urlString); - if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { - push({ type: 'plus', value }); - continue; - } + if (options.forceHttp && options.forceHttps) { + throw new Error('The `forceHttp` and `forceHttps` options cannot be used together'); + } - push({ type: 'plus', value: PLUS_LITERAL }); - continue; - } + if (options.forceHttp && urlObj.protocol === 'https:') { + urlObj.protocol = 'http:'; + } - /** - * Plain text - */ + if (options.forceHttps && urlObj.protocol === 'http:') { + urlObj.protocol = 'https:'; + } - if (value === '@') { - if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { - push({ type: 'at', extglob: true, value, output: '' }); - continue; - } + // Remove auth + if (options.stripAuthentication) { + urlObj.username = ''; + urlObj.password = ''; + } - push({ type: 'text', value }); - continue; - } + // Remove hash + if (options.stripHash) { + urlObj.hash = ''; + } else if (options.stripTextFragment) { + urlObj.hash = urlObj.hash.replace(/#?:~:text.*?$/i, ''); + } - /** - * Plain text - */ + // Remove duplicate slashes if not preceded by a protocol + if (urlObj.pathname) { + urlObj.pathname = urlObj.pathname.replace(/(? 0) { + let pathComponents = urlObj.pathname.split('/'); + const lastComponent = pathComponents[pathComponents.length - 1]; - /** - * Stars - */ + if (testParameter(lastComponent, options.removeDirectoryIndex)) { + pathComponents = pathComponents.slice(0, pathComponents.length - 1); + urlObj.pathname = pathComponents.slice(1).join('/') + '/'; + } + } - if (prev && (prev.type === 'globstar' || prev.star === true)) { - prev.type = 'star'; - prev.star = true; - prev.value += value; - prev.output = star; - state.backtrack = true; - state.globstar = true; - consume(value); - continue; - } + if (urlObj.hostname) { + // Remove trailing dot + urlObj.hostname = urlObj.hostname.replace(/\.$/, ''); - let rest = remaining(); - if (opts.noextglob !== true && /^\([^?]/.test(rest)) { - extglobOpen('star', value); - continue; - } + // Remove `www.` + if (options.stripWWW && /^www\.(?!www\.)(?:[a-z\-\d]{1,63})\.(?:[a-z.\-\d]{2,63})$/.test(urlObj.hostname)) { + // Each label should be max 63 at length (min: 1). + // Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names + // Each TLD should be up to 63 characters long (min: 2). + // It is technically possible to have a single character TLD, but none currently exist. + urlObj.hostname = urlObj.hostname.replace(/^www\./, ''); + } + } - if (prev.type === 'star') { - if (opts.noglobstar === true) { - consume(value); - continue; - } + // Remove query unwanted parameters + if (Array.isArray(options.removeQueryParameters)) { + for (const key of [...urlObj.searchParams.keys()]) { + if (testParameter(key, options.removeQueryParameters)) { + urlObj.searchParams.delete(key); + } + } + } - const prior = prev.prev; - const before = prior.prev; - const isStart = prior.type === 'slash' || prior.type === 'bos'; - const afterStar = before && (before.type === 'star' || before.type === 'globstar'); + if (options.removeQueryParameters === true) { + urlObj.search = ''; + } - if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { - push({ type: 'star', value, output: '' }); - continue; - } + // Sort query parameters + if (options.sortQueryParameters) { + urlObj.searchParams.sort(); + } - const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); - const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); - if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { - push({ type: 'star', value, output: '' }); - continue; - } + if (options.removeTrailingSlash) { + urlObj.pathname = urlObj.pathname.replace(/\/$/, ''); + } - // strip consecutive `/**/` - while (rest.slice(0, 3) === '/**') { - const after = input[state.index + 4]; - if (after && after !== '/') { - break; - } - rest = rest.slice(3); - consume('/**', 3); - } + const oldUrlString = urlString; - if (prior.type === 'bos' && eos()) { - prev.type = 'globstar'; - prev.value += value; - prev.output = globstar(opts); - state.output = prev.output; - state.globstar = true; - consume(value); - continue; - } + // Take advantage of many of the Node `url` normalizations + urlString = urlObj.toString(); - if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; + if (!options.removeSingleSlash && urlObj.pathname === '/' && !oldUrlString.endsWith('/') && urlObj.hash === '') { + urlString = urlString.replace(/\/$/, ''); + } - prev.type = 'globstar'; - prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); - prev.value += value; - state.globstar = true; - state.output += prior.output + prev.output; - consume(value); - continue; - } + // Remove ending `/` unless removeSingleSlash is false + if ((options.removeTrailingSlash || urlObj.pathname === '/') && urlObj.hash === '' && options.removeSingleSlash) { + urlString = urlString.replace(/\/$/, ''); + } - if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { - const end = rest[1] !== void 0 ? '|$' : ''; + // Restore relative protocol, if applicable + if (hasRelativeProtocol && !options.normalizeProtocol) { + urlString = urlString.replace(/^http:\/\//, '//'); + } - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; + // Remove http/https + if (options.stripProtocol) { + urlString = urlString.replace(/^(?:https?:)?\/\//, ''); + } - prev.type = 'globstar'; - prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; - prev.value += value; + return urlString; +}; - state.output += prior.output + prev.output; - state.globstar = true; +module.exports = normalizeUrl; - consume(value + advance()); - push({ type: 'slash', value: '/', output: '' }); - continue; - } +/***/ }), - if (prior.type === 'bos' && rest[0] === '/') { - prev.type = 'globstar'; - prev.value += value; - prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; - state.output = prev.output; - state.globstar = true; - consume(value + advance()); - push({ type: 'slash', value: '/', output: '' }); - continue; - } +/***/ 1223: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // remove single star from output - state.output = state.output.slice(0, -prev.output.length); +var wrappy = __nccwpck_require__(2940) +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) - // reset previous token to globstar - prev.type = 'globstar'; - prev.output = globstar(opts); - prev.value += value; +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) - // reset output with globstar - state.output += prev.output; - state.globstar = true; - consume(value); - continue; - } + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) - const token = { type: 'star', value, output: star }; +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} - if (opts.bash === true) { - token.output = '.*?'; - if (prev.type === 'bos' || prev.type === 'slash') { - token.output = nodot + token.output; - } - push(token); - continue; - } +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} - if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { - token.output = value; - push(token); - continue; - } - if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { - if (prev.type === 'dot') { - state.output += NO_DOT_SLASH; - prev.output += NO_DOT_SLASH; +/***/ }), - } else if (opts.dot === true) { - state.output += NO_DOTS_SLASH; - prev.output += NO_DOTS_SLASH; +/***/ 9072: +/***/ ((module) => { - } else { - state.output += nodot; - prev.output += nodot; - } +"use strict"; - if (peek() !== '*') { - state.output += ONE_CHAR; - prev.output += ONE_CHAR; - } - } - push(token); - } +class CancelError extends Error { + constructor(reason) { + super(reason || 'Promise was canceled'); + this.name = 'CancelError'; + } - while (state.brackets > 0) { - if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); - state.output = utils.escapeLast(state.output, '['); - decrement('brackets'); - } + get isCanceled() { + return true; + } +} - while (state.parens > 0) { - if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); - state.output = utils.escapeLast(state.output, '('); - decrement('parens'); - } +class PCancelable { + static fn(userFn) { + return (...arguments_) => { + return new PCancelable((resolve, reject, onCancel) => { + arguments_.push(onCancel); + // eslint-disable-next-line promise/prefer-await-to-then + userFn(...arguments_).then(resolve, reject); + }); + }; + } - while (state.braces > 0) { - if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); - state.output = utils.escapeLast(state.output, '{'); - decrement('braces'); - } + constructor(executor) { + this._cancelHandlers = []; + this._isPending = true; + this._isCanceled = false; + this._rejectOnCancel = true; - if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { - push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); - } + this._promise = new Promise((resolve, reject) => { + this._reject = reject; - // rebuild the output if we had to backtrack at any point - if (state.backtrack === true) { - state.output = ''; + const onResolve = value => { + if (!this._isCanceled || !onCancel.shouldReject) { + this._isPending = false; + resolve(value); + } + }; - for (const token of state.tokens) { - state.output += token.output != null ? token.output : token.value; + const onReject = error => { + this._isPending = false; + reject(error); + }; - if (token.suffix) { - state.output += token.suffix; - } - } - } + const onCancel = handler => { + if (!this._isPending) { + throw new Error('The `onCancel` handler was attached after the promise settled.'); + } - return state; -}; + this._cancelHandlers.push(handler); + }; -/** - * Fast paths for creating regular expressions for common glob patterns. - * This can significantly speed up processing and has very little downside - * impact when none of the fast paths match. - */ + Object.defineProperties(onCancel, { + shouldReject: { + get: () => this._rejectOnCancel, + set: boolean => { + this._rejectOnCancel = boolean; + } + } + }); -parse.fastpaths = (input, options) => { - const opts = { ...options }; - const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - const len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } + return executor(onResolve, onReject, onCancel); + }); + } - input = REPLACEMENTS[input] || input; - const win32 = utils.isWindows(options); + then(onFulfilled, onRejected) { + // eslint-disable-next-line promise/prefer-await-to-then + return this._promise.then(onFulfilled, onRejected); + } - // create constants based on platform, for windows or posix - const { - DOT_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOTS_SLASH, - STAR, - START_ANCHOR - } = constants.globChars(win32); + catch(onRejected) { + return this._promise.catch(onRejected); + } - const nodot = opts.dot ? NO_DOTS : NO_DOT; - const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; - const capture = opts.capture ? '' : '?:'; - const state = { negated: false, prefix: '' }; - let star = opts.bash === true ? '.*?' : STAR; + finally(onFinally) { + return this._promise.finally(onFinally); + } - if (opts.capture) { - star = `(${star})`; - } + cancel(reason) { + if (!this._isPending || this._isCanceled) { + return; + } - const globstar = opts => { - if (opts.noglobstar === true) return star; - return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; + this._isCanceled = true; - const create = str => { - switch (str) { - case '*': - return `${nodot}${ONE_CHAR}${star}`; + if (this._cancelHandlers.length > 0) { + try { + for (const handler of this._cancelHandlers) { + handler(); + } + } catch (error) { + this._reject(error); + return; + } + } - case '.*': - return `${DOT_LITERAL}${ONE_CHAR}${star}`; + if (this._rejectOnCancel) { + this._reject(new CancelError(reason)); + } + } - case '*.*': - return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + get isCanceled() { + return this._isCanceled; + } +} - case '*/*': - return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; +Object.setPrototypeOf(PCancelable.prototype, Promise.prototype); - case '**': - return nodot + globstar(opts); +module.exports = PCancelable; +module.exports.CancelError = CancelError; - case '**/*': - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; - case '**/*.*': - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; +/***/ }), - case '**/.*': - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; +/***/ 8569: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - default: { - const match = /^(.*?)\.(\w+)$/.exec(str); - if (!match) return; +"use strict"; - const source = create(match[1]); - if (!source) return; - return source + DOT_LITERAL + match[2]; - } - } - }; +const os = __nccwpck_require__(2037); +const pico = __nccwpck_require__(3322); - const output = utils.removePrefix(input, state); - let source = create(output); +const isWindows = os.platform() === 'win32'; - if (source && opts.strictSlashes !== true) { - source += `${SLASH_LITERAL}?`; +function picomatch(glob, options, returnState = false) { + // default to os.platform() + if (options && (options.windows === null || options.windows === undefined)) { + // don't mutate the original options object + options = { ...options, windows: isWindows }; } + return pico(glob, options, returnState); +} - return source; -}; - -module.exports = parse; +module.exports = picomatch; +// public api +module.exports.test = pico.test; +module.exports.matchBase = pico.matchBase; +module.exports.isMatch = pico.isMatch; +module.exports.parse = pico.parse; +module.exports.scan = pico.scan; +module.exports.compileRe = pico.compileRe; +module.exports.toRegex = pico.toRegex; +// for tests +module.exports.makeRe = pico.makeRe; /***/ }), -/***/ 3322: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 6099: +/***/ ((module) => { "use strict"; -const path = __nccwpck_require__(1017); -const scan = __nccwpck_require__(2429); -const parse = __nccwpck_require__(2139); -const utils = __nccwpck_require__(479); -const constants = __nccwpck_require__(6099); -const isObject = val => val && typeof val === 'object' && !Array.isArray(val); +const WIN_SLASH = '\\\\/'; +const WIN_NO_SLASH = `[^${WIN_SLASH}]`; /** - * Creates a matcher function from one or more glob patterns. The - * returned function takes a string to match as its first argument, - * and returns true if the string is a match. The returned matcher - * function also takes a boolean as the second argument that, when true, - * returns an object with additional information. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch(glob[, options]); - * - * const isMatch = picomatch('*.!(*a)'); - * console.log(isMatch('a.a')); //=> false - * console.log(isMatch('a.b')); //=> true - * ``` - * @name picomatch - * @param {String|Array} `globs` One or more glob patterns. - * @param {Object=} `options` - * @return {Function=} Returns a matcher function. - * @api public + * Posix glob regex */ -const picomatch = (glob, options, returnState = false) => { - if (Array.isArray(glob)) { - const fns = glob.map(input => picomatch(input, options, returnState)); - const arrayMatcher = str => { - for (const isMatch of fns) { - const state = isMatch(str); - if (state) return state; - } - return false; - }; - return arrayMatcher; - } +const DOT_LITERAL = '\\.'; +const PLUS_LITERAL = '\\+'; +const QMARK_LITERAL = '\\?'; +const SLASH_LITERAL = '\\/'; +const ONE_CHAR = '(?=.)'; +const QMARK = '[^/]'; +const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; +const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; +const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; +const NO_DOT = `(?!${DOT_LITERAL})`; +const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; +const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; +const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; +const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; +const STAR = `${QMARK}*?`; +const SEP = '/'; - const isState = isObject(glob) && glob.tokens && glob.input; +const POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR, + SEP +}; - if (glob === '' || (typeof glob !== 'string' && !isState)) { - throw new TypeError('Expected pattern to be a non-empty string'); - } +/** + * Windows glob regex + */ - const opts = options || {}; - const posix = utils.isWindows(options); - const regex = isState - ? picomatch.compileRe(glob, options) - : picomatch.makeRe(glob, options, false, true); +const WINDOWS_CHARS = { + ...POSIX_CHARS, - const state = regex.state; - delete regex.state; + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|$)`, + SEP: '\\' +}; - let isIgnored = () => false; - if (opts.ignore) { - const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; - isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); - } +/** + * POSIX Bracket Regex + */ - const matcher = (input, returnObject = false) => { - const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); - const result = { glob, state, regex, posix, input, output, match, isMatch }; +const POSIX_REGEX_SOURCE = { + alnum: 'a-zA-Z0-9', + alpha: 'a-zA-Z', + ascii: '\\x00-\\x7F', + blank: ' \\t', + cntrl: '\\x00-\\x1F\\x7F', + digit: '0-9', + graph: '\\x21-\\x7E', + lower: 'a-z', + print: '\\x20-\\x7E ', + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: ' \\t\\r\\n\\v\\f', + upper: 'A-Z', + word: 'A-Za-z0-9_', + xdigit: 'A-Fa-f0-9' +}; - if (typeof opts.onResult === 'function') { - opts.onResult(result); - } +module.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, - if (isMatch === false) { - result.isMatch = false; - return returnObject ? result : false; - } + // regular expressions + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, - if (isIgnored(input)) { - if (typeof opts.onIgnore === 'function') { - opts.onIgnore(result); - } - result.isMatch = false; - return returnObject ? result : false; - } + // Replace globs with equivalent patterns to reduce parsing time. + REPLACEMENTS: { + '***': '*', + '**/**': '**', + '**/**/**': '**' + }, - if (typeof opts.onMatch === 'function') { - opts.onMatch(result); - } - return returnObject ? result : true; - }; + // Digits + CHAR_0: 48, /* 0 */ + CHAR_9: 57, /* 9 */ - if (returnState) { - matcher.state = state; - } + // Alphabet chars. + CHAR_UPPERCASE_A: 65, /* A */ + CHAR_LOWERCASE_A: 97, /* a */ + CHAR_UPPERCASE_Z: 90, /* Z */ + CHAR_LOWERCASE_Z: 122, /* z */ - return matcher; -}; + CHAR_LEFT_PARENTHESES: 40, /* ( */ + CHAR_RIGHT_PARENTHESES: 41, /* ) */ -/** - * Test `input` with the given `regex`. This is used by the main - * `picomatch()` function to test the input string. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.test(input, regex[, options]); - * - * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); - * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } - * ``` - * @param {String} `input` String to test. - * @param {RegExp} `regex` - * @return {Object} Returns an object with matching info. - * @api public - */ + CHAR_ASTERISK: 42, /* * */ -picomatch.test = (input, regex, options, { glob, posix } = {}) => { - if (typeof input !== 'string') { - throw new TypeError('Expected input to be a string'); - } + // Non-alphabetic chars. + CHAR_AMPERSAND: 38, /* & */ + CHAR_AT: 64, /* @ */ + CHAR_BACKWARD_SLASH: 92, /* \ */ + CHAR_CARRIAGE_RETURN: 13, /* \r */ + CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ + CHAR_COLON: 58, /* : */ + CHAR_COMMA: 44, /* , */ + CHAR_DOT: 46, /* . */ + CHAR_DOUBLE_QUOTE: 34, /* " */ + CHAR_EQUAL: 61, /* = */ + CHAR_EXCLAMATION_MARK: 33, /* ! */ + CHAR_FORM_FEED: 12, /* \f */ + CHAR_FORWARD_SLASH: 47, /* / */ + CHAR_GRAVE_ACCENT: 96, /* ` */ + CHAR_HASH: 35, /* # */ + CHAR_HYPHEN_MINUS: 45, /* - */ + CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ + CHAR_LEFT_CURLY_BRACE: 123, /* { */ + CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ + CHAR_LINE_FEED: 10, /* \n */ + CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ + CHAR_PERCENT: 37, /* % */ + CHAR_PLUS: 43, /* + */ + CHAR_QUESTION_MARK: 63, /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ + CHAR_RIGHT_CURLY_BRACE: 125, /* } */ + CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ + CHAR_SEMICOLON: 59, /* ; */ + CHAR_SINGLE_QUOTE: 39, /* ' */ + CHAR_SPACE: 32, /* */ + CHAR_TAB: 9, /* \t */ + CHAR_UNDERSCORE: 95, /* _ */ + CHAR_VERTICAL_LINE: 124, /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ - if (input === '') { - return { isMatch: false, output: '' }; - } + /** + * Create EXTGLOB_CHARS + */ - const opts = options || {}; - const format = opts.format || (posix ? utils.toPosixSlashes : null); - let match = input === glob; - let output = (match && format) ? format(input) : input; + extglobChars(chars) { + return { + '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, + '?': { type: 'qmark', open: '(?:', close: ')?' }, + '+': { type: 'plus', open: '(?:', close: ')+' }, + '*': { type: 'star', open: '(?:', close: ')*' }, + '@': { type: 'at', open: '(?:', close: ')' } + }; + }, - if (match === false) { - output = format ? format(input) : input; - match = output === glob; + /** + * Create GLOB_CHARS + */ + + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; } +}; - if (match === false || opts.capture === true) { - if (opts.matchBase === true || opts.basename === true) { - match = picomatch.matchBase(input, regex, options, posix); - } else { - match = regex.exec(output); - } - } - - return { isMatch: Boolean(match), match, output }; -}; - -/** - * Match the basename of a filepath. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.matchBase(input, glob[, options]); - * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true - * ``` - * @param {String} `input` String to test. - * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). - * @return {Boolean} - * @api public - */ -picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { - const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); - return regex.test(path.basename(input)); -}; +/***/ }), -/** - * Returns true if **any** of the given glob `patterns` match the specified `string`. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.isMatch(string, patterns[, options]); - * - * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true - * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false - * ``` - * @param {String|Array} str The string to test. - * @param {String|Array} patterns One or more glob patterns to use for matching. - * @param {Object} [options] See available [options](#options). - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ +/***/ 2139: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); +"use strict"; -/** - * Parse a glob pattern to create the source string for a regular - * expression. - * - * ```js - * const picomatch = require('picomatch'); - * const result = picomatch.parse(pattern[, options]); - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} Returns an object with useful properties and output to be used as a regex source string. - * @api public - */ -picomatch.parse = (pattern, options) => { - if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); - return parse(pattern, { ...options, fastpaths: false }); -}; +const constants = __nccwpck_require__(6099); +const utils = __nccwpck_require__(479); /** - * Scan a glob pattern to separate the pattern into segments. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.scan(input[, options]); - * - * const result = picomatch.scan('!./foo/*.js'); - * console.log(result); - * { prefix: '!./', - * input: '!./foo/*.js', - * start: 3, - * base: 'foo', - * glob: '*.js', - * isBrace: false, - * isBracket: false, - * isGlob: true, - * isExtglob: false, - * isGlobstar: false, - * negated: true } - * ``` - * @param {String} `input` Glob pattern to scan. - * @param {Object} `options` - * @return {Object} Returns an object with - * @api public + * Constants */ -picomatch.scan = (input, options) => scan(input, options); +const { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS +} = constants; /** - * Compile a regular expression from the `state` object returned by the - * [parse()](#parse) method. - * - * @param {Object} `state` - * @param {Object} `options` - * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. - * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. - * @return {RegExp} - * @api public + * Helpers */ -picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { - if (returnOutput === true) { - return state.output; +const expandRange = (args, options) => { + if (typeof options.expandRange === 'function') { + return options.expandRange(...args, options); } - const opts = options || {}; - const prepend = opts.contains ? '' : '^'; - const append = opts.contains ? '' : '$'; + args.sort(); + const value = `[${args.join('-')}]`; - let source = `${prepend}(?:${state.output})${append}`; - if (state && state.negated === true) { - source = `^(?!${source}).*$`; + try { + /* eslint-disable-next-line no-new */ + new RegExp(value); + } catch (ex) { + return args.map(v => utils.escapeRegex(v)).join('..'); } - const regex = picomatch.toRegex(source, options); - if (returnState === true) { - regex.state = state; - } + return value; +}; - return regex; +/** + * Create the message for a syntax error + */ + +const syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; }; /** - * Create a regular expression from a parsed glob pattern. - * - * ```js - * const picomatch = require('picomatch'); - * const state = picomatch.parse('*.js'); - * // picomatch.compileRe(state[, options]); - * - * console.log(picomatch.compileRe(state)); - * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ - * ``` - * @param {String} `state` The object returned from the `.parse` method. - * @param {Object} `options` - * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. - * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. - * @return {RegExp} Returns a regex created from the given pattern. - * @api public + * Parse the given input string. + * @param {String} input + * @param {Object} options + * @return {Object} */ -picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { - if (!input || typeof input !== 'string') { - throw new TypeError('Expected a non-empty string'); +const parse = (input, options) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); } - let parsed = { negated: false, fastpaths: true }; + input = REPLACEMENTS[input] || input; - if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { - parsed.output = parse.fastpaths(input, options); - } + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - if (!parsed.output) { - parsed = parse(input, options); + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); } - return picomatch.compileRe(parsed, options, returnOutput, returnState); -}; + const bos = { type: 'bos', value: '', output: opts.prepend || '' }; + const tokens = [bos]; -/** - * Create a regular expression from the given regex source string. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.toRegex(source[, options]); - * - * const { output } = picomatch.parse('*.js'); - * console.log(picomatch.toRegex(output)); - * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ - * ``` - * @param {String} `source` Regular expression source string. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ + const capture = opts.capture ? '' : '?:'; -picomatch.toRegex = (source, options) => { - try { - const opts = options || {}; - return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); - } catch (err) { - if (options && options.debug === true) throw err; - return /$^/; - } -}; + // create constants based on platform, for windows or posix + const PLATFORM_CHARS = constants.globChars(opts.windows); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); -/** - * Picomatch constants. - * @return {Object} - */ + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; -picomatch.constants = constants; + const globstar = opts => { + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; -/** - * Expose "picomatch" - */ + const nodot = opts.dot ? '' : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; -module.exports = picomatch; + if (opts.capture) { + star = `(${star})`; + } + // minimatch options support + if (typeof opts.noext === 'boolean') { + opts.noextglob = opts.noext; + } -/***/ }), + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: '', + output: '', + prefix: '', + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; -/***/ 2429: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + input = utils.removePrefix(input, state); + len = input.length; -"use strict"; + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; + /** + * Tokenizing helpers + */ -const utils = __nccwpck_require__(479); -const { - CHAR_ASTERISK, /* * */ - CHAR_AT, /* @ */ - CHAR_BACKWARD_SLASH, /* \ */ - CHAR_COMMA, /* , */ - CHAR_DOT, /* . */ - CHAR_EXCLAMATION_MARK, /* ! */ - CHAR_FORWARD_SLASH, /* / */ - CHAR_LEFT_CURLY_BRACE, /* { */ - CHAR_LEFT_PARENTHESES, /* ( */ - CHAR_LEFT_SQUARE_BRACKET, /* [ */ - CHAR_PLUS, /* + */ - CHAR_QUESTION_MARK, /* ? */ - CHAR_RIGHT_CURLY_BRACE, /* } */ - CHAR_RIGHT_PARENTHESES, /* ) */ - CHAR_RIGHT_SQUARE_BRACKET /* ] */ -} = __nccwpck_require__(6099); + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index] || ''; + const remaining = () => input.slice(state.index + 1); + const consume = (value = '', num = 0) => { + state.consumed += value; + state.index += num; + }; -const isPathSeparator = code => { - return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; -}; + const append = token => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; -const depth = token => { - if (token.isPrefix !== true) { - token.depth = token.isGlobstar ? Infinity : 1; - } -}; + const negate = () => { + let count = 1; -/** - * Quickly scans a glob pattern and returns an object with a handful of - * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), - * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not - * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). - * - * ```js - * const pm = require('picomatch'); - * console.log(pm.scan('foo/bar/*.js')); - * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {Object} Returns an object with tokens and regex source string. - * @api public - */ + while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { + advance(); + state.start++; + count++; + } -const scan = (input, options) => { - const opts = options || {}; + if (count % 2 === 0) { + return false; + } - const length = input.length - 1; - const scanToEnd = opts.parts === true || opts.scanToEnd === true; - const slashes = []; - const tokens = []; - const parts = []; + state.negated = true; + state.start++; + return true; + }; - let str = input; - let index = -1; - let start = 0; - let lastIndex = 0; - let isBrace = false; - let isBracket = false; - let isGlob = false; - let isExtglob = false; - let isGlobstar = false; - let braceEscaped = false; - let backslashes = false; - let negated = false; - let negatedExtglob = false; - let finished = false; - let braces = 0; - let prev; - let code; - let token = { value: '', depth: 0, isGlob: false }; + const increment = type => { + state[type]++; + stack.push(type); + }; - const eos = () => index >= length; - const peek = () => str.charCodeAt(index + 1); - const advance = () => { - prev = code; - return str.charCodeAt(++index); + const decrement = type => { + state[type]--; + stack.pop(); }; - while (index < length) { - code = advance(); - let next; + /** + * Push tokens onto the tokens array. This helper speeds up + * tokenizing by 1) helping us avoid backtracking as much as possible, + * and 2) helping us avoid creating extra tokens when consecutive + * characters are plain text. This improves performance and simplifies + * lookbehinds. + */ - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); + const push = tok => { + if (prev.type === 'globstar') { + const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); + const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); - if (code === CHAR_LEFT_CURLY_BRACE) { - braceEscaped = true; + if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = 'star'; + prev.value = '*'; + prev.output = star; + state.output += prev.output; } - continue; } - if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { - braces++; - - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } - - if (code === CHAR_LEFT_CURLY_BRACE) { - braces++; - continue; - } + if (extglobs.length && tok.type !== 'paren') { + extglobs[extglobs.length - 1].inner += tok.value; + } - if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; + if (tok.value || tok.output) append(tok); + if (prev && prev.type === 'text' && tok.type === 'text') { + prev.value += tok.value; + prev.output = (prev.output || '') + tok.value; + return; + } - if (scanToEnd === true) { - continue; - } + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; - break; - } + const extglobOpen = (type, value) => { + const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; - if (braceEscaped !== true && code === CHAR_COMMA) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? '(' : '') + token.open; - if (scanToEnd === true) { - continue; - } + increment('parens'); + push({ type, value, output: state.output ? '' : ONE_CHAR }); + push({ type: 'paren', extglob: true, value: advance(), output }); + extglobs.push(token); + }; - break; - } + const extglobClose = token => { + let output = token.close + (opts.capture ? ')' : ''); + let rest; - if (code === CHAR_RIGHT_CURLY_BRACE) { - braces--; + if (token.type === 'negate') { + let extglobStar = star; - if (braces === 0) { - braceEscaped = false; - isBrace = token.isBrace = true; - finished = true; - break; - } - } + if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { + extglobStar = globstar(opts); } - if (scanToEnd === true) { - continue; + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)$))${extglobStar}`; } - break; - } - - if (code === CHAR_FORWARD_SLASH) { - slashes.push(index); - tokens.push(token); - token = { value: '', depth: 0, isGlob: false }; + if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis. + // In this case, we need to parse the string and use it in the output of the original pattern. + // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`. + // + // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`. + const expression = parse(rest, { ...options, fastpaths: false }).output; - if (finished === true) continue; - if (prev === CHAR_DOT && index === (start + 1)) { - start += 2; - continue; + output = token.close = `)${expression})${extglobStar})`; } - lastIndex = index + 1; - continue; + if (token.prev.type === 'bos') { + state.negatedExtglob = true; + } } - if (opts.noext !== true) { - const isExtglobChar = code === CHAR_PLUS - || code === CHAR_AT - || code === CHAR_ASTERISK - || code === CHAR_QUESTION_MARK - || code === CHAR_EXCLAMATION_MARK; + push({ type: 'paren', extglob: true, value, output }); + decrement('parens'); + }; - if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; - isExtglob = token.isExtglob = true; - finished = true; - if (code === CHAR_EXCLAMATION_MARK && index === start) { - negatedExtglob = true; + /** + * Fast paths + */ + + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; + + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === '\\') { + backslashes = true; + return m; + } + + if (first === '?') { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ''); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); } + return QMARK.repeat(chars.length); + } - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } + if (first === '.') { + return DOT_LITERAL.repeat(chars.length); + } - if (code === CHAR_RIGHT_PARENTHESES) { - isGlob = token.isGlob = true; - finished = true; - break; - } - } - continue; + if (first === '*') { + if (esc) { + return esc + first + (rest ? star : ''); } - break; + return star; + } + return esc ? m : `\\${m}`; + }); + + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ''); + } else { + output = output.replace(/\\+/g, m => { + return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); + }); } } - if (code === CHAR_ASTERISK) { - if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; - isGlob = token.isGlob = true; - finished = true; + if (output === input && opts.contains === true) { + state.output = input; + return state; + } - if (scanToEnd === true) { + state.output = utils.wrapOutput(output, state, options); + return state; + } + + /** + * Tokenize input until we reach end-of-string + */ + + while (!eos()) { + value = advance(); + + if (value === '\u0000') { + continue; + } + + /** + * Escaped characters + */ + + if (value === '\\') { + const next = peek(); + + if (next === '/' && opts.bash !== true) { continue; } - break; - } - if (code === CHAR_QUESTION_MARK) { - isGlob = token.isGlob = true; - finished = true; + if (next === '.' || next === ';') { + continue; + } - if (scanToEnd === true) { + if (!next) { + value += '\\'; + push({ type: 'text', value }); continue; } - break; - } - if (code === CHAR_LEFT_SQUARE_BRACKET) { - while (eos() !== true && (next = advance())) { - if (next === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } + // collapse slashes to reduce potential for exploits + const match = /^\\+/.exec(remaining()); + let slashes = 0; - if (next === CHAR_RIGHT_SQUARE_BRACKET) { - isBracket = token.isBracket = true; - isGlob = token.isGlob = true; - finished = true; - break; + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += '\\'; } } - if (scanToEnd === true) { - continue; + if (opts.unescape === true) { + value = advance(); + } else { + value += advance(); } - break; + if (state.brackets === 0) { + push({ type: 'text', value }); + continue; + } } - if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { - negated = token.negated = true; - start++; - continue; - } + /** + * If we're inside a regex character class, continue + * until we reach the closing bracket. + */ - if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; + if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { + if (opts.posix !== false && value === ':') { + const inner = prev.value.slice(1); + if (inner.includes('[')) { + prev.posix = true; - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_LEFT_PARENTHESES) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } + if (inner.includes(':')) { + const idx = prev.value.lastIndexOf('['); + const pre = prev.value.slice(0, idx); + const rest = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE[rest]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); - if (code === CHAR_RIGHT_PARENTHESES) { - finished = true; - break; + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } } } - continue; } - break; - } - if (isGlob === true) { - finished = true; + if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { + value = `\\${value}`; + } - if (scanToEnd === true) { - continue; + if (value === ']' && (prev.value === '[' || prev.value === '[^')) { + value = `\\${value}`; } - break; - } - } + if (opts.posix === true && value === '!' && prev.value === '[') { + value = '^'; + } - if (opts.noext === true) { - isExtglob = false; - isGlob = false; - } + prev.value += value; + append({ value }); + continue; + } - let base = str; - let prefix = ''; - let glob = ''; + /** + * If we're inside a quoted string, continue + * until we reach the closing double quote. + */ - if (start > 0) { - prefix = str.slice(0, start); - str = str.slice(start); - lastIndex -= start; - } + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } - if (base && isGlob === true && lastIndex > 0) { - base = str.slice(0, lastIndex); - glob = str.slice(lastIndex); - } else if (isGlob === true) { - base = ''; - glob = str; - } else { - base = str; - } + /** + * Double quotes + */ - if (base && base !== '' && base !== '/' && base !== str) { - if (isPathSeparator(base.charCodeAt(base.length - 1))) { - base = base.slice(0, -1); + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: 'text', value }); + } + continue; } - } - if (opts.unescape === true) { - if (glob) glob = utils.removeBackslashes(glob); + /** + * Parentheses + */ - if (base && backslashes === true) { - base = utils.removeBackslashes(base); + if (value === '(') { + increment('parens'); + push({ type: 'paren', value }); + continue; } - } - const state = { - prefix, - input, - start, - base, - glob, - isBrace, - isBracket, - isGlob, - isExtglob, - isGlobstar, - negated, - negatedExtglob - }; + if (value === ')') { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '(')); + } - if (opts.tokens === true) { - state.maxDepth = 0; - if (!isPathSeparator(code)) { - tokens.push(token); + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } + + push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); + decrement('parens'); + continue; } - state.tokens = tokens; - } - if (opts.parts === true || opts.tokens === true) { - let prevIndex; + /** + * Square brackets + */ - for (let idx = 0; idx < slashes.length; idx++) { - const n = prevIndex ? prevIndex + 1 : start; - const i = slashes[idx]; - const value = input.slice(n, i); - if (opts.tokens) { - if (idx === 0 && start !== 0) { - tokens[idx].isPrefix = true; - tokens[idx].value = prefix; - } else { - tokens[idx].value = value; + if (value === '[') { + if (opts.nobracket === true || !remaining().includes(']')) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('closing', ']')); } - depth(tokens[idx]); - state.maxDepth += tokens[idx].depth; - } - if (idx !== 0 || value !== '') { - parts.push(value); + + value = `\\${value}`; + } else { + increment('brackets'); } - prevIndex = i; - } - if (prevIndex && prevIndex + 1 < input.length) { - const value = input.slice(prevIndex + 1); - parts.push(value); + push({ type: 'bracket', value }); + continue; + } - if (opts.tokens) { - tokens[tokens.length - 1].value = value; - depth(tokens[tokens.length - 1]); - state.maxDepth += tokens[tokens.length - 1].depth; + if (value === ']') { + if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { + push({ type: 'text', value, output: `\\${value}` }); + continue; } - } - state.slashes = slashes; - state.parts = parts; - } + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '[')); + } - return state; -}; + push({ type: 'text', value, output: `\\${value}` }); + continue; + } -module.exports = scan; + decrement('brackets'); + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { + value = `/${value}`; + } -/***/ }), + prev.value += value; + append({ value }); -/***/ 479: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // when literal brackets are explicitly disabled + // assume we should match with a regex character class + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } -"use strict"; + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + // when literal brackets are explicitly enabled + // assume we should escape the brackets to match literal characters + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } -const path = __nccwpck_require__(1017); -const win32 = process.platform === 'win32'; -const { - REGEX_BACKSLASH, - REGEX_REMOVE_BACKSLASH, - REGEX_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_GLOBAL -} = __nccwpck_require__(6099); + // when the user specifies nothing, try to match both + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } -exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); -exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); -exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); -exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); -exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); + /** + * Braces + */ -exports.removeBackslashes = str => { - return str.replace(REGEX_REMOVE_BACKSLASH, match => { - return match === '\\' ? '' : match; - }); -}; + if (value === '{' && opts.nobrace !== true) { + increment('braces'); -exports.supportsLookbehinds = () => { - const segs = process.version.slice(1).split('.').map(Number); - if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { - return true; - } - return false; -}; + const open = { + type: 'brace', + value, + output: '(', + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; -exports.isWindows = options => { - if (options && typeof options.windows === 'boolean') { - return options.windows; - } - return win32 === true || path.sep === '\\'; -}; + braces.push(open); + push(open); + continue; + } -exports.escapeLast = (input, char, lastIdx) => { - const idx = input.lastIndexOf(char, lastIdx); - if (idx === -1) return input; - if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); - return `${input.slice(0, idx)}\\${input.slice(idx)}`; -}; + if (value === '}') { + const brace = braces[braces.length - 1]; -exports.removePrefix = (input, state = {}) => { - let output = input; - if (output.startsWith('./')) { - output = output.slice(2); - state.prefix = './'; - } - return output; -}; + if (opts.nobrace === true || !brace) { + push({ type: 'text', value, output: value }); + continue; + } -exports.wrapOutput = (input, state = {}, options = {}) => { - const prepend = options.contains ? '' : '^'; - const append = options.contains ? '' : '$'; + let output = ')'; - let output = `${prepend}(?:${input})${append}`; - if (state.negated === true) { - output = `(?:^(?!${output}).*$)`; - } - return output; -}; + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; + for (let i = arr.length - 1; i >= 0; i--) { + tokens.pop(); + if (arr[i].type === 'brace') { + break; + } + if (arr[i].type !== 'dots') { + range.unshift(arr[i].value); + } + } -/***/ }), + output = expandRange(range, opts); + state.backtrack = true; + } -/***/ 8341: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = '\\{'; + value = output = '\\}'; + state.output = out; + for (const t of toks) { + state.output += (t.output || t.value); + } + } -var once = __nccwpck_require__(1223) -var eos = __nccwpck_require__(1205) -var fs = __nccwpck_require__(7147) // we only need fs to get the ReadStream and WriteStream prototypes + push({ type: 'brace', value, output }); + decrement('braces'); + braces.pop(); + continue; + } -var noop = function () {} -var ancient = /^v?\.0/.test(process.version) + /** + * Pipes + */ -var isFn = function (fn) { - return typeof fn === 'function' -} + if (value === '|') { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: 'text', value }); + continue; + } -var isFS = function (stream) { - if (!ancient) return false // newer node version do not need to care about fs is a special way - if (!fs) return false // browser - return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) -} + /** + * Commas + */ -var isRequest = function (stream) { - return stream.setHeader && isFn(stream.abort) -} + if (value === ',') { + let output = value; -var destroyer = function (stream, reading, writing, callback) { - callback = once(callback) + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === 'braces') { + brace.comma = true; + output = '|'; + } - var closed = false - stream.on('close', function () { - closed = true - }) + push({ type: 'comma', value, output }); + continue; + } - eos(stream, {readable: reading, writable: writing}, function (err) { - if (err) return callback(err) - closed = true - callback() - }) + /** + * Slashes + */ - var destroyed = false - return function (err) { - if (closed) return - if (destroyed) return - destroyed = true + if (value === '/') { + // if the beginning of the glob is "./", advance the start + // to the current index, and don't add the "./" characters + // to the state. This greatly simplifies lookbehinds when + // checking for BOS characters like "!" and "." (not "./") + if (prev.type === 'dot' && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ''; + state.output = ''; + tokens.pop(); + prev = bos; // reset "prev" to the first token + continue; + } - if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks - if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want + push({ type: 'slash', value, output: SLASH_LITERAL }); + continue; + } - if (isFn(stream.destroy)) return stream.destroy() + /** + * Dots + */ - callback(err || new Error('stream was destroyed')) - } -} + if (value === '.') { + if (state.braces > 0 && prev.type === 'dot') { + if (prev.value === '.') prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = 'dots'; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; + } -var call = function (fn) { - fn() -} + if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { + push({ type: 'text', value, output: DOT_LITERAL }); + continue; + } -var pipe = function (from, to) { - return from.pipe(to) -} + push({ type: 'dot', value, output: DOT_LITERAL }); + continue; + } -var pump = function () { - var streams = Array.prototype.slice.call(arguments) - var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop + /** + * Question marks + */ - if (Array.isArray(streams[0])) streams = streams[0] - if (streams.length < 2) throw new Error('pump requires two streams per minimum') + if (value === '?') { + const isGroup = prev && prev.value === '('; + if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('qmark', value); + continue; + } - var error - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1 - var writing = i > 0 - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err - if (err) destroys.forEach(call) - if (reading) return - destroys.forEach(call) - callback(error) - }) - }) + if (prev && prev.type === 'paren') { + const next = peek(); + let output = value; - return streams.reduce(pipe) -} + if (next === '<' && !utils.supportsLookbehinds()) { + throw new Error('Node.js v10 or higher is required for regex lookbehinds'); + } -module.exports = pump + if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { + output = `\\${value}`; + } + push({ type: 'text', value, output }); + continue; + } -/***/ }), + if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { + push({ type: 'qmark', value, output: QMARK_NO_DOT }); + continue; + } -/***/ 9795: -/***/ ((module) => { + push({ type: 'qmark', value, output: QMARK }); + continue; + } -/*! queue-microtask. MIT License. Feross Aboukhadijeh */ -let promise + /** + * Exclamation + */ -module.exports = typeof queueMicrotask === 'function' - ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global) - // reuse resolved promise, and allocate it lazily - : cb => (promise || (promise = Promise.resolve())) - .then(cb) - .catch(err => setTimeout(() => { throw err }, 0)) + if (value === '!') { + if (opts.noextglob !== true && peek() === '(') { + if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { + extglobOpen('negate', value); + continue; + } + } + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } + } -/***/ }), + /** + * Plus + */ -/***/ 9273: -/***/ ((module) => { + if (value === '+') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('plus', value); + continue; + } -"use strict"; + if ((prev && prev.value === '(') || opts.regex === false) { + push({ type: 'plus', value, output: PLUS_LITERAL }); + continue; + } + if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { + push({ type: 'plus', value }); + continue; + } -class QuickLRU { - constructor(options = {}) { - if (!(options.maxSize && options.maxSize > 0)) { - throw new TypeError('`maxSize` must be a number greater than 0'); - } + push({ type: 'plus', value: PLUS_LITERAL }); + continue; + } - this.maxSize = options.maxSize; - this.onEviction = options.onEviction; - this.cache = new Map(); - this.oldCache = new Map(); - this._size = 0; - } + /** + * Plain text + */ - _set(key, value) { - this.cache.set(key, value); - this._size++; + if (value === '@') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + push({ type: 'at', extglob: true, value, output: '' }); + continue; + } - if (this._size >= this.maxSize) { - this._size = 0; + push({ type: 'text', value }); + continue; + } - if (typeof this.onEviction === 'function') { - for (const [key, value] of this.oldCache.entries()) { - this.onEviction(key, value); - } - } + /** + * Plain text + */ - this.oldCache = this.cache; - this.cache = new Map(); - } - } + if (value !== '*') { + if (value === '$' || value === '^') { + value = `\\${value}`; + } - get(key) { - if (this.cache.has(key)) { - return this.cache.get(key); - } + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } - if (this.oldCache.has(key)) { - const value = this.oldCache.get(key); - this.oldCache.delete(key); - this._set(key, value); - return value; - } - } + push({ type: 'text', value }); + continue; + } - set(key, value) { - if (this.cache.has(key)) { - this.cache.set(key, value); - } else { - this._set(key, value); - } + /** + * Stars + */ - return this; - } + if (prev && (prev.type === 'globstar' || prev.star === true)) { + prev.type = 'star'; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } - has(key) { - return this.cache.has(key) || this.oldCache.has(key); - } + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen('star', value); + continue; + } - peek(key) { - if (this.cache.has(key)) { - return this.cache.get(key); - } + if (prev.type === 'star') { + if (opts.noglobstar === true) { + consume(value); + continue; + } - if (this.oldCache.has(key)) { - return this.oldCache.get(key); - } - } + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === 'slash' || prior.type === 'bos'; + const afterStar = before && (before.type === 'star' || before.type === 'globstar'); - delete(key) { - const deleted = this.cache.delete(key); - if (deleted) { - this._size--; - } + if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { + push({ type: 'star', value, output: '' }); + continue; + } - return this.oldCache.delete(key) || deleted; - } + const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); + const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); + if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { + push({ type: 'star', value, output: '' }); + continue; + } - clear() { - this.cache.clear(); - this.oldCache.clear(); - this._size = 0; - } + // strip consecutive `/**/` + while (rest.slice(0, 3) === '/**') { + const after = input[state.index + 4]; + if (after && after !== '/') { + break; + } + rest = rest.slice(3); + consume('/**', 3); + } - * keys() { - for (const [key] of this) { - yield key; - } - } + if (prior.type === 'bos' && eos()) { + prev.type = 'globstar'; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } - * values() { - for (const [, value] of this) { - yield value; - } - } + if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; - * [Symbol.iterator]() { - for (const item of this.cache) { - yield item; - } + prev.type = 'globstar'; + prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } - for (const item of this.oldCache) { - const [key] = item; - if (!this.cache.has(key)) { - yield item; - } - } - } + if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { + const end = rest[1] !== void 0 ? '|$' : ''; - get size() { - let oldCacheSize = 0; - for (const key of this.oldCache.keys()) { - if (!this.cache.has(key)) { - oldCacheSize++; - } - } + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; - return Math.min(this._size + oldCacheSize, this.maxSize); - } -} + prev.type = 'globstar'; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; -module.exports = QuickLRU; + state.output += prior.output + prev.output; + state.globstar = true; + consume(value + advance()); -/***/ }), + push({ type: 'slash', value: '/', output: '' }); + continue; + } -/***/ 6624: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (prior.type === 'bos' && rest[0] === '/') { + prev.type = 'globstar'; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: 'slash', value: '/', output: '' }); + continue; + } -"use strict"; + // remove single star from output + state.output = state.output.slice(0, -prev.output.length); -const tls = __nccwpck_require__(4404); + // reset previous token to globstar + prev.type = 'globstar'; + prev.output = globstar(opts); + prev.value += value; -module.exports = (options = {}, connect = tls.connect) => new Promise((resolve, reject) => { - let timeout = false; + // reset output with globstar + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } - let socket; + const token = { type: 'star', value, output: star }; - const callback = async () => { - await socketPromise; + if (opts.bash === true) { + token.output = '.*?'; + if (prev.type === 'bos' || prev.type === 'slash') { + token.output = nodot + token.output; + } + push(token); + continue; + } - socket.off('timeout', onTimeout); - socket.off('error', reject); + if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { + token.output = value; + push(token); + continue; + } - if (options.resolveSocket) { - resolve({alpnProtocol: socket.alpnProtocol, socket, timeout}); + if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { + if (prev.type === 'dot') { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; - if (timeout) { - await Promise.resolve(); - socket.emit('timeout'); - } - } else { - socket.destroy(); - resolve({alpnProtocol: socket.alpnProtocol, timeout}); - } - }; + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; - const onTimeout = async () => { - timeout = true; - callback(); - }; + } else { + state.output += nodot; + prev.output += nodot; + } - const socketPromise = (async () => { - try { - socket = await connect(options, callback); + if (peek() !== '*') { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } - socket.on('error', reject); - socket.once('timeout', onTimeout); - } catch (error) { - reject(error); - } - })(); -}); + push(token); + } + while (state.brackets > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); + state.output = utils.escapeLast(state.output, '['); + decrement('brackets'); + } -/***/ }), + while (state.parens > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); + state.output = utils.escapeLast(state.output, '('); + decrement('parens'); + } -/***/ 9004: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + while (state.braces > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); + state.output = utils.escapeLast(state.output, '{'); + decrement('braces'); + } -"use strict"; + if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { + push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); + } + // rebuild the output if we had to backtrack at any point + if (state.backtrack === true) { + state.output = ''; -const Readable = (__nccwpck_require__(2781).Readable); -const lowercaseKeys = __nccwpck_require__(9662); + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; -class Response extends Readable { - constructor(statusCode, headers, body, url) { - if (typeof statusCode !== 'number') { - throw new TypeError('Argument `statusCode` should be a number'); - } - if (typeof headers !== 'object') { - throw new TypeError('Argument `headers` should be an object'); - } - if (!(body instanceof Buffer)) { - throw new TypeError('Argument `body` should be a buffer'); - } - if (typeof url !== 'string') { - throw new TypeError('Argument `url` should be a string'); - } - - super(); - this.statusCode = statusCode; - this.headers = lowercaseKeys(headers); - this.body = body; - this.url = url; - } - - _read() { - this.push(this.body); - this.push(null); - } -} - -module.exports = Response; - - -/***/ }), - -/***/ 2113: -/***/ ((module) => { + if (token.suffix) { + state.output += token.suffix; + } + } + } -"use strict"; + return state; +}; +/** + * Fast paths for creating regular expressions for common glob patterns. + * This can significantly speed up processing and has very little downside + * impact when none of the fast paths match. + */ -function reusify (Constructor) { - var head = new Constructor() - var tail = head +parse.fastpaths = (input, options) => { + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } - function get () { - var current = head + input = REPLACEMENTS[input] || input; - if (current.next) { - head = current.next - } else { - head = new Constructor() - tail = head - } + // create constants based on platform, for windows or posix + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(opts.windows); - current.next = null + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? '' : '?:'; + const state = { negated: false, prefix: '' }; + let star = opts.bash === true ? '.*?' : STAR; - return current + if (opts.capture) { + star = `(${star})`; } - function release (obj) { - tail.next = obj - tail = obj - } + const globstar = opts => { + if (opts.noglobstar === true) return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; - return { - get: get, - release: release - } -} + const create = str => { + switch (str) { + case '*': + return `${nodot}${ONE_CHAR}${star}`; -module.exports = reusify + case '.*': + return `${DOT_LITERAL}${ONE_CHAR}${star}`; + case '*.*': + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; -/***/ }), + case '*/*': + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; -/***/ 5288: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + case '**': + return nodot + globstar(opts); -/*! run-parallel. MIT License. Feross Aboukhadijeh */ -module.exports = runParallel + case '**/*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; -const queueMicrotask = __nccwpck_require__(9795) + case '**/*.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; -function runParallel (tasks, cb) { - let results, pending, keys - let isSync = true + case '**/.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; - if (Array.isArray(tasks)) { - results = [] - pending = tasks.length - } else { - keys = Object.keys(tasks) - results = {} - pending = keys.length - } + default: { + const match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) return; - function done (err) { - function end () { - if (cb) cb(err, results) - cb = null - } - if (isSync) queueMicrotask(end) - else end() - } + const source = create(match[1]); + if (!source) return; - function each (i, err, result) { - results[i] = result - if (--pending === 0 || err) { - done(err) + return source + DOT_LITERAL + match[2]; + } } - } + }; - if (!pending) { - // empty - done(null) - } else if (keys) { - // object - keys.forEach(function (key) { - tasks[key](function (err, result) { each(key, err, result) }) - }) - } else { - // array - tasks.forEach(function (task, i) { - task(function (err, result) { each(i, err, result) }) - }) + const output = utils.removePrefix(input, state); + let source = create(output); + + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; } - isSync = false -} + return source; +}; +module.exports = parse; -/***/ }), -/***/ 2043: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ }), -;(function (sax) { // wrapper for non-node envs - sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } - sax.SAXParser = SAXParser - sax.SAXStream = SAXStream - sax.createStream = createStream +/***/ 3322: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. - // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), - // since that's the earliest that a buffer overrun could occur. This way, checks are - // as rare as required, but as often as necessary to ensure never crossing this bound. - // Furthermore, buffers are only tested at most once per write(), so passing a very - // large string into write() might have undesirable effects, but this is manageable by - // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme - // edge case, result in creating at most one complete copy of the string passed in. - // Set to Infinity to have unlimited buffers. - sax.MAX_BUFFER_LENGTH = 64 * 1024 +"use strict"; - var buffers = [ - 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', - 'procInstName', 'procInstBody', 'entity', 'attribName', - 'attribValue', 'cdata', 'script' - ] - sax.EVENTS = [ - 'text', - 'processinginstruction', - 'sgmldeclaration', - 'doctype', - 'comment', - 'opentagstart', - 'attribute', - 'opentag', - 'closetag', - 'opencdata', - 'cdata', - 'closecdata', - 'error', - 'end', - 'ready', - 'script', - 'opennamespace', - 'closenamespace' - ] +const scan = __nccwpck_require__(2429); +const parse = __nccwpck_require__(2139); +const utils = __nccwpck_require__(479); +const constants = __nccwpck_require__(6099); +const isObject = val => val && typeof val === 'object' && !Array.isArray(val); - function SAXParser (strict, opt) { - if (!(this instanceof SAXParser)) { - return new SAXParser(strict, opt) - } +/** + * Creates a matcher function from one or more glob patterns. The + * returned function takes a string to match as its first argument, + * and returns true if the string is a match. The returned matcher + * function also takes a boolean as the second argument that, when true, + * returns an object with additional information. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch(glob[, options]); + * + * const isMatch = picomatch('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @name picomatch + * @param {String|Array} `globs` One or more glob patterns. + * @param {Object=} `options` + * @return {Function=} Returns a matcher function. + * @api public + */ - var parser = this - clearBuffers(parser) - parser.q = parser.c = '' - parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH - parser.opt = opt || {} - parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags - parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' - parser.tags = [] - parser.closed = parser.closedRoot = parser.sawRoot = false - parser.tag = parser.error = null - parser.strict = !!strict - parser.noscript = !!(strict || parser.opt.noscript) - parser.state = S.BEGIN - parser.strictEntities = parser.opt.strictEntities - parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) - parser.attribList = [] +const picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map(input => picomatch(input, options, returnState)); + const arrayMatcher = str => { + for (const isMatch of fns) { + const state = isMatch(str); + if (state) return state; + } + return false; + }; + return arrayMatcher; + } - // namespaces form a prototype chain. - // it always points at the current tag, - // which protos to its parent tag. - if (parser.opt.xmlns) { - parser.ns = Object.create(rootNS) - } + const isState = isObject(glob) && glob.tokens && glob.input; - // mostly just for error reporting - parser.trackPosition = parser.opt.position !== false - if (parser.trackPosition) { - parser.position = parser.line = parser.column = 0 - } - emit(parser, 'onready') + if (glob === '' || (typeof glob !== 'string' && !isState)) { + throw new TypeError('Expected pattern to be a non-empty string'); } - if (!Object.create) { - Object.create = function (o) { - function F () {} - F.prototype = o - var newf = new F() - return newf - } - } + const opts = options || {}; + const posix = opts.windows; + const regex = isState + ? picomatch.compileRe(glob, options) + : picomatch.makeRe(glob, options, false, true); - if (!Object.keys) { - Object.keys = function (o) { - var a = [] - for (var i in o) if (o.hasOwnProperty(i)) a.push(i) - return a - } + const state = regex.state; + delete regex.state; + + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); } - function checkBufferLength (parser) { - var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) - var maxActual = 0 - for (var i = 0, l = buffers.length; i < l; i++) { - var len = parser[buffers[i]].length - if (len > maxAllowed) { - // Text/cdata nodes can get big, and since they're buffered, - // we can get here under normal conditions. - // Avoid issues by emitting the text node now, - // so at least it won't get any bigger. - switch (buffers[i]) { - case 'textNode': - closeText(parser) - break + const matcher = (input, returnObject = false) => { + const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + const result = { glob, state, regex, posix, input, output, match, isMatch }; - case 'cdata': - emitNode(parser, 'oncdata', parser.cdata) - parser.cdata = '' - break + if (typeof opts.onResult === 'function') { + opts.onResult(result); + } - case 'script': - emitNode(parser, 'onscript', parser.script) - parser.script = '' - break + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } - default: - error(parser, 'Max buffer length exceeded: ' + buffers[i]) - } + if (isIgnored(input)) { + if (typeof opts.onIgnore === 'function') { + opts.onIgnore(result); } - maxActual = Math.max(maxActual, len) + result.isMatch = false; + return returnObject ? result : false; } - // schedule the next check for the earliest possible buffer overrun. - var m = sax.MAX_BUFFER_LENGTH - maxActual - parser.bufferCheckPosition = m + parser.position - } - function clearBuffers (parser) { - for (var i = 0, l = buffers.length; i < l; i++) { - parser[buffers[i]] = '' + if (typeof opts.onMatch === 'function') { + opts.onMatch(result); } - } + return returnObject ? result : true; + }; - function flushBuffers (parser) { - closeText(parser) - if (parser.cdata !== '') { - emitNode(parser, 'oncdata', parser.cdata) - parser.cdata = '' - } - if (parser.script !== '') { - emitNode(parser, 'onscript', parser.script) - parser.script = '' - } + if (returnState) { + matcher.state = state; } - SAXParser.prototype = { - end: function () { end(this) }, - write: write, - resume: function () { this.error = null; return this }, - close: function () { return this.write(null) }, - flush: function () { flushBuffers(this) } + return matcher; +}; + +/** + * Test `input` with the given `regex`. This is used by the main + * `picomatch()` function to test the input string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.test(input, regex[, options]); + * + * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); + * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } + * ``` + * @param {String} `input` String to test. + * @param {RegExp} `regex` + * @return {Object} Returns an object with matching info. + * @api public + */ + +picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected input to be a string'); } - var Stream - try { - Stream = (__nccwpck_require__(2781).Stream) - } catch (ex) { - Stream = function () {} + if (input === '') { + return { isMatch: false, output: '' }; } - var streamWraps = sax.EVENTS.filter(function (ev) { - return ev !== 'error' && ev !== 'end' - }) + const opts = options || {}; + const format = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = (match && format) ? format(input) : input; - function createStream (strict, opt) { - return new SAXStream(strict, opt) + if (match === false) { + output = format ? format(input) : input; + match = output === glob; } - function SAXStream (strict, opt) { - if (!(this instanceof SAXStream)) { - return new SAXStream(strict, opt) + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); } + } - Stream.apply(this) + return { isMatch: Boolean(match), match, output }; +}; - this._parser = new SAXParser(strict, opt) - this.writable = true - this.readable = true +/** + * Match the basename of a filepath. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.matchBase(input, glob[, options]); + * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true + * ``` + * @param {String} `input` String to test. + * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). + * @return {Boolean} + * @api public + */ - var me = this +picomatch.matchBase = (input, glob, options) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(utils.basename(input)); +}; - this._parser.onend = function () { - me.emit('end') - } +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.isMatch(string, patterns[, options]); + * + * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String|Array} str The string to test. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} [options] See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ - this._parser.onerror = function (er) { - me.emit('error', er) +picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); - // if didn't throw, then means error was handled. - // go ahead and clear error, so we can write again. - me._parser.error = null - } +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const picomatch = require('picomatch'); + * const result = picomatch.parse(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as a regex source string. + * @api public + */ - this._decoder = null +picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); + return parse(pattern, { ...options, fastpaths: false }); +}; - streamWraps.forEach(function (ev) { - Object.defineProperty(me, 'on' + ev, { - get: function () { - return me._parser['on' + ev] - }, - set: function (h) { +/** + * Scan a glob pattern to separate the pattern into segments. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.scan(input[, options]); + * + * const result = picomatch.scan('!./foo/*.js'); + * console.log(result); + * { prefix: '!./', + * input: '!./foo/*.js', + * start: 3, + * base: 'foo', + * glob: '*.js', + * isBrace: false, + * isBracket: false, + * isGlob: true, + * isExtglob: false, + * isGlobstar: false, + * negated: true } + * ``` + * @param {String} `input` Glob pattern to scan. + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ + +picomatch.scan = (input, options) => scan(input, options); + +/** + * Compile a regular expression from the `state` object returned by the + * [parse()](#parse) method. + * + * @param {Object} `state` + * @param {Object} `options` + * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. + * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. + * @return {RegExp} + * @api public + */ + +picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return state.output; + } + + const opts = options || {}; + const prepend = opts.contains ? '' : '^'; + const append = opts.contains ? '' : '$'; + + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*$`; + } + + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; + } + + return regex; +}; + +/** + * Create a regular expression from a parsed glob pattern. + * + * ```js + * const picomatch = require('picomatch'); + * const state = picomatch.parse('*.js'); + * // picomatch.compileRe(state[, options]); + * + * console.log(picomatch.compileRe(state)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `state` The object returned from the `.parse` method. + * @param {Object} `options` + * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. + * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { + if (!input || typeof input !== 'string') { + throw new TypeError('Expected a non-empty string'); + } + + let parsed = { negated: false, fastpaths: true }; + + if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { + parsed.output = parse.fastpaths(input, options); + } + + if (!parsed.output) { + parsed = parse(input, options); + } + + return picomatch.compileRe(parsed, options, returnOutput, returnState); +}; + +/** + * Create a regular expression from the given regex source string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.toRegex(source[, options]); + * + * const { output } = picomatch.parse('*.js'); + * console.log(picomatch.toRegex(output)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `source` Regular expression source string. + * @param {Object} `options` + * @return {RegExp} + * @api public + */ + +picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); + } catch (err) { + if (options && options.debug === true) throw err; + return /$^/; + } +}; + +/** + * Picomatch constants. + * @return {Object} + */ + +picomatch.constants = constants; + +/** + * Expose "picomatch" + */ + +module.exports = picomatch; + + +/***/ }), + +/***/ 2429: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const utils = __nccwpck_require__(479); +const { + CHAR_ASTERISK, /* * */ + CHAR_AT, /* @ */ + CHAR_BACKWARD_SLASH, /* \ */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_EXCLAMATION_MARK, /* ! */ + CHAR_FORWARD_SLASH, /* / */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_PLUS, /* + */ + CHAR_QUESTION_MARK, /* ? */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_RIGHT_SQUARE_BRACKET /* ] */ +} = __nccwpck_require__(6099); + +const isPathSeparator = code => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +}; + +const depth = token => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; + } +}; + +/** + * Quickly scans a glob pattern and returns an object with a handful of + * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), + * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not + * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). + * + * ```js + * const pm = require('picomatch'); + * console.log(pm.scan('foo/bar/*.js')); + * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {Object} Returns an object with tokens and regex source string. + * @api public + */ + +const scan = (input, options) => { + const opts = options || {}; + + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; + + let str = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let negatedExtglob = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { value: '', depth: 0, isGlob: false }; + + const eos = () => index >= length; + const peek = () => str.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str.charCodeAt(++index); + }; + + while (index < length) { + code = advance(); + let next; + + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; + } + + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } + + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (braceEscaped !== true && code === CHAR_COMMA) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; + + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { value: '', depth: 0, isGlob: false }; + + if (finished === true) continue; + if (prev === CHAR_DOT && index === (start + 1)) { + start += 2; + continue; + } + + lastIndex = index + 1; + continue; + } + + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS + || code === CHAR_AT + || code === CHAR_ASTERISK + || code === CHAR_QUESTION_MARK + || code === CHAR_EXCLAMATION_MARK; + + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; + } + + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; + } + break; + } + } + + if (code === CHAR_ASTERISK) { + if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + break; + } + + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + break; + } + + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + break; + } + } + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } + + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; + } + } + continue; + } + break; + } + + if (isGlob === true) { + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + } + + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } + + let base = str; + let prefix = ''; + let glob = ''; + + if (start > 0) { + prefix = str.slice(0, start); + str = str.slice(start); + lastIndex -= start; + } + + if (base && isGlob === true && lastIndex > 0) { + base = str.slice(0, lastIndex); + glob = str.slice(lastIndex); + } else if (isGlob === true) { + base = ''; + glob = str; + } else { + base = str; + } + + if (base && base !== '' && base !== '/' && base !== str) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } + + if (opts.unescape === true) { + if (glob) glob = utils.removeBackslashes(glob); + + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } + + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated, + negatedExtglob + }; + + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); + } + state.tokens = tokens; + } + + if (opts.parts === true || opts.tokens === true) { + let prevIndex; + + for (let idx = 0; idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== '') { + parts.push(value); + } + prevIndex = i; + } + + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); + + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } + } + + state.slashes = slashes; + state.parts = parts; + } + + return state; +}; + +module.exports = scan; + + +/***/ }), + +/***/ 479: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +const { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL +} = __nccwpck_require__(6099); + +exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); +exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); +exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); +exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); + +exports.removeBackslashes = str => { + return str.replace(REGEX_REMOVE_BACKSLASH, match => { + return match === '\\' ? '' : match; + }); +}; + +exports.supportsLookbehinds = () => { + if (typeof process !== 'undefined') { + const segs = process.version.slice(1).split('.').map(Number); + if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { + return true; + } + } + return false; +}; + +exports.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) return input; + if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; +}; + +exports.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith('./')) { + output = output.slice(2); + state.prefix = './'; + } + return output; +}; + +exports.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? '' : '^'; + const append = options.contains ? '' : '$'; + + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*$)`; + } + return output; +}; + +exports.basename = (path, { windows } = {}) => { + const segs = path.split(windows ? /[\\/]/ : '/'); + const last = segs[segs.length - 1]; + + if (last === '') { + return segs[segs.length - 2]; + } + + return last; +}; + + +/***/ }), + +/***/ 8341: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var once = __nccwpck_require__(1223) +var eos = __nccwpck_require__(1205) +var fs = __nccwpck_require__(7147) // we only need fs to get the ReadStream and WriteStream prototypes + +var noop = function () {} +var ancient = /^v?\.0/.test(process.version) + +var isFn = function (fn) { + return typeof fn === 'function' +} + +var isFS = function (stream) { + if (!ancient) return false // newer node version do not need to care about fs is a special way + if (!fs) return false // browser + return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) +} + +var isRequest = function (stream) { + return stream.setHeader && isFn(stream.abort) +} + +var destroyer = function (stream, reading, writing, callback) { + callback = once(callback) + + var closed = false + stream.on('close', function () { + closed = true + }) + + eos(stream, {readable: reading, writable: writing}, function (err) { + if (err) return callback(err) + closed = true + callback() + }) + + var destroyed = false + return function (err) { + if (closed) return + if (destroyed) return + destroyed = true + + if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks + if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want + + if (isFn(stream.destroy)) return stream.destroy() + + callback(err || new Error('stream was destroyed')) + } +} + +var call = function (fn) { + fn() +} + +var pipe = function (from, to) { + return from.pipe(to) +} + +var pump = function () { + var streams = Array.prototype.slice.call(arguments) + var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop + + if (Array.isArray(streams[0])) streams = streams[0] + if (streams.length < 2) throw new Error('pump requires two streams per minimum') + + var error + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1 + var writing = i > 0 + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err + if (err) destroys.forEach(call) + if (reading) return + destroys.forEach(call) + callback(error) + }) + }) + + return streams.reduce(pipe) +} + +module.exports = pump + + +/***/ }), + +/***/ 9795: +/***/ ((module) => { + +/*! queue-microtask. MIT License. Feross Aboukhadijeh */ +let promise + +module.exports = typeof queueMicrotask === 'function' + ? queueMicrotask.bind(typeof window !== 'undefined' ? window : global) + // reuse resolved promise, and allocate it lazily + : cb => (promise || (promise = Promise.resolve())) + .then(cb) + .catch(err => setTimeout(() => { throw err }, 0)) + + +/***/ }), + +/***/ 9273: +/***/ ((module) => { + +"use strict"; + + +class QuickLRU { + constructor(options = {}) { + if (!(options.maxSize && options.maxSize > 0)) { + throw new TypeError('`maxSize` must be a number greater than 0'); + } + + this.maxSize = options.maxSize; + this.onEviction = options.onEviction; + this.cache = new Map(); + this.oldCache = new Map(); + this._size = 0; + } + + _set(key, value) { + this.cache.set(key, value); + this._size++; + + if (this._size >= this.maxSize) { + this._size = 0; + + if (typeof this.onEviction === 'function') { + for (const [key, value] of this.oldCache.entries()) { + this.onEviction(key, value); + } + } + + this.oldCache = this.cache; + this.cache = new Map(); + } + } + + get(key) { + if (this.cache.has(key)) { + return this.cache.get(key); + } + + if (this.oldCache.has(key)) { + const value = this.oldCache.get(key); + this.oldCache.delete(key); + this._set(key, value); + return value; + } + } + + set(key, value) { + if (this.cache.has(key)) { + this.cache.set(key, value); + } else { + this._set(key, value); + } + + return this; + } + + has(key) { + return this.cache.has(key) || this.oldCache.has(key); + } + + peek(key) { + if (this.cache.has(key)) { + return this.cache.get(key); + } + + if (this.oldCache.has(key)) { + return this.oldCache.get(key); + } + } + + delete(key) { + const deleted = this.cache.delete(key); + if (deleted) { + this._size--; + } + + return this.oldCache.delete(key) || deleted; + } + + clear() { + this.cache.clear(); + this.oldCache.clear(); + this._size = 0; + } + + * keys() { + for (const [key] of this) { + yield key; + } + } + + * values() { + for (const [, value] of this) { + yield value; + } + } + + * [Symbol.iterator]() { + for (const item of this.cache) { + yield item; + } + + for (const item of this.oldCache) { + const [key] = item; + if (!this.cache.has(key)) { + yield item; + } + } + } + + get size() { + let oldCacheSize = 0; + for (const key of this.oldCache.keys()) { + if (!this.cache.has(key)) { + oldCacheSize++; + } + } + + return Math.min(this._size + oldCacheSize, this.maxSize); + } +} + +module.exports = QuickLRU; + + +/***/ }), + +/***/ 6624: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + +const tls = __nccwpck_require__(4404); + +module.exports = (options = {}, connect = tls.connect) => new Promise((resolve, reject) => { + let timeout = false; + + let socket; + + const callback = async () => { + await socketPromise; + + socket.off('timeout', onTimeout); + socket.off('error', reject); + + if (options.resolveSocket) { + resolve({alpnProtocol: socket.alpnProtocol, socket, timeout}); + + if (timeout) { + await Promise.resolve(); + socket.emit('timeout'); + } + } else { + socket.destroy(); + resolve({alpnProtocol: socket.alpnProtocol, timeout}); + } + }; + + const onTimeout = async () => { + timeout = true; + callback(); + }; + + const socketPromise = (async () => { + try { + socket = await connect(options, callback); + + socket.on('error', reject); + socket.once('timeout', onTimeout); + } catch (error) { + reject(error); + } + })(); +}); + + +/***/ }), + +/***/ 9004: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +const Readable = (__nccwpck_require__(2781).Readable); +const lowercaseKeys = __nccwpck_require__(9662); + +class Response extends Readable { + constructor(statusCode, headers, body, url) { + if (typeof statusCode !== 'number') { + throw new TypeError('Argument `statusCode` should be a number'); + } + if (typeof headers !== 'object') { + throw new TypeError('Argument `headers` should be an object'); + } + if (!(body instanceof Buffer)) { + throw new TypeError('Argument `body` should be a buffer'); + } + if (typeof url !== 'string') { + throw new TypeError('Argument `url` should be a string'); + } + + super(); + this.statusCode = statusCode; + this.headers = lowercaseKeys(headers); + this.body = body; + this.url = url; + } + + _read() { + this.push(this.body); + this.push(null); + } +} + +module.exports = Response; + + +/***/ }), + +/***/ 2113: +/***/ ((module) => { + +"use strict"; + + +function reusify (Constructor) { + var head = new Constructor() + var tail = head + + function get () { + var current = head + + if (current.next) { + head = current.next + } else { + head = new Constructor() + tail = head + } + + current.next = null + + return current + } + + function release (obj) { + tail.next = obj + tail = obj + } + + return { + get: get, + release: release + } +} + +module.exports = reusify + + +/***/ }), + +/***/ 5288: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +/*! run-parallel. MIT License. Feross Aboukhadijeh */ +module.exports = runParallel + +const queueMicrotask = __nccwpck_require__(9795) + +function runParallel (tasks, cb) { + let results, pending, keys + let isSync = true + + if (Array.isArray(tasks)) { + results = [] + pending = tasks.length + } else { + keys = Object.keys(tasks) + results = {} + pending = keys.length + } + + function done (err) { + function end () { + if (cb) cb(err, results) + cb = null + } + if (isSync) queueMicrotask(end) + else end() + } + + function each (i, err, result) { + results[i] = result + if (--pending === 0 || err) { + done(err) + } + } + + if (!pending) { + // empty + done(null) + } else if (keys) { + // object + keys.forEach(function (key) { + tasks[key](function (err, result) { each(key, err, result) }) + }) + } else { + // array + tasks.forEach(function (task, i) { + task(function (err, result) { each(i, err, result) }) + }) + } + + isSync = false +} + + +/***/ }), + +/***/ 2043: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +;(function (sax) { // wrapper for non-node envs + sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } + sax.SAXParser = SAXParser + sax.SAXStream = SAXStream + sax.createStream = createStream + + // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. + // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), + // since that's the earliest that a buffer overrun could occur. This way, checks are + // as rare as required, but as often as necessary to ensure never crossing this bound. + // Furthermore, buffers are only tested at most once per write(), so passing a very + // large string into write() might have undesirable effects, but this is manageable by + // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme + // edge case, result in creating at most one complete copy of the string passed in. + // Set to Infinity to have unlimited buffers. + sax.MAX_BUFFER_LENGTH = 64 * 1024 + + var buffers = [ + 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', + 'procInstName', 'procInstBody', 'entity', 'attribName', + 'attribValue', 'cdata', 'script' + ] + + sax.EVENTS = [ + 'text', + 'processinginstruction', + 'sgmldeclaration', + 'doctype', + 'comment', + 'opentagstart', + 'attribute', + 'opentag', + 'closetag', + 'opencdata', + 'cdata', + 'closecdata', + 'error', + 'end', + 'ready', + 'script', + 'opennamespace', + 'closenamespace' + ] + + function SAXParser (strict, opt) { + if (!(this instanceof SAXParser)) { + return new SAXParser(strict, opt) + } + + var parser = this + clearBuffers(parser) + parser.q = parser.c = '' + parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH + parser.opt = opt || {} + parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags + parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' + parser.tags = [] + parser.closed = parser.closedRoot = parser.sawRoot = false + parser.tag = parser.error = null + parser.strict = !!strict + parser.noscript = !!(strict || parser.opt.noscript) + parser.state = S.BEGIN + parser.strictEntities = parser.opt.strictEntities + parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) + parser.attribList = [] + + // namespaces form a prototype chain. + // it always points at the current tag, + // which protos to its parent tag. + if (parser.opt.xmlns) { + parser.ns = Object.create(rootNS) + } + + // mostly just for error reporting + parser.trackPosition = parser.opt.position !== false + if (parser.trackPosition) { + parser.position = parser.line = parser.column = 0 + } + emit(parser, 'onready') + } + + if (!Object.create) { + Object.create = function (o) { + function F () {} + F.prototype = o + var newf = new F() + return newf + } + } + + if (!Object.keys) { + Object.keys = function (o) { + var a = [] + for (var i in o) if (o.hasOwnProperty(i)) a.push(i) + return a + } + } + + function checkBufferLength (parser) { + var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) + var maxActual = 0 + for (var i = 0, l = buffers.length; i < l; i++) { + var len = parser[buffers[i]].length + if (len > maxAllowed) { + // Text/cdata nodes can get big, and since they're buffered, + // we can get here under normal conditions. + // Avoid issues by emitting the text node now, + // so at least it won't get any bigger. + switch (buffers[i]) { + case 'textNode': + closeText(parser) + break + + case 'cdata': + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + break + + case 'script': + emitNode(parser, 'onscript', parser.script) + parser.script = '' + break + + default: + error(parser, 'Max buffer length exceeded: ' + buffers[i]) + } + } + maxActual = Math.max(maxActual, len) + } + // schedule the next check for the earliest possible buffer overrun. + var m = sax.MAX_BUFFER_LENGTH - maxActual + parser.bufferCheckPosition = m + parser.position + } + + function clearBuffers (parser) { + for (var i = 0, l = buffers.length; i < l; i++) { + parser[buffers[i]] = '' + } + } + + function flushBuffers (parser) { + closeText(parser) + if (parser.cdata !== '') { + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + } + if (parser.script !== '') { + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + } + + SAXParser.prototype = { + end: function () { end(this) }, + write: write, + resume: function () { this.error = null; return this }, + close: function () { return this.write(null) }, + flush: function () { flushBuffers(this) } + } + + var Stream + try { + Stream = (__nccwpck_require__(2781).Stream) + } catch (ex) { + Stream = function () {} + } + + var streamWraps = sax.EVENTS.filter(function (ev) { + return ev !== 'error' && ev !== 'end' + }) + + function createStream (strict, opt) { + return new SAXStream(strict, opt) + } + + function SAXStream (strict, opt) { + if (!(this instanceof SAXStream)) { + return new SAXStream(strict, opt) + } + + Stream.apply(this) + + this._parser = new SAXParser(strict, opt) + this.writable = true + this.readable = true + + var me = this + + this._parser.onend = function () { + me.emit('end') + } + + this._parser.onerror = function (er) { + me.emit('error', er) + + // if didn't throw, then means error was handled. + // go ahead and clear error, so we can write again. + me._parser.error = null + } + + this._decoder = null + + streamWraps.forEach(function (ev) { + Object.defineProperty(me, 'on' + ev, { + get: function () { + return me._parser['on' + ev] + }, + set: function (h) { if (!h) { me.removeAllListeners(ev) me._parser['on' + ev] = h return h } - me.on(ev, h) - }, - enumerable: true, - configurable: false + me.on(ev, h) + }, + enumerable: true, + configurable: false + }) + }) + } + + SAXStream.prototype = Object.create(Stream.prototype, { + constructor: { + value: SAXStream + } + }) + + SAXStream.prototype.write = function (data) { + if (typeof Buffer === 'function' && + typeof Buffer.isBuffer === 'function' && + Buffer.isBuffer(data)) { + if (!this._decoder) { + var SD = (__nccwpck_require__(1576).StringDecoder) + this._decoder = new SD('utf8') + } + data = this._decoder.write(data) + } + + this._parser.write(data.toString()) + this.emit('data', data) + return true + } + + SAXStream.prototype.end = function (chunk) { + if (chunk && chunk.length) { + this.write(chunk) + } + this._parser.end() + return true + } + + SAXStream.prototype.on = function (ev, handler) { + var me = this + if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { + me._parser['on' + ev] = function () { + var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) + args.splice(0, 0, ev) + me.emit.apply(me, args) + } + } + + return Stream.prototype.on.call(me, ev, handler) + } + + // this really needs to be replaced with character classes. + // XML allows all manner of ridiculous numbers and digits. + var CDATA = '[CDATA[' + var DOCTYPE = 'DOCTYPE' + var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' + var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' + var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } + + // http://www.w3.org/TR/REC-xml/#NT-NameStartChar + // This implementation works on strings, a single character at a time + // as such, it cannot ever support astral-plane characters (10000-EFFFF) + // without a significant breaking change to either this parser, or the + // JavaScript language. Implementation of an emoji-capable xml parser + // is left as an exercise for the reader. + var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + + var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/ + + function isWhitespace (c) { + return c === ' ' || c === '\n' || c === '\r' || c === '\t' + } + + function isQuote (c) { + return c === '"' || c === '\'' + } + + function isAttribEnd (c) { + return c === '>' || isWhitespace(c) + } + + function isMatch (regex, c) { + return regex.test(c) + } + + function notMatch (regex, c) { + return !isMatch(regex, c) + } + + var S = 0 + sax.STATE = { + BEGIN: S++, // leading byte order mark or whitespace + BEGIN_WHITESPACE: S++, // leading whitespace + TEXT: S++, // general stuff + TEXT_ENTITY: S++, // & and such. + OPEN_WAKA: S++, // < + SGML_DECL: S++, // + SCRIPT: S++, //