diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..a0e7df93 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Set default behavior to automatically convert line endings +* text=auto eol=lf diff --git a/.github/workflows/check-linked-issues.yml b/.github/workflows/check-linked-issues.yml index b15121ad..49e7cc59 100644 --- a/.github/workflows/check-linked-issues.yml +++ b/.github/workflows/check-linked-issues.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest name: Check linked issues steps: - - uses: nearform/github-action-check-linked-issues@v1 + - uses: nearform-actions/github-action-check-linked-issues@v1 id: check-linked-issues with: github-token: ${{ github.token }} diff --git a/.github/workflows/notify-release.yml b/.github/workflows/notify-release.yml index f87c22fe..a4804deb 100644 --- a/.github/workflows/notify-release.yml +++ b/.github/workflows/notify-release.yml @@ -10,6 +10,6 @@ jobs: runs-on: ubuntu-latest steps: - name: Notify release - uses: nearform/github-action-notify-release@v1 + uses: nearform-actions/github-action-notify-release@v1 with: github-token: ${{ github.token }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e2b21ce6..c37ba4a5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,8 +22,8 @@ jobs: - name: Setting action build runtime uses: actions/setup-node@v3 with: - node-version: 16 - - uses: nearform/optic-release-automation-action@v4 + node-version: 20 + - uses: nearform-actions/optic-release-automation-action@v4 with: github-token: ${{ github.token }} semver: ${{ github.event.inputs.semver }} diff --git a/.gitignore b/.gitignore index be1b7832..880e3ecf 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules/ .idea .nyc_output +.tap/ diff --git a/.taprc b/.taprc new file mode 100644 index 00000000..cc244bf6 --- /dev/null +++ b/.taprc @@ -0,0 +1,4 @@ +files: + - test/**/*.test.js + +show-full-coverage: true \ No newline at end of file diff --git a/README.md b/README.md index 9d409dda..0434bc27 100644 --- a/README.md +++ b/README.md @@ -20,24 +20,24 @@ Error: Resource not accessible by integration ## Inputs -| input | required | default | description | +| input | required | default | description | |----------------------------|----------|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `github-token` | No | `${{github.token}}` | A GitHub token. | -| `exclude` | No | | A comma or semicolon separated value of packages that you don't want to auto-merge and would like to manually review to decide whether to upgrade or not. | -| `approve-only` | No | `false` | If `true`, the PR is only approved but not merged. | -| `merge-method` | No | `squash` | The merge method you would like to use (squash, merge, rebase). | -| `merge-comment` | No | `''` | An arbitrary message that you'd like to comment on the PR after it gets auto-merged. This is only useful when you're receiving too much of noise in email and would like to filter mails for PRs that got automatically merged. | -| `use-github-auto-merge` | No | `false` | If `true`, the PR is marked as auto-merge and will be merged by GitHub when status checks are satisfied.

_NOTE_: This feature only works when all of the following conditions are met.
- The repository enables auto-merge.
- The pull request base must have a branch protection rule.
- The pull request's status checks are not yet satisfied.

Refer to [the official document](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request) about GitHub auto-merge. | -| `target` | No | `any` | A flag to only auto-merge updates based on Semantic Versioning.
Possible options are: `major, premajor, minor, preminor, patch, prepatch, prerelease, any`.

For more details on how semantic version difference is calculated please see [semver](https://www.npmjs.com/package/semver) package.

If you set a value other than `any`, PRs that are not semantic version compliant are skipped. An example of a non-semantic version is a commit hash when using git submodules. | -| `pr-number` | No | | A pull request number, only required if triggered from a workflow_dispatch event. Typically this would be triggered by a script running in a separate CI provider. See [Trigger action from workflow_dispatch event](#trigger-action-from-workflow_dispatch-event) example. | -| `skip-commit-verification` | No | `false` | If `true`, then the action will not expect the commits to have a verification signature. It is required to set this to `true` in GitHub Enterprise Server. | -| `skip-verification` | No | `false` | If true, the action will not validate the user or the commit verification status | +| `github-token` | No | `${{github.token}}` | A GitHub token. | +| `exclude` | No | | A comma or semicolon separated value of packages that you don't want to auto-merge and would like to manually review to decide whether to upgrade or not. | +| `approve-only` | No | `false` | If `true`, the PR is only approved but not merged. | +| `merge-method` | No | `squash` | The merge method you would like to use (squash, merge, rebase). | +| `merge-comment` | No | `''` | An arbitrary message that you'd like to comment on the PR after it gets auto-merged. This is only useful when you're receiving too much of noise in email and would like to filter mails for PRs that got automatically merged. | +| `use-github-auto-merge` | No | `false` | If `true`, the PR is marked as auto-merge and will be merged by GitHub when status checks are satisfied.

_NOTE_: This feature only works when all of the following conditions are met.
- The repository enables auto-merge.
- The pull request base must have a branch protection rule.
- The pull request's status checks are not yet satisfied.

Refer to [the official document](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request) about GitHub auto-merge. | +| `target` | No | `any` | A flag to only auto-merge updates based on Semantic Versioning.
Possible options are: `major, premajor, minor, preminor, patch, prepatch, prerelease, any`.

The value of this flag allows for updates for all the matching versions **and lower** with the respect for priority. This means, for example, if the `target` is set to `major` and the update is made to `minor` version the auto-merge will be triggered.

For more details on how semantic version difference is calculated please see [semver](https://www.npmjs.com/package/semver) package.

If you set a value other than `any`, PRs that are not semantic version compliant are skipped. An example of a non-semantic version is a commit hash when using git submodules. | +| `pr-number` | No | | A pull request number, only required if triggered from a workflow_dispatch event. Typically this would be triggered by a script running in a separate CI provider. See [Trigger action from workflow_dispatch event](#trigger-action-from-workflow_dispatch-event) example. | +| `skip-commit-verification` | No | `false` | If `true`, then the action will not expect the commits to have a verification signature. It is required to set this to `true` in GitHub Enterprise Server. | +| `skip-verification` | No | `false` | If true, the action will not validate the user or the commit verification status | ## Output -| outputs | Description | +| outputs | Description | |---------------|---------------| -| merge_status | The result status of the merge. It can be one of the following: `approved`, `merged`, `merge_failed`, `skipped:commit_verification_failed`, `skipped:not_a_dependabot_pr`, `skipped:cannot_update_major`, `skipped:bump_higher_than_target`, `skipped:packaged_excluded`| +| merge_status | The result status of the merge. It can be one of the following: `approved`, `merged`, `merge_failed`, `skipped:commit_verification_failed`, `skipped:not_a_dependabot_pr`, `skipped:cannot_update_major`, `skipped:bump_higher_than_target`, `skipped:packaged_excluded` | ## Examples diff --git a/package-lock.json b/package-lock.json index bfe745cd..dd4db39b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^5.1.1", - "actions-toolkit": "github:nearform/actions-toolkit", - "gitdiff-parser": "^0.3.1", - "semver": "^7.5.4" + "actions-toolkit": "github:nearform/actions-toolkit" }, "devDependencies": { "@vercel/ncc": "^0.38.0", @@ -23,8 +21,8 @@ "husky": "^8.0.3", "prettier": "^3.0.3", "proxyquire": "^2.1.3", - "sinon": "^16.0.0", - "tap": "^18.4.2" + "sinon": "^16.1.0", + "tap": "^18.4.5" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -316,11 +314,12 @@ } }, "node_modules/@npmcli/agent": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.1.1.tgz", - "integrity": "sha512-6RlbiOAi6L6uUYF4/CDEkDZQnKw0XDsFJVrEpnib8rAx2WRMOsUyAdgnvDpX/fdkDWxtqE+NHwF465llI2wR0g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", + "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", "dev": true, "dependencies": { + "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", @@ -794,9 +793,9 @@ "dev": true }, "node_modules/@tapjs/after": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-1.1.6.tgz", - "integrity": "sha512-tZgnrz1o8GLINrCt6XvANXAtTi5p1FsYe82S4NFIJoDva7eA3zZ9V7cCXNxGvc05iulgvT8KPqUpf6gGIGfHiA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-1.1.9.tgz", + "integrity": "sha512-ZK3iJCNzKMzCkkm2hveKfGT8ryn8fQlDMdOwdTrPPrvaS7KtZm2p+dMAEmdRo8N29QFVSeEn4iaRuAiooYQjSQ==", "dev": true, "dependencies": { "is-actual-promise": "^1.0.0" @@ -805,13 +804,13 @@ "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/after-each": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-1.1.6.tgz", - "integrity": "sha512-IOSw7tDWdOCNavuxWjFurkTsfdp0f41GTZz7OLW6d6lObJYy8W2YKWQsFAJrpSCCors/lloCRbBZrhKObNd97w==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-1.1.9.tgz", + "integrity": "sha512-Uy7WpEi49lLe0nUkXJ2oCB7g16DZHtmiALSQSna6zQ1z4Xt+JeHNb0CsFmVjC4qoDPLPbHI9iH2bfPQhEhl5VA==", "dev": true, "dependencies": { "function-loop": "^4.0.0" @@ -820,17 +819,18 @@ "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/asserts": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-1.1.6.tgz", - "integrity": "sha512-uYHIE7iNwyKtdZ3bYiL9WBEFvpQ07z/q/byEppSEbbne39FAlXUIY6GDanP9JmFXQhqrDzf9CVAAbZv/CZb/xA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-1.1.9.tgz", + "integrity": "sha512-klGrnmVIRiZ2FM8Rqo+ON925YilcqzJ5ng7yq5/9pIl6GqEh7j+JWL3xLUDXF0iyewPQLjVQQisCXHfP7evXOA==", "dev": true, "dependencies": { + "@tapjs/stack": "1.2.5", "is-actual-promise": "^1.0.0", - "tcompare": "6.4.1", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0" }, "engines": { @@ -840,13 +840,13 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/before": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-1.1.6.tgz", - "integrity": "sha512-Nr6ScHaHU4ot44aohM5JSfIA3UK+jxyeqMBUwbLeibq66zjoWrXQkcFRpYO7FApBrK4k2d7IKk2X6HVWMxDfgA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-1.1.9.tgz", + "integrity": "sha512-vatuJqZYYqmKD91g3qialxmxTZUTQz18JcRCbZ4tazvIWpCcqj2z7uzqTKS+eYvJQ47cI4O1YtQOVYt15/T8Cg==", "dev": true, "dependencies": { "is-actual-promise": "^1.0.0" @@ -855,13 +855,13 @@ "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/before-each": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-1.1.6.tgz", - "integrity": "sha512-cGjr5IE0AwxddweGMTW6bQQd7gU18VuJiCfhkQGMhTeeZz8Jflg1u/Q/rvP/N6bTTHs7Qz2Xi/rtACws52RJGw==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-1.1.9.tgz", + "integrity": "sha512-9sHMKREnRrI5RLF/BDa1LqpFJYRKYIFm6BeS3TVPk9i3EqVXb2OifuVE7U6+ehMD2nCcFzM4NPd9B90gS3smPA==", "dev": true, "dependencies": { "function-loop": "^4.0.0" @@ -870,18 +870,21 @@ "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/config": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-2.4.2.tgz", - "integrity": "sha512-HUOjSHR9UzHM6VUZVzjgLSEs0TD5ZN41nDIv4zYrR/SuNrSorvPXVt6ikkW2OTRENzwYhQdLgDTEwHlalO6VWA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-2.4.5.tgz", + "integrity": "sha512-qZ0b65wXTGPs3zP3DaVlJI+pXIlm0t2Z1UCA6V+LSHLE4SBgKcaUgHimI0B0oNTI7IqD4ZHLj4Q5FpUksTkoHw==", "dev": true, "dependencies": { + "@tapjs/core": "1.3.9", + "@tapjs/test": "1.3.9", "chalk": "^5.2.0", "jackspeak": "^2.3.6", "polite-json": "^4.0.1", + "tap-yaml": "2.2.0", "walk-up-path": "^3.0.1" }, "engines": { @@ -891,8 +894,8 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6", - "@tapjs/test": "1.3.6" + "@tapjs/core": "1.3.9", + "@tapjs/test": "1.3.9" } }, "node_modules/@tapjs/config/node_modules/chalk": { @@ -908,21 +911,22 @@ } }, "node_modules/@tapjs/core": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-1.3.6.tgz", - "integrity": "sha512-LiLY1l2aj1tk5eo+DDhbW5fZeYq5BeGouwMjJTH/zoQUD7W0SJ+dEIz5zE+wnLKdOft6w3Y8kMGoZ3Qgllax2Q==", + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-1.3.9.tgz", + "integrity": "sha512-Mg4hEXma4HEEbjrOo7QLm4vjtDruGY1hdR9glXpgAnpi+0zla2x53n7OShaWaIAPEuiXtZiDM6UlQUxKuORn0g==", "dev": true, "dependencies": { "@tapjs/processinfo": "^3.1.4", - "@tapjs/stack": "1.2.4", - "@tapjs/test": "1.3.6", + "@tapjs/stack": "1.2.5", + "@tapjs/test": "1.3.9", "async-hook-domain": "^4.0.1", + "diff": "^5.1.0", "is-actual-promise": "^1.0.0", - "jackspeak": "^2.3.6", "minipass": "^7.0.3", "signal-exit": "4.1", "tap-parser": "15.2.0", - "tcompare": "6.4.1", + "tap-yaml": "2.2.0", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0" }, "engines": { @@ -945,14 +949,10 @@ } }, "node_modules/@tapjs/filter": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-1.2.6.tgz", - "integrity": "sha512-pbSC/DenSEojC2vcL3PImmx6dRz775nNPCitcUuQY98EWBJ3MaUEjyGbg0h3qhz3upB7bnKK/+MAjzxX/nbyZw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-1.2.9.tgz", + "integrity": "sha512-qhD3F+8tTSAD3SPyfk0iyoXPVjNDQ2SiA+D7GCLQmeGaaIM+CDVEzJ95IxRME5WLTM2WAye+iJYZ32idC4K7EQ==", "dev": true, - "dependencies": { - "tcompare": "6.4.1", - "trivial-deferred": "^2.0.0" - }, "engines": { "node": ">=16" }, @@ -960,13 +960,13 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/fixture": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-1.2.6.tgz", - "integrity": "sha512-OPejSnqOOAFr9dELkWkIxEZybEldQrrgdkNB4qJfS9+lFHkiV4V5iA01rc4w/1Pcs+0KdHPLROzC+ZlofvD3qg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-1.2.9.tgz", + "integrity": "sha512-RuVogYdY4jXGjQjcyDDlUHNzPFxjMUmDXolY+lGH+UHwVnc9wjATnISQnj1K88pPmOYJ7Tex2Ba54uZIclYW9A==", "dev": true, "dependencies": { "mkdirp": "^3.0.0", @@ -979,7 +979,7 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/fixture/node_modules/brace-expansion": { @@ -1047,30 +1047,30 @@ } }, "node_modules/@tapjs/intercept": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-1.2.6.tgz", - "integrity": "sha512-voydpfbTGmv+QIViJCUCv8CkO0lR7LBfeaE+7UAAu+l0OGUQbKadKsdDAoPXi2nY/KEWwDrZipg2RhZJsQD3Rg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-1.2.9.tgz", + "integrity": "sha512-EAtqzDezqcSQn08vpvzuCCp9tw92mm/8uzkN0NPYYq5lvzD0wXbOiPMGnuYheeQJJkDJpmN/bWCb31GwfC3kfw==", "dev": true, "dependencies": { - "@tapjs/after": "1.1.6", - "@tapjs/stack": "1.2.4" + "@tapjs/after": "1.1.9", + "@tapjs/stack": "1.2.5" }, "engines": { "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/mock": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-1.2.4.tgz", - "integrity": "sha512-MkH58+72xkOOCziKn4aZaCj4+erU7DQGlxrHHOgiiG8daHT0/CjfF6bDUzhhbSt1uopGfNZ8zYYrE/TEOJ0SEQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-1.2.7.tgz", + "integrity": "sha512-y+d6gBrT4VTsrNq8NAL5qUuL7ZQ+XXcnkktCyqp00S7HEmSjgYY9xKcLoC9K677fXrE+8oafgSLxYKHeeuUBrQ==", "dev": true, "dependencies": { - "@tapjs/after": "1.1.6", - "@tapjs/stack": "1.2.4", - "resolve-import": "^1.4.2", + "@tapjs/after": "1.1.9", + "@tapjs/stack": "1.2.5", + "resolve-import": "^1.4.4", "walk-up-path": "^3.0.1" }, "engines": { @@ -1080,16 +1080,18 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/node-serialize": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-1.1.6.tgz", - "integrity": "sha512-66Tmv33lJfNXXKwIHt08vOG2T6zWIbAzIFpXHKy3Tv+bHQa7hwRu6ZIHLAymjDUZAoB+V6mgWf7mzNMU65lxMQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-1.1.9.tgz", + "integrity": "sha512-phbkOJMW1Y6V9/0jrQ3Y9oxUp6+7WZUcIXlcPXXm1WawKDqXxioMi+5isOy1yyTMT0lfwHYR0Ly8soo+3bEuWQ==", "dev": true, "dependencies": { - "@tapjs/error-serdes": "1.1.0" + "@tapjs/error-serdes": "1.1.0", + "@tapjs/stack": "1.2.5", + "tap-parser": "15.2.0" }, "engines": { "node": ">=16" @@ -1098,7 +1100,7 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/processinfo": { @@ -1117,23 +1119,24 @@ } }, "node_modules/@tapjs/reporter": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-1.3.2.tgz", - "integrity": "sha512-Di+i5dabRXdvy0J038o5NIMt4THzswEy1tOa9iZIgbtfl6AQhLVKbsEn/TDSCF2AbEBuueoTs7a3+mAj9x4WLw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-1.3.5.tgz", + "integrity": "sha512-fHjqxSPKCwV+Kb2LoHAP9T1aD779ZiyjRpS8IajjLozeTghofJfF85H3gX+mkWH5Mu82aNhTInT9ECrXjuA2fw==", "dev": true, "dependencies": { - "@tapjs/config": "2.4.2", - "@tapjs/test": "1.3.6", + "@tapjs/config": "2.4.5", + "@tapjs/stack": "1.2.5", "chalk": "^5.2.0", "ink": "^4.4.1", "minipass": "^7.0.3", "ms": "^2.1.3", "patch-console": "^2.0.0", - "prismjs": "^1.29.0", "prismjs-terminal": "^1.2.3", "react": "^18.2.0", "string-length": "^6.0.0", - "tcompare": "6.4.1" + "tap-parser": "15.2.0", + "tap-yaml": "2.2.0", + "tcompare": "6.4.2" }, "engines": { "node": ">=16" @@ -1142,7 +1145,7 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/reporter/node_modules/chalk": { @@ -1164,20 +1167,21 @@ "dev": true }, "node_modules/@tapjs/run": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-1.4.2.tgz", - "integrity": "sha512-TJJ7VuNv/XPS02NlYGGZpP4J93vW8sYgHvg7KR3IntdTrWEqvAPHzBGjymSE100mz7jH6ZTbXIqWkwGjlgAOew==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-1.4.5.tgz", + "integrity": "sha512-NyPLnnEY6cRSC4+LsQGFtgsNnaev5t0Gutza2p0iQTf3pp05kxQ5FZ23ZLgRcuuE4aQ6d9U0NiQid6xfqRfuLA==", "dev": true, "dependencies": { - "@tapjs/after": "1.1.6", - "@tapjs/before": "1.1.6", - "@tapjs/config": "2.4.2", + "@tapjs/after": "1.1.9", + "@tapjs/before": "1.1.9", + "@tapjs/config": "2.4.5", "@tapjs/processinfo": "^3.1.4", - "@tapjs/reporter": "1.3.2", - "@tapjs/spawn": "1.1.6", - "@tapjs/stdin": "1.1.6", - "@tapjs/test": "1.3.6", + "@tapjs/reporter": "1.3.5", + "@tapjs/spawn": "1.1.9", + "@tapjs/stdin": "1.1.9", + "@tapjs/test": "1.3.9", "c8": "^8.0.1", + "chalk": "^5.3.0", "chokidar": "^3.5.3", "foreground-child": "^3.1.1", "glob": "^10.3.10", @@ -1185,15 +1189,14 @@ "mkdirp": "^3.0.1", "opener": "^1.5.2", "pacote": "^17.0.3", - "path-scurry": "^1.9.2", - "resolve-import": "^1.4.2", + "resolve-import": "^1.4.4", "rimraf": "^5.0.5", "semver": "^7.5.4", "signal-exit": "^4.1.0", + "tap-parser": "15.2.0", "tap-yaml": "2.2.0", - "tcompare": "6.4.1", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0", - "ts-node": "npm:@isaacs/ts-node-temp-fork-for-pr-2009@^10.9.1", "which": "^4.0.0" }, "bin": { @@ -1206,7 +1209,7 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/run/node_modules/brace-expansion": { @@ -1218,6 +1221,18 @@ "balanced-match": "^1.0.0" } }, + "node_modules/@tapjs/run/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@tapjs/run/node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -1298,13 +1313,13 @@ } }, "node_modules/@tapjs/snapshot": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-1.2.6.tgz", - "integrity": "sha512-WuWMq4biiKDRnlr5mxEV3SGDrz4ysKpkN9JPAeYC7IR9MdElhvd6CDTF0ySrP3w0spwCK6LfrDFJjLmVCckw5A==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-1.2.9.tgz", + "integrity": "sha512-dplaznN4FfgKruj1NXoZ4f5NQXkoJ+5Q3yL6nFaERCQSYB77YBLvAxYkaOuvIG/JyN0Uie/ntfxRVodBUbeXPg==", "dev": true, "dependencies": { "is-actual-promise": "^1.0.0", - "tcompare": "6.4.1", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0" }, "engines": { @@ -1314,30 +1329,26 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/spawn": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-1.1.6.tgz", - "integrity": "sha512-DuLPcy0ItdFyWbFR/3usUpABTY4Ph/K/RLamUjZ+MRD+GrW+b6vcOwgzm/GCpEKUpIanTJDFz5wdoLhCGMtCZQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-1.1.9.tgz", + "integrity": "sha512-jtoEyJwUSXW9SfLDXovKcRF6hcQmN6SnKCtsjhqXIRcBkLZxbZkHN+yZio4E0yB60ipfenODjJ1DBTwJqCpiaQ==", "dev": true, "engines": { "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/stack": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-1.2.4.tgz", - "integrity": "sha512-pDszoMPff4W8w8aQiV8Ic2jE39ddsij1QlPZYelFxuvub3M6hJVO4apgXY/TFirPvd/jdPHUGkv4vpACKMlPGA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-1.2.5.tgz", + "integrity": "sha512-fJNI6kmqo1FuXzVkQ1cFL5FcWYamiql5lTDbA2VuOkQ7z3/Zoitnq+B9rBf28ltmZYFMsk5lEEW8mlaxvCyHiA==", "dev": true, - "dependencies": { - "tcompare": "6.4.1", - "trivial-deferred": "^2.0.0" - }, "engines": { "node": ">=16" }, @@ -1346,42 +1357,42 @@ } }, "node_modules/@tapjs/stdin": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-1.1.6.tgz", - "integrity": "sha512-6aaWpru+jt/89VZ3PJzbwR0cf9Up7g2hpWc9pO2SGogIZdQ0yIZcFspG6XI19kAPGGN/b8W0YGR2+6gFtcX3jg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-1.1.9.tgz", + "integrity": "sha512-80hwzxEJJtVIxsaVhTZWnBn1Bck3SIiiEWxa8+l/yhaAEl0noI9N5XwzUpn6BHvnUoGsuY+71T2sr9IBF58TBQ==", "dev": true, "engines": { "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/test": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-1.3.6.tgz", - "integrity": "sha512-2OZmwZWnw5aFtcHsSDcyb+IRZk8Ct+ItQLU2R/DBVPRdivQKYaqoKP4YZGcJ0IK9jsALWFRzGJEamULMEN9Rhw==", - "dev": true, - "dependencies": { - "@tapjs/after": "1.1.6", - "@tapjs/after-each": "1.1.6", - "@tapjs/asserts": "1.1.6", - "@tapjs/before": "1.1.6", - "@tapjs/before-each": "1.1.6", - "@tapjs/filter": "1.2.6", - "@tapjs/fixture": "1.2.6", - "@tapjs/intercept": "1.2.6", - "@tapjs/mock": "1.2.4", - "@tapjs/node-serialize": "1.1.6", - "@tapjs/snapshot": "1.2.6", - "@tapjs/spawn": "1.1.6", - "@tapjs/stdin": "1.1.6", - "@tapjs/typescript": "1.2.6", - "@tapjs/worker": "1.1.6", + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-1.3.9.tgz", + "integrity": "sha512-6jmYgUMZF/YA/wpyGvt3K3tAGKszF1mBK6JN2ZSNfL5WwVgrn53vYkV2UipF+LJ/qI0aiOEaTz0GYS0Wyl4SLA==", + "dev": true, + "dependencies": { + "@tapjs/after": "1.1.9", + "@tapjs/after-each": "1.1.9", + "@tapjs/asserts": "1.1.9", + "@tapjs/before": "1.1.9", + "@tapjs/before-each": "1.1.9", + "@tapjs/filter": "1.2.9", + "@tapjs/fixture": "1.2.9", + "@tapjs/intercept": "1.2.9", + "@tapjs/mock": "1.2.7", + "@tapjs/node-serialize": "1.1.9", + "@tapjs/snapshot": "1.2.9", + "@tapjs/spawn": "1.1.9", + "@tapjs/stdin": "1.1.9", + "@tapjs/typescript": "1.2.9", + "@tapjs/worker": "1.1.9", "glob": "^10.3.10", "jackspeak": "^2.3.6", "mkdirp": "^3.0.0", - "resolve-import": "^1.4.1", + "resolve-import": "^1.4.4", "rimraf": "^5.0.5", "sync-content": "^1.0.1", "tap-parser": "15.2.0", @@ -1396,7 +1407,7 @@ "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/test/node_modules/brace-expansion": { @@ -1464,9 +1475,9 @@ } }, "node_modules/@tapjs/typescript": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-1.2.6.tgz", - "integrity": "sha512-bNyLR3jA+m7fORT9S3A2zA0Ww2zNS/k2qJM25qKWot2yKNEriJvb7w/irRVt79ummjyLmVxn+7XjHsNm7dJkRw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-1.2.9.tgz", + "integrity": "sha512-icwSPydeqYJdZMuk1OdTDMLRUg5S76n0HiGMl7XFQ44hbv3Fiqay4KKDp99wmOuZXr4mjhSCQu0hTZrSJ2nRlw==", "dev": true, "dependencies": { "ts-node": "npm:@isaacs/ts-node-temp-fork-for-pr-2009@^10.9.1" @@ -1475,19 +1486,19 @@ "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tapjs/worker": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-1.1.6.tgz", - "integrity": "sha512-OOnpQT7+z9SI85I9xIyzyLwdN82wuY2fuc316pYXZkFBjX7P9CoZISIa4mTLaDKwt8nmyCThktvp3+tnOKREXw==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-1.1.9.tgz", + "integrity": "sha512-JB9/ePuufhjKqwQ4di9JOsLbg59w3agLcZ7BTjcintUZzDJhPBAYVnc5b+9NRGeuwGWgQNTw2XZrg4cJQ6gkSg==", "dev": true, "engines": { "node": ">=16" }, "peerDependencies": { - "@tapjs/core": "1.3.6" + "@tapjs/core": "1.3.9" } }, "node_modules/@tootallnate/once": { @@ -1576,9 +1587,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", - "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==", + "version": "20.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.3.tgz", + "integrity": "sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==", "dev": true, "peer": true }, @@ -1629,11 +1640,11 @@ }, "node_modules/actions-toolkit": { "version": "1.0.0", - "resolved": "git+ssh://git@github.com/nearform/actions-toolkit.git#994e8bf882c0b0fa5cf53fb489e55480db80f8ef", - "integrity": "sha512-B1BNl7EeTpcpsWz5Fg7gjHhpvFAhOFlYUlWEUIQGWt9Yb3+45b6aRwI3LL5wenBEor4K/CIzogNhHEIoBU14KA==", + "resolved": "git+ssh://git@github.com/nearform/actions-toolkit.git#e49ae0606145d17f3f4b11df5fcbe4e9085579fb", + "integrity": "sha512-frYjhtrC8hYU0r1GoZCcace0RdtqVzra/tflCf6OHYXJDR/WDL+lP4shhnuBUrXPWzP7+8VqngUK4f7Pf1mFEw==", "license": "ISC", "dependencies": { - "@actions/core": "^1.10.0" + "@actions/core": "^1.10.1" } }, "node_modules/agent-base": { @@ -2091,9 +2102,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -2294,9 +2305,9 @@ "dev": true }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "node_modules/convert-to-spaces": { @@ -3007,11 +3018,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gitdiff-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gitdiff-parser/-/gitdiff-parser-0.3.1.tgz", - "integrity": "sha512-YQJnY8aew65id8okGxKCksH3efDCJ9HzV7M9rsvd65habf39Pkh4cgYJ27AaoDMqo1X98pgNJhNMrm/kpV7UVQ==" - }, "node_modules/glob": { "version": "7.2.0", "dev": true, @@ -3759,6 +3765,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4280,9 +4287,9 @@ } }, "node_modules/npm-install-checks": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.2.0.tgz", - "integrity": "sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, "dependencies": { "semver": "^7.1.1" @@ -5036,9 +5043,9 @@ } }, "node_modules/resolve-import": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-1.4.2.tgz", - "integrity": "sha512-ayUU3E2yeFu8ZewNEHbGorcPmHjOmCY8b50wloum8eQUuNExSyddRoWYaX0X6lj3XSufi2WUlXY3mkMcF5ISmw==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-1.4.4.tgz", + "integrity": "sha512-+IccDyUypl5rHv25216cXu2m30flEoetrG8p4qDH3RsP53cytedI58Pz+pjCU4PAbxPOQgFkgmxTJLKI9tgf/g==", "dev": true, "dependencies": { "glob": "^10.3.3", @@ -5300,6 +5307,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -5363,9 +5371,9 @@ } }, "node_modules/sinon": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.0.0.tgz", - "integrity": "sha512-B8AaZZm9CT5pqe4l4uWJztfD/mOTa7dL8Qo0W4+s+t74xECOgSZDDQCBjNgIK3+n4kyxQrSTv2V5ul8K25qkiQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.0.tgz", + "integrity": "sha512-ZSgzF0vwmoa8pq0GEynqfdnpEDyP1PkYmEChnkjW0Vyh8IDlyFEJ+fkMhCP0il6d5cJjPl2PUsnUSAuP5sttOQ==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.0", @@ -5482,9 +5490,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/ssri": { @@ -5806,29 +5814,30 @@ } }, "node_modules/tap": { - "version": "18.4.2", - "resolved": "https://registry.npmjs.org/tap/-/tap-18.4.2.tgz", - "integrity": "sha512-QNl0aZTbyYvXfQMe4LZP8aM2ruzOOPciaVq7TEQn7nooKNWSTmmPw7f3pCKKX1/svyZlqmUyF21BpJB9T7w4OQ==", - "dev": true, - "dependencies": { - "@tapjs/after": "1.1.6", - "@tapjs/after-each": "1.1.6", - "@tapjs/asserts": "1.1.6", - "@tapjs/before": "1.1.6", - "@tapjs/before-each": "1.1.6", - "@tapjs/core": "1.3.6", - "@tapjs/filter": "1.2.6", - "@tapjs/fixture": "1.2.6", - "@tapjs/intercept": "1.2.6", - "@tapjs/mock": "1.2.4", - "@tapjs/node-serialize": "1.1.6", - "@tapjs/run": "1.4.2", - "@tapjs/snapshot": "1.2.6", - "@tapjs/spawn": "1.1.6", - "@tapjs/stdin": "1.1.6", - "@tapjs/test": "1.3.6", - "@tapjs/typescript": "1.2.6", - "@tapjs/worker": "1.1.6" + "version": "18.4.5", + "resolved": "https://registry.npmjs.org/tap/-/tap-18.4.5.tgz", + "integrity": "sha512-qVLodpiP0uXduLsrJnfmqP8i//HtUBHnXX4F1JTQMqZsYY+5XKt1F2z2ky7EBIzsI7mcwvH+9tqtluHZsGExRA==", + "dev": true, + "dependencies": { + "@tapjs/after": "1.1.9", + "@tapjs/after-each": "1.1.9", + "@tapjs/asserts": "1.1.9", + "@tapjs/before": "1.1.9", + "@tapjs/before-each": "1.1.9", + "@tapjs/core": "1.3.9", + "@tapjs/filter": "1.2.9", + "@tapjs/fixture": "1.2.9", + "@tapjs/intercept": "1.2.9", + "@tapjs/mock": "1.2.7", + "@tapjs/node-serialize": "1.1.9", + "@tapjs/run": "1.4.5", + "@tapjs/snapshot": "1.2.9", + "@tapjs/spawn": "1.1.9", + "@tapjs/stdin": "1.1.9", + "@tapjs/test": "1.3.9", + "@tapjs/typescript": "1.2.9", + "@tapjs/worker": "1.1.9", + "resolve-import": "^1.4.4" }, "bin": { "tap": "dist/esm/run.mjs" @@ -5932,9 +5941,9 @@ } }, "node_modules/tcompare": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-6.4.1.tgz", - "integrity": "sha512-XsB4u8CpvIZ8dyHgAlnHmW8/PpwZXJodRQ34OP+KUl/BSF07vWU3kPDE0x3rhz5ZaARWT5OyhWBMN55oYqOyPw==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-6.4.2.tgz", + "integrity": "sha512-TmMm1TL4Jg1p7FtnhxF4Sbcc774EpXZCsVAv6PfChXiy8XXwWLmD6hdI+rhwYQtPMFflTPsv8IVSZh0xxj1lXg==", "dev": true, "dependencies": { "diff": "^5.1.0", @@ -6310,14 +6319,14 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" @@ -6581,6 +6590,7 @@ }, "node_modules/yallist": { "version": "4.0.0", + "dev": true, "license": "ISC" }, "node_modules/yaml": { @@ -6901,11 +6911,12 @@ } }, "@npmcli/agent": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.1.1.tgz", - "integrity": "sha512-6RlbiOAi6L6uUYF4/CDEkDZQnKw0XDsFJVrEpnib8rAx2WRMOsUyAdgnvDpX/fdkDWxtqE+NHwF465llI2wR0g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", + "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", "dev": true, "requires": { + "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", @@ -7284,61 +7295,65 @@ "dev": true }, "@tapjs/after": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-1.1.6.tgz", - "integrity": "sha512-tZgnrz1o8GLINrCt6XvANXAtTi5p1FsYe82S4NFIJoDva7eA3zZ9V7cCXNxGvc05iulgvT8KPqUpf6gGIGfHiA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-1.1.9.tgz", + "integrity": "sha512-ZK3iJCNzKMzCkkm2hveKfGT8ryn8fQlDMdOwdTrPPrvaS7KtZm2p+dMAEmdRo8N29QFVSeEn4iaRuAiooYQjSQ==", "dev": true, "requires": { "is-actual-promise": "^1.0.0" } }, "@tapjs/after-each": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-1.1.6.tgz", - "integrity": "sha512-IOSw7tDWdOCNavuxWjFurkTsfdp0f41GTZz7OLW6d6lObJYy8W2YKWQsFAJrpSCCors/lloCRbBZrhKObNd97w==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-1.1.9.tgz", + "integrity": "sha512-Uy7WpEi49lLe0nUkXJ2oCB7g16DZHtmiALSQSna6zQ1z4Xt+JeHNb0CsFmVjC4qoDPLPbHI9iH2bfPQhEhl5VA==", "dev": true, "requires": { "function-loop": "^4.0.0" } }, "@tapjs/asserts": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-1.1.6.tgz", - "integrity": "sha512-uYHIE7iNwyKtdZ3bYiL9WBEFvpQ07z/q/byEppSEbbne39FAlXUIY6GDanP9JmFXQhqrDzf9CVAAbZv/CZb/xA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-1.1.9.tgz", + "integrity": "sha512-klGrnmVIRiZ2FM8Rqo+ON925YilcqzJ5ng7yq5/9pIl6GqEh7j+JWL3xLUDXF0iyewPQLjVQQisCXHfP7evXOA==", "dev": true, "requires": { + "@tapjs/stack": "1.2.5", "is-actual-promise": "^1.0.0", - "tcompare": "6.4.1", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0" } }, "@tapjs/before": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-1.1.6.tgz", - "integrity": "sha512-Nr6ScHaHU4ot44aohM5JSfIA3UK+jxyeqMBUwbLeibq66zjoWrXQkcFRpYO7FApBrK4k2d7IKk2X6HVWMxDfgA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-1.1.9.tgz", + "integrity": "sha512-vatuJqZYYqmKD91g3qialxmxTZUTQz18JcRCbZ4tazvIWpCcqj2z7uzqTKS+eYvJQ47cI4O1YtQOVYt15/T8Cg==", "dev": true, "requires": { "is-actual-promise": "^1.0.0" } }, "@tapjs/before-each": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-1.1.6.tgz", - "integrity": "sha512-cGjr5IE0AwxddweGMTW6bQQd7gU18VuJiCfhkQGMhTeeZz8Jflg1u/Q/rvP/N6bTTHs7Qz2Xi/rtACws52RJGw==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-1.1.9.tgz", + "integrity": "sha512-9sHMKREnRrI5RLF/BDa1LqpFJYRKYIFm6BeS3TVPk9i3EqVXb2OifuVE7U6+ehMD2nCcFzM4NPd9B90gS3smPA==", "dev": true, "requires": { "function-loop": "^4.0.0" } }, "@tapjs/config": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-2.4.2.tgz", - "integrity": "sha512-HUOjSHR9UzHM6VUZVzjgLSEs0TD5ZN41nDIv4zYrR/SuNrSorvPXVt6ikkW2OTRENzwYhQdLgDTEwHlalO6VWA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-2.4.5.tgz", + "integrity": "sha512-qZ0b65wXTGPs3zP3DaVlJI+pXIlm0t2Z1UCA6V+LSHLE4SBgKcaUgHimI0B0oNTI7IqD4ZHLj4Q5FpUksTkoHw==", "dev": true, "requires": { + "@tapjs/core": "1.3.9", + "@tapjs/test": "1.3.9", "chalk": "^5.2.0", "jackspeak": "^2.3.6", "polite-json": "^4.0.1", + "tap-yaml": "2.2.0", "walk-up-path": "^3.0.1" }, "dependencies": { @@ -7351,21 +7366,22 @@ } }, "@tapjs/core": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-1.3.6.tgz", - "integrity": "sha512-LiLY1l2aj1tk5eo+DDhbW5fZeYq5BeGouwMjJTH/zoQUD7W0SJ+dEIz5zE+wnLKdOft6w3Y8kMGoZ3Qgllax2Q==", + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-1.3.9.tgz", + "integrity": "sha512-Mg4hEXma4HEEbjrOo7QLm4vjtDruGY1hdR9glXpgAnpi+0zla2x53n7OShaWaIAPEuiXtZiDM6UlQUxKuORn0g==", "dev": true, "requires": { "@tapjs/processinfo": "^3.1.4", - "@tapjs/stack": "1.2.4", - "@tapjs/test": "1.3.6", + "@tapjs/stack": "1.2.5", + "@tapjs/test": "1.3.9", "async-hook-domain": "^4.0.1", + "diff": "^5.1.0", "is-actual-promise": "^1.0.0", - "jackspeak": "^2.3.6", "minipass": "^7.0.3", "signal-exit": "4.1", "tap-parser": "15.2.0", - "tcompare": "6.4.1", + "tap-yaml": "2.2.0", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0" } }, @@ -7379,19 +7395,16 @@ } }, "@tapjs/filter": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-1.2.6.tgz", - "integrity": "sha512-pbSC/DenSEojC2vcL3PImmx6dRz775nNPCitcUuQY98EWBJ3MaUEjyGbg0h3qhz3upB7bnKK/+MAjzxX/nbyZw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-1.2.9.tgz", + "integrity": "sha512-qhD3F+8tTSAD3SPyfk0iyoXPVjNDQ2SiA+D7GCLQmeGaaIM+CDVEzJ95IxRME5WLTM2WAye+iJYZ32idC4K7EQ==", "dev": true, - "requires": { - "tcompare": "6.4.1", - "trivial-deferred": "^2.0.0" - } + "requires": {} }, "@tapjs/fixture": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-1.2.6.tgz", - "integrity": "sha512-OPejSnqOOAFr9dELkWkIxEZybEldQrrgdkNB4qJfS9+lFHkiV4V5iA01rc4w/1Pcs+0KdHPLROzC+ZlofvD3qg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-1.2.9.tgz", + "integrity": "sha512-RuVogYdY4jXGjQjcyDDlUHNzPFxjMUmDXolY+lGH+UHwVnc9wjATnISQnj1K88pPmOYJ7Tex2Ba54uZIclYW9A==", "dev": true, "requires": { "mkdirp": "^3.0.0", @@ -7441,34 +7454,36 @@ } }, "@tapjs/intercept": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-1.2.6.tgz", - "integrity": "sha512-voydpfbTGmv+QIViJCUCv8CkO0lR7LBfeaE+7UAAu+l0OGUQbKadKsdDAoPXi2nY/KEWwDrZipg2RhZJsQD3Rg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-1.2.9.tgz", + "integrity": "sha512-EAtqzDezqcSQn08vpvzuCCp9tw92mm/8uzkN0NPYYq5lvzD0wXbOiPMGnuYheeQJJkDJpmN/bWCb31GwfC3kfw==", "dev": true, "requires": { - "@tapjs/after": "1.1.6", - "@tapjs/stack": "1.2.4" + "@tapjs/after": "1.1.9", + "@tapjs/stack": "1.2.5" } }, "@tapjs/mock": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-1.2.4.tgz", - "integrity": "sha512-MkH58+72xkOOCziKn4aZaCj4+erU7DQGlxrHHOgiiG8daHT0/CjfF6bDUzhhbSt1uopGfNZ8zYYrE/TEOJ0SEQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-1.2.7.tgz", + "integrity": "sha512-y+d6gBrT4VTsrNq8NAL5qUuL7ZQ+XXcnkktCyqp00S7HEmSjgYY9xKcLoC9K677fXrE+8oafgSLxYKHeeuUBrQ==", "dev": true, "requires": { - "@tapjs/after": "1.1.6", - "@tapjs/stack": "1.2.4", - "resolve-import": "^1.4.2", + "@tapjs/after": "1.1.9", + "@tapjs/stack": "1.2.5", + "resolve-import": "^1.4.4", "walk-up-path": "^3.0.1" } }, "@tapjs/node-serialize": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-1.1.6.tgz", - "integrity": "sha512-66Tmv33lJfNXXKwIHt08vOG2T6zWIbAzIFpXHKy3Tv+bHQa7hwRu6ZIHLAymjDUZAoB+V6mgWf7mzNMU65lxMQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-1.1.9.tgz", + "integrity": "sha512-phbkOJMW1Y6V9/0jrQ3Y9oxUp6+7WZUcIXlcPXXm1WawKDqXxioMi+5isOy1yyTMT0lfwHYR0Ly8soo+3bEuWQ==", "dev": true, "requires": { - "@tapjs/error-serdes": "1.1.0" + "@tapjs/error-serdes": "1.1.0", + "@tapjs/stack": "1.2.5", + "tap-parser": "15.2.0" } }, "@tapjs/processinfo": { @@ -7484,23 +7499,24 @@ } }, "@tapjs/reporter": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-1.3.2.tgz", - "integrity": "sha512-Di+i5dabRXdvy0J038o5NIMt4THzswEy1tOa9iZIgbtfl6AQhLVKbsEn/TDSCF2AbEBuueoTs7a3+mAj9x4WLw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-1.3.5.tgz", + "integrity": "sha512-fHjqxSPKCwV+Kb2LoHAP9T1aD779ZiyjRpS8IajjLozeTghofJfF85H3gX+mkWH5Mu82aNhTInT9ECrXjuA2fw==", "dev": true, "requires": { - "@tapjs/config": "2.4.2", - "@tapjs/test": "1.3.6", + "@tapjs/config": "2.4.5", + "@tapjs/stack": "1.2.5", "chalk": "^5.2.0", "ink": "^4.4.1", "minipass": "^7.0.3", "ms": "^2.1.3", "patch-console": "^2.0.0", - "prismjs": "^1.29.0", "prismjs-terminal": "^1.2.3", "react": "^18.2.0", "string-length": "^6.0.0", - "tcompare": "6.4.1" + "tap-parser": "15.2.0", + "tap-yaml": "2.2.0", + "tcompare": "6.4.2" }, "dependencies": { "chalk": { @@ -7518,20 +7534,21 @@ } }, "@tapjs/run": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-1.4.2.tgz", - "integrity": "sha512-TJJ7VuNv/XPS02NlYGGZpP4J93vW8sYgHvg7KR3IntdTrWEqvAPHzBGjymSE100mz7jH6ZTbXIqWkwGjlgAOew==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-1.4.5.tgz", + "integrity": "sha512-NyPLnnEY6cRSC4+LsQGFtgsNnaev5t0Gutza2p0iQTf3pp05kxQ5FZ23ZLgRcuuE4aQ6d9U0NiQid6xfqRfuLA==", "dev": true, "requires": { - "@tapjs/after": "1.1.6", - "@tapjs/before": "1.1.6", - "@tapjs/config": "2.4.2", + "@tapjs/after": "1.1.9", + "@tapjs/before": "1.1.9", + "@tapjs/config": "2.4.5", "@tapjs/processinfo": "^3.1.4", - "@tapjs/reporter": "1.3.2", - "@tapjs/spawn": "1.1.6", - "@tapjs/stdin": "1.1.6", - "@tapjs/test": "1.3.6", + "@tapjs/reporter": "1.3.5", + "@tapjs/spawn": "1.1.9", + "@tapjs/stdin": "1.1.9", + "@tapjs/test": "1.3.9", "c8": "^8.0.1", + "chalk": "^5.3.0", "chokidar": "^3.5.3", "foreground-child": "^3.1.1", "glob": "^10.3.10", @@ -7539,15 +7556,14 @@ "mkdirp": "^3.0.1", "opener": "^1.5.2", "pacote": "^17.0.3", - "path-scurry": "^1.9.2", - "resolve-import": "^1.4.2", + "resolve-import": "^1.4.4", "rimraf": "^5.0.5", "semver": "^7.5.4", "signal-exit": "^4.1.0", + "tap-parser": "15.2.0", "tap-yaml": "2.2.0", - "tcompare": "6.4.1", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0", - "ts-node": "npm:@isaacs/ts-node-temp-fork-for-pr-2009@^10.9.1", "which": "^4.0.0" }, "dependencies": { @@ -7560,6 +7576,12 @@ "balanced-match": "^1.0.0" } }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, "glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -7609,65 +7631,61 @@ } }, "@tapjs/snapshot": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-1.2.6.tgz", - "integrity": "sha512-WuWMq4biiKDRnlr5mxEV3SGDrz4ysKpkN9JPAeYC7IR9MdElhvd6CDTF0ySrP3w0spwCK6LfrDFJjLmVCckw5A==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-1.2.9.tgz", + "integrity": "sha512-dplaznN4FfgKruj1NXoZ4f5NQXkoJ+5Q3yL6nFaERCQSYB77YBLvAxYkaOuvIG/JyN0Uie/ntfxRVodBUbeXPg==", "dev": true, "requires": { "is-actual-promise": "^1.0.0", - "tcompare": "6.4.1", + "tcompare": "6.4.2", "trivial-deferred": "^2.0.0" } }, "@tapjs/spawn": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-1.1.6.tgz", - "integrity": "sha512-DuLPcy0ItdFyWbFR/3usUpABTY4Ph/K/RLamUjZ+MRD+GrW+b6vcOwgzm/GCpEKUpIanTJDFz5wdoLhCGMtCZQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-1.1.9.tgz", + "integrity": "sha512-jtoEyJwUSXW9SfLDXovKcRF6hcQmN6SnKCtsjhqXIRcBkLZxbZkHN+yZio4E0yB60ipfenODjJ1DBTwJqCpiaQ==", "dev": true, "requires": {} }, "@tapjs/stack": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-1.2.4.tgz", - "integrity": "sha512-pDszoMPff4W8w8aQiV8Ic2jE39ddsij1QlPZYelFxuvub3M6hJVO4apgXY/TFirPvd/jdPHUGkv4vpACKMlPGA==", - "dev": true, - "requires": { - "tcompare": "6.4.1", - "trivial-deferred": "^2.0.0" - } + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-1.2.5.tgz", + "integrity": "sha512-fJNI6kmqo1FuXzVkQ1cFL5FcWYamiql5lTDbA2VuOkQ7z3/Zoitnq+B9rBf28ltmZYFMsk5lEEW8mlaxvCyHiA==", + "dev": true }, "@tapjs/stdin": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-1.1.6.tgz", - "integrity": "sha512-6aaWpru+jt/89VZ3PJzbwR0cf9Up7g2hpWc9pO2SGogIZdQ0yIZcFspG6XI19kAPGGN/b8W0YGR2+6gFtcX3jg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-1.1.9.tgz", + "integrity": "sha512-80hwzxEJJtVIxsaVhTZWnBn1Bck3SIiiEWxa8+l/yhaAEl0noI9N5XwzUpn6BHvnUoGsuY+71T2sr9IBF58TBQ==", "dev": true, "requires": {} }, "@tapjs/test": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-1.3.6.tgz", - "integrity": "sha512-2OZmwZWnw5aFtcHsSDcyb+IRZk8Ct+ItQLU2R/DBVPRdivQKYaqoKP4YZGcJ0IK9jsALWFRzGJEamULMEN9Rhw==", - "dev": true, - "requires": { - "@tapjs/after": "1.1.6", - "@tapjs/after-each": "1.1.6", - "@tapjs/asserts": "1.1.6", - "@tapjs/before": "1.1.6", - "@tapjs/before-each": "1.1.6", - "@tapjs/filter": "1.2.6", - "@tapjs/fixture": "1.2.6", - "@tapjs/intercept": "1.2.6", - "@tapjs/mock": "1.2.4", - "@tapjs/node-serialize": "1.1.6", - "@tapjs/snapshot": "1.2.6", - "@tapjs/spawn": "1.1.6", - "@tapjs/stdin": "1.1.6", - "@tapjs/typescript": "1.2.6", - "@tapjs/worker": "1.1.6", + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-1.3.9.tgz", + "integrity": "sha512-6jmYgUMZF/YA/wpyGvt3K3tAGKszF1mBK6JN2ZSNfL5WwVgrn53vYkV2UipF+LJ/qI0aiOEaTz0GYS0Wyl4SLA==", + "dev": true, + "requires": { + "@tapjs/after": "1.1.9", + "@tapjs/after-each": "1.1.9", + "@tapjs/asserts": "1.1.9", + "@tapjs/before": "1.1.9", + "@tapjs/before-each": "1.1.9", + "@tapjs/filter": "1.2.9", + "@tapjs/fixture": "1.2.9", + "@tapjs/intercept": "1.2.9", + "@tapjs/mock": "1.2.7", + "@tapjs/node-serialize": "1.1.9", + "@tapjs/snapshot": "1.2.9", + "@tapjs/spawn": "1.1.9", + "@tapjs/stdin": "1.1.9", + "@tapjs/typescript": "1.2.9", + "@tapjs/worker": "1.1.9", "glob": "^10.3.10", "jackspeak": "^2.3.6", "mkdirp": "^3.0.0", - "resolve-import": "^1.4.1", + "resolve-import": "^1.4.4", "rimraf": "^5.0.5", "sync-content": "^1.0.1", "tap-parser": "15.2.0", @@ -7719,18 +7737,18 @@ } }, "@tapjs/typescript": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-1.2.6.tgz", - "integrity": "sha512-bNyLR3jA+m7fORT9S3A2zA0Ww2zNS/k2qJM25qKWot2yKNEriJvb7w/irRVt79ummjyLmVxn+7XjHsNm7dJkRw==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-1.2.9.tgz", + "integrity": "sha512-icwSPydeqYJdZMuk1OdTDMLRUg5S76n0HiGMl7XFQ44hbv3Fiqay4KKDp99wmOuZXr4mjhSCQu0hTZrSJ2nRlw==", "dev": true, "requires": { "ts-node": "npm:@isaacs/ts-node-temp-fork-for-pr-2009@^10.9.1" } }, "@tapjs/worker": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-1.1.6.tgz", - "integrity": "sha512-OOnpQT7+z9SI85I9xIyzyLwdN82wuY2fuc316pYXZkFBjX7P9CoZISIa4mTLaDKwt8nmyCThktvp3+tnOKREXw==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-1.1.9.tgz", + "integrity": "sha512-JB9/ePuufhjKqwQ4di9JOsLbg59w3agLcZ7BTjcintUZzDJhPBAYVnc5b+9NRGeuwGWgQNTw2XZrg4cJQ6gkSg==", "dev": true, "requires": {} }, @@ -7807,9 +7825,9 @@ "dev": true }, "@types/node": { - "version": "20.8.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.0.tgz", - "integrity": "sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==", + "version": "20.8.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.3.tgz", + "integrity": "sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==", "dev": true, "peer": true }, @@ -7845,11 +7863,11 @@ "dev": true }, "actions-toolkit": { - "version": "git+ssh://git@github.com/nearform/actions-toolkit.git#994e8bf882c0b0fa5cf53fb489e55480db80f8ef", - "integrity": "sha512-B1BNl7EeTpcpsWz5Fg7gjHhpvFAhOFlYUlWEUIQGWt9Yb3+45b6aRwI3LL5wenBEor4K/CIzogNhHEIoBU14KA==", + "version": "git+ssh://git@github.com/nearform/actions-toolkit.git#e49ae0606145d17f3f4b11df5fcbe4e9085579fb", + "integrity": "sha512-frYjhtrC8hYU0r1GoZCcace0RdtqVzra/tflCf6OHYXJDR/WDL+lP4shhnuBUrXPWzP7+8VqngUK4f7Pf1mFEw==", "from": "actions-toolkit@github:nearform/actions-toolkit", "requires": { - "@actions/core": "^1.10.0" + "@actions/core": "^1.10.1" } }, "agent-base": { @@ -8184,9 +8202,9 @@ "dev": true }, "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true }, "clean-stack": { @@ -8322,9 +8340,9 @@ "dev": true }, "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "convert-to-spaces": { @@ -8821,11 +8839,6 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "gitdiff-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gitdiff-parser/-/gitdiff-parser-0.3.1.tgz", - "integrity": "sha512-YQJnY8aew65id8okGxKCksH3efDCJ9HzV7M9rsvd65habf39Pkh4cgYJ27AaoDMqo1X98pgNJhNMrm/kpV7UVQ==" - }, "glob": { "version": "7.2.0", "dev": true, @@ -9356,6 +9369,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -9753,9 +9767,9 @@ } }, "npm-install-checks": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.2.0.tgz", - "integrity": "sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, "requires": { "semver": "^7.1.1" @@ -10286,9 +10300,9 @@ "dev": true }, "resolve-import": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-1.4.2.tgz", - "integrity": "sha512-ayUU3E2yeFu8ZewNEHbGorcPmHjOmCY8b50wloum8eQUuNExSyddRoWYaX0X6lj3XSufi2WUlXY3mkMcF5ISmw==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-1.4.4.tgz", + "integrity": "sha512-+IccDyUypl5rHv25216cXu2m30flEoetrG8p4qDH3RsP53cytedI58Pz+pjCU4PAbxPOQgFkgmxTJLKI9tgf/g==", "dev": true, "requires": { "glob": "^10.3.3", @@ -10460,6 +10474,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -10500,9 +10515,9 @@ } }, "sinon": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.0.0.tgz", - "integrity": "sha512-B8AaZZm9CT5pqe4l4uWJztfD/mOTa7dL8Qo0W4+s+t74xECOgSZDDQCBjNgIK3+n4kyxQrSTv2V5ul8K25qkiQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.0.tgz", + "integrity": "sha512-ZSgzF0vwmoa8pq0GEynqfdnpEDyP1PkYmEChnkjW0Vyh8IDlyFEJ+fkMhCP0il6d5cJjPl2PUsnUSAuP5sttOQ==", "dev": true, "requires": { "@sinonjs/commons": "^3.0.0", @@ -10596,9 +10611,9 @@ } }, "spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "ssri": { @@ -10815,29 +10830,30 @@ } }, "tap": { - "version": "18.4.2", - "resolved": "https://registry.npmjs.org/tap/-/tap-18.4.2.tgz", - "integrity": "sha512-QNl0aZTbyYvXfQMe4LZP8aM2ruzOOPciaVq7TEQn7nooKNWSTmmPw7f3pCKKX1/svyZlqmUyF21BpJB9T7w4OQ==", - "dev": true, - "requires": { - "@tapjs/after": "1.1.6", - "@tapjs/after-each": "1.1.6", - "@tapjs/asserts": "1.1.6", - "@tapjs/before": "1.1.6", - "@tapjs/before-each": "1.1.6", - "@tapjs/core": "1.3.6", - "@tapjs/filter": "1.2.6", - "@tapjs/fixture": "1.2.6", - "@tapjs/intercept": "1.2.6", - "@tapjs/mock": "1.2.4", - "@tapjs/node-serialize": "1.1.6", - "@tapjs/run": "1.4.2", - "@tapjs/snapshot": "1.2.6", - "@tapjs/spawn": "1.1.6", - "@tapjs/stdin": "1.1.6", - "@tapjs/test": "1.3.6", - "@tapjs/typescript": "1.2.6", - "@tapjs/worker": "1.1.6" + "version": "18.4.5", + "resolved": "https://registry.npmjs.org/tap/-/tap-18.4.5.tgz", + "integrity": "sha512-qVLodpiP0uXduLsrJnfmqP8i//HtUBHnXX4F1JTQMqZsYY+5XKt1F2z2ky7EBIzsI7mcwvH+9tqtluHZsGExRA==", + "dev": true, + "requires": { + "@tapjs/after": "1.1.9", + "@tapjs/after-each": "1.1.9", + "@tapjs/asserts": "1.1.9", + "@tapjs/before": "1.1.9", + "@tapjs/before-each": "1.1.9", + "@tapjs/core": "1.3.9", + "@tapjs/filter": "1.2.9", + "@tapjs/fixture": "1.2.9", + "@tapjs/intercept": "1.2.9", + "@tapjs/mock": "1.2.7", + "@tapjs/node-serialize": "1.1.9", + "@tapjs/run": "1.4.5", + "@tapjs/snapshot": "1.2.9", + "@tapjs/spawn": "1.1.9", + "@tapjs/stdin": "1.1.9", + "@tapjs/test": "1.3.9", + "@tapjs/typescript": "1.2.9", + "@tapjs/worker": "1.1.9", + "resolve-import": "^1.4.4" } }, "tap-parser": { @@ -10909,9 +10925,9 @@ } }, "tcompare": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-6.4.1.tgz", - "integrity": "sha512-XsB4u8CpvIZ8dyHgAlnHmW8/PpwZXJodRQ34OP+KUl/BSF07vWU3kPDE0x3rhz5ZaARWT5OyhWBMN55oYqOyPw==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-6.4.2.tgz", + "integrity": "sha512-TmMm1TL4Jg1p7FtnhxF4Sbcc774EpXZCsVAv6PfChXiy8XXwWLmD6hdI+rhwYQtPMFflTPsv8IVSZh0xxj1lXg==", "dev": true, "requires": { "diff": "^5.1.0", @@ -11170,14 +11186,14 @@ "dev": true }, "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "dependencies": { "@jridgewell/trace-mapping": { @@ -11368,7 +11384,8 @@ "dev": true }, "yallist": { - "version": "4.0.0" + "version": "4.0.0", + "dev": true }, "yaml": { "version": "2.3.2", diff --git a/package.json b/package.json index 4c42a226..5b0c69a3 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "build": "ncc build src/index.js", "lint": "eslint .", - "test": "tap test/**.test.js", + "lint:fix": "eslint . --fix", + "test": "tap", "prepare": "husky install" }, "author": { @@ -28,9 +29,7 @@ "dependencies": { "@actions/core": "^1.10.1", "@actions/github": "^5.1.1", - "actions-toolkit": "github:nearform/actions-toolkit", - "gitdiff-parser": "^0.3.1", - "semver": "^7.5.4" + "actions-toolkit": "github:nearform/actions-toolkit" }, "devDependencies": { "@vercel/ncc": "^0.38.0", @@ -40,7 +39,7 @@ "husky": "^8.0.3", "prettier": "^3.0.3", "proxyquire": "^2.1.3", - "sinon": "^16.0.0", - "tap": "^18.4.2" + "sinon": "^16.1.0", + "tap": "^18.4.5" } } diff --git a/test/action.test.js b/test/action.test.js index 68fabf59..9a0371ad 100644 --- a/test/action.test.js +++ b/test/action.test.js @@ -774,3 +774,38 @@ tap.test('should forbid when update type is not valid', async () => { MERGE_STATUS.skippedInvalidVersion, ) }) + +tap.test('should allow minor when target is major', async () => { + const PR_NUMBER = Math.random() + + const { action, stubs } = buildStubbedAction({ + payload: { + pull_request: { + number: PR_NUMBER, + user: { login: BOT_NAME }, + }, + }, + inputs: { + PR_NUMBER, + target: 'major', + }, + dependabotMetadata: createDependabotMetadata({ + updateType: updateTypes.minor, + }), + }) + + await action() + + sinon.assert.calledWithExactly( + stubs.logStub.logInfo, + 'Dependabot merge completed' + ) + sinon.assert.notCalled(stubs.coreStub.setFailed) + sinon.assert.calledOnce(stubs.approveStub) + sinon.assert.calledOnce(stubs.mergeStub) + sinon.assert.calledWith( + stubs.coreStub.setOutput, + MERGE_STATUS_KEY, + MERGE_STATUS.merged + ) +}) diff --git a/test/log.test.js b/test/log.test.js index 86388df8..47836057 100644 --- a/test/log.test.js +++ b/test/log.test.js @@ -9,7 +9,7 @@ const coreStubs = { info: sinon.stub(), warning: sinon.stub(), } -const log = tap.mock('../src/log', { +const log = tap.mockRequire('../src/log', { '@actions/core': coreStubs, }) diff --git a/test/util.test.js b/test/util.test.js index a3beb461..5931cd0f 100644 --- a/test/util.test.js +++ b/test/util.test.js @@ -1,9 +1,16 @@ 'use strict' const tap = require('tap') -const { - getInputs, - parseCommaOrSemicolonSeparatedValue, -} = require('../src/util') +const sinon = require('sinon') + +const logWarningStub = sinon.stub() +const { getInputs, parseCommaOrSemicolonSeparatedValue } = tap.mockRequire( + '../src/util', + { + '../src/log.js': { + logWarning: logWarningStub, + }, + } +) tap.test('parseCommaOrSemicolonSeparatedValue', async t => { t.test('should split semicolon separated values correctly', async t => { @@ -55,10 +62,16 @@ tap.test('getInputs', async t => { t.test('MERGE_METHOD', async t => { t.equal(getInputs({}).MERGE_METHOD, 'squash') t.equal(getInputs({ 'merge-method': 'merge' }).MERGE_METHOD, 'merge') + t.equal(logWarningStub.callCount, 0) t.equal( getInputs({ 'merge-method': 'invalid-merge-method' }).MERGE_METHOD, 'squash', ) + t.equal(logWarningStub.callCount, 1) + t.equal( + logWarningStub.firstCall.args[0], + 'merge-method input is ignored because it is malformed, defaulting to `squash`.' + ) }) t.test('EXCLUDE_PKGS', async t => { t.same(getInputs({ exclude: 'react,vue' }).EXCLUDE_PKGS, [