From 34d714c4ec29e8a30ceeadd0b7b678ff0c7fa9c9 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 18 May 2023 16:29:18 -0500 Subject: [PATCH 01/14] chore: remove gather from CRSF_TRUSTED_ORIGINS (#5657) --- ietf/settings.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ietf/settings.py b/ietf/settings.py index 00e7f292f..092898abe 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -315,7 +315,12 @@ UTILS_LOGGER_LEVELS: Dict[str, str] = { X_FRAME_OPTIONS = 'SAMEORIGIN' -CSRF_TRUSTED_ORIGINS = ['ietf.org', '*.ietf.org', 'meetecho.com', '*.meetecho.com', 'gather.town', '*.gather.town', ] +CSRF_TRUSTED_ORIGINS = [ + 'ietf.org', + '*.ietf.org', + 'meetecho.com', + '*.meetecho.com', +] CSRF_COOKIE_SAMESITE = 'None' CSRF_COOKIE_SECURE = True From d0f8e1148af0255e02f97c0ea2b065156915bf11 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 18 May 2023 16:29:30 -0500 Subject: [PATCH 02/14] chore: keep csp config in sync with production configuration (#5656) --- ietf/settings.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ietf/settings.py b/ietf/settings.py index 092898abe..7934a42a7 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -537,7 +537,9 @@ IDNITS_BASE_URL = "https://author-tools.ietf.org/api/idnits" IDNITS_SERVICE_URL = "https://author-tools.ietf.org/idnits" # Content security policy configuration (django-csp) -CSP_DEFAULT_SRC = ("'self'", "'unsafe-inline'", f"data: {IDTRACKER_BASE_URL} https://www.ietf.org/ https://analytics.ietf.org/ https://fonts.googleapis.com/") +# (In current production, the Content-Security-Policy header is completely set by nginx configuration, but +# we try to keep this in sync to avoid confusion) +CSP_DEFAULT_SRC = ("'self'", "'unsafe-inline'", f"data: {IDTRACKER_BASE_URL} http://ietf.org/ https://www.ietf.org/ https://analytics.ietf.org/ https://static.ietf.org") # The name of the method to use to invoke the test suite TEST_RUNNER = 'ietf.utils.test_runner.IetfTestRunner' From 23ca7a90bc364e7054059f59268f26582669f086 Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Fri, 19 May 2023 02:47:27 -0400 Subject: [PATCH 03/14] ci: add environments to build workflow --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ff72b246a..a2ac8bd7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -450,6 +450,8 @@ jobs: if: ${{ !failure() && !cancelled() && github.event.inputs.sandbox == 'true' }} needs: [prepare, release] runs-on: [self-hosted, dev-server] + environment: + name: sandbox env: PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} @@ -485,6 +487,9 @@ jobs: if: ${{ !failure() && !cancelled() && github.event.inputs.legacySandbox == 'true' }} needs: [prepare, release] runs-on: [self-hosted, legacy-sandbox-server] + environment: + name: legacy-sandbox + url: "https://sandbox.ietf.org" env: PKG_VERSION: ${{needs.prepare.outputs.pkg_version}} From 40765d878f3a527ea015bc33a77d3476e4d7697e Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 22 May 2023 13:28:58 -0500 Subject: [PATCH 04/14] chore: adjust to DNS changes for yangcatalog (#5666) --- bin/daily | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/daily b/bin/daily index 2835a93cc..c65ab5604 100755 --- a/bin/daily +++ b/bin/daily @@ -34,7 +34,7 @@ $DTDIR/ietf/manage.py update_external_command_info rsync -avzq --delete /a/www/ietf-ftp/iana/yang-parameters/ /a/www/ietf-ftp/yang/ianamod/ # Get Yang models from Yangcatalog. -rsync -avzq rsync://yangcatalog.org:10873/yangdeps /a/www/ietf-ftp/yang/catalogmod/ +rsync -avzq rsync://rsync.yangcatalog.org:10873/yangdeps /a/www/ietf-ftp/yang/catalogmod/ # Populate the yang repositories $DTDIR/ietf/manage.py populate_yang_model_dirs -v0 From 6178519d43587f3a31bff4dee8845a3caf05623c Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 23 May 2023 10:14:13 -0500 Subject: [PATCH 05/14] fix: optimize queries for DocumentChangesFeed (#5675) --- ietf/doc/feeds.py | 2 +- ietf/doc/utils.py | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ietf/doc/feeds.py b/ietf/doc/feeds.py index 7885e75e3..92871efc3 100644 --- a/ietf/doc/feeds.py +++ b/ietf/doc/feeds.py @@ -45,7 +45,7 @@ class DocumentChangesFeed(Feed): return "History of change entries for %s." % obj.display_name() def items(self, obj): - events = obj.docevent_set.all().order_by("-time","-id") + events = obj.docevent_set.all().order_by("-time","-id").select_related("by", "newrevisiondocevent", "submissiondocevent") augment_events_with_revision(obj, events) return events diff --git a/ietf/doc/utils.py b/ietf/doc/utils.py index 14dfb9513..b2e65066a 100644 --- a/ietf/doc/utils.py +++ b/ietf/doc/utils.py @@ -17,6 +17,7 @@ from zoneinfo import ZoneInfo from django.conf import settings from django.contrib import messages +from django.db.models import QuerySet from django.forms import ValidationError from django.http import Http404 from django.template.loader import render_to_string @@ -344,11 +345,18 @@ def augment_events_with_revision(doc, events): """Take a set of events for doc and add a .rev attribute with the revision they refer to by checking NewRevisionDocEvents.""" - event_revisions = list(NewRevisionDocEvent.objects.filter(doc=doc).order_by('time', 'id').values('id', 'rev', 'time')) + if isinstance(events, QuerySet): + qs = events.filter(newrevisiondocevent__isnull=False) + else: + qs = NewRevisionDocEvent.objects.filter(doc=doc) + event_revisions = list(qs.order_by('time', 'id').values('id', 'rev', 'time')) if doc.type_id == "draft" and doc.get_state_slug() == "rfc": # add fake "RFC" revision - e = doc.latest_event(type="published_rfc") + if isinstance(events, QuerySet): + e = events.filter(type="published_rfc").order_by('time').last() + else: + e = doc.latest_event(type="published_rfc") if e: event_revisions.append(dict(id=e.id, time=e.time, rev="RFC")) event_revisions.sort(key=lambda x: (x["time"], x["id"])) From ce3774dbdbd0011bcf149a053620012208a52f1f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 15:10:50 -0400 Subject: [PATCH 06/14] chore(deps): Bump slackapi/slack-github-action from 1.23.0 to 1.24.0 (#5674) Bumps [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) from 1.23.0 to 1.24.0. - [Release notes](https://github.com/slackapi/slack-github-action/releases) - [Commits](https://github.com/slackapi/slack-github-action/compare/v1.23.0...v1.24.0) --- updated-dependencies: - dependency-name: slackapi/slack-github-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a2ac8bd7a..1b73dbec1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -397,7 +397,7 @@ jobs: steps: - name: Notify on Slack (Success) if: ${{ !contains(join(needs.*.result, ','), 'failure') }} - uses: slackapi/slack-github-action@v1.23.0 + uses: slackapi/slack-github-action@v1.24.0 with: channel-id: ${{ secrets.SLACK_GH_BUILDS_CHANNEL_ID }} payload: | @@ -420,7 +420,7 @@ jobs: SLACK_BOT_TOKEN: ${{ secrets.SLACK_GH_BOT }} - name: Notify on Slack (Failure) if: ${{ contains(join(needs.*.result, ','), 'failure') }} - uses: slackapi/slack-github-action@v1.23.0 + uses: slackapi/slack-github-action@v1.24.0 with: channel-id: ${{ secrets.SLACK_GH_BUILDS_CHANNEL_ID }} payload: | From b0c27a7abc85aba3bd44965db78ff30cc4a0bc05 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 15:11:22 -0400 Subject: [PATCH 07/14] chore(deps): Bump codecov/codecov-action from 3.1.3 to 3.1.4 (#5673) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.3...v3.1.4) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- .github/workflows/ci-run-tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b73dbec1..6b112ba62 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -144,7 +144,7 @@ jobs: coverage xml - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v3.1.3 + uses: codecov/codecov-action@v3.1.4 with: files: coverage.xml diff --git a/.github/workflows/ci-run-tests.yml b/.github/workflows/ci-run-tests.yml index caabc7511..e8e9fe324 100644 --- a/.github/workflows/ci-run-tests.yml +++ b/.github/workflows/ci-run-tests.yml @@ -49,7 +49,7 @@ jobs: coverage xml - name: Upload Coverage Results to Codecov - uses: codecov/codecov-action@v3.1.3 + uses: codecov/codecov-action@v3.1.4 with: files: coverage.xml From 8e5adb99a369497cc3c30e00c7fa5cdacd701ca9 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Wed, 24 May 2023 09:50:10 -0500 Subject: [PATCH 08/14] chore(deps): update all npm dependencies for dev/coverage-action (#5671) Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> --- dev/coverage-action/package-lock.json | 442 +++++++++++++++++++++----- dev/coverage-action/package.json | 2 +- 2 files changed, 366 insertions(+), 78 deletions(-) diff --git a/dev/coverage-action/package-lock.json b/dev/coverage-action/package-lock.json index 15feb073e..3ef28a7ae 100644 --- a/dev/coverage-action/package-lock.json +++ b/dev/coverage-action/package-lock.json @@ -22,7 +22,7 @@ "eslint-plugin-import": "2.27.5", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", - "npm-check-updates": "16.10.8" + "npm-check-updates": "16.10.12" } }, "node_modules/@actions/core": { @@ -158,6 +158,73 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz", @@ -466,6 +533,16 @@ "@octokit/openapi-types": "^11.2.0" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pnpm/config.env-replace": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.0.0.tgz", @@ -2229,6 +2306,34 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -3200,6 +3305,24 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jju": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", @@ -3934,9 +4057,9 @@ } }, "node_modules/npm-check-updates": { - "version": "16.10.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.8.tgz", - "integrity": "sha512-e+p3rUCvaU0iKOvi+/Xiyx+mLe9/aRTu9Zrc7+TR6H2q+uFgmXEwqbXYN9Ngqsta8gdTjpn751UD5MEOogO5cA==", + "version": "16.10.12", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.12.tgz", + "integrity": "sha512-js/Gg9+5RTyOQZnmFcPswLxf4sK/H5AE/8bl4tkleLJTC1gXhQqqELUFwXqppNvx488aXxN52ZY9k9MSSvEW2A==", "dev": true, "dependencies": { "chalk": "^5.2.0", @@ -3953,7 +4076,7 @@ "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^8.0.3", + "minimatch": "^9.0.0", "p-map": "^4.0.0", "pacote": "15.1.1", "parse-github-url": "^1.0.2", @@ -3961,8 +4084,8 @@ "prompts-ncu": "^3.0.0", "rc-config-loader": "^4.1.2", "remote-git-tags": "^3.0.0", - "rimraf": "^4.4.1", - "semver": "^7.3.8", + "rimraf": "^5.0.0", + "semver": "^7.4.0", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", @@ -4000,15 +4123,19 @@ } }, "node_modules/npm-check-updates/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", + "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -4018,9 +4145,9 @@ } }, "node_modules/npm-check-updates/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -4033,21 +4160,21 @@ } }, "node_modules/npm-check-updates/node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm-check-updates/node_modules/rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", "dev": true, "dependencies": { - "glob": "^9.2.0" + "glob": "^10.2.5" }, "bin": { "rimraf": "dist/cjs/src/bin.js" @@ -4513,13 +4640,13 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", + "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", "dev": true, "dependencies": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -4529,21 +4656,21 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.0.3.tgz", - "integrity": "sha512-cyjNRew29d4kbgnz1sjDqxg7qg8NW4s+HQzCGjeon7DV5T2yDije16W9HaUFV1dhVEMh+SjrOcK0TomBmf3Egg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", "dev": true, "engines": { "node": "14 || >=16.14" } }, "node_modules/path-scurry/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/path-type": { @@ -5040,9 +5167,9 @@ "optional": true }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5384,6 +5511,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -5440,6 +5582,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -5986,6 +6141,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -6198,6 +6371,54 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, "@mapbox/node-pre-gyp": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz", @@ -6448,6 +6669,13 @@ "@octokit/openapi-types": "^11.2.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@pnpm/config.env-replace": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.0.0.tgz", @@ -7748,6 +7976,24 @@ "is-callable": "^1.1.3" } }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "dev": true + } + } + }, "form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -8433,6 +8679,16 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jju": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", @@ -8987,9 +9243,9 @@ } }, "npm-check-updates": { - "version": "16.10.8", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.8.tgz", - "integrity": "sha512-e+p3rUCvaU0iKOvi+/Xiyx+mLe9/aRTu9Zrc7+TR6H2q+uFgmXEwqbXYN9Ngqsta8gdTjpn751UD5MEOogO5cA==", + "version": "16.10.12", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.10.12.tgz", + "integrity": "sha512-js/Gg9+5RTyOQZnmFcPswLxf4sK/H5AE/8bl4tkleLJTC1gXhQqqELUFwXqppNvx488aXxN52ZY9k9MSSvEW2A==", "dev": true, "requires": { "chalk": "^5.2.0", @@ -9006,7 +9262,7 @@ "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "lodash": "^4.17.21", - "minimatch": "^8.0.3", + "minimatch": "^9.0.0", "p-map": "^4.0.0", "pacote": "15.1.1", "parse-github-url": "^1.0.2", @@ -9014,8 +9270,8 @@ "prompts-ncu": "^3.0.0", "rc-config-loader": "^4.1.2", "remote-git-tags": "^3.0.0", - "rimraf": "^4.4.1", - "semver": "^7.3.8", + "rimraf": "^5.0.0", + "semver": "^7.4.0", "semver-utils": "^1.1.4", "source-map-support": "^0.5.21", "spawn-please": "^2.0.1", @@ -9040,39 +9296,40 @@ "dev": true }, "glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", + "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" } }, "minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true }, "rimraf": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", - "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", + "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", "dev": true, "requires": { - "glob": "^9.2.0" + "glob": "^10.2.5" } }, "strip-json-comments": { @@ -9412,25 +9669,25 @@ "dev": true }, "path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", + "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", "dev": true, "requires": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1", + "minipass": "^5.0.0 || ^6.0.2" }, "dependencies": { "lru-cache": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.0.3.tgz", - "integrity": "sha512-cyjNRew29d4kbgnz1sjDqxg7qg8NW4s+HQzCGjeon7DV5T2yDije16W9HaUFV1dhVEMh+SjrOcK0TomBmf3Egg==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", "dev": true }, "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "dev": true } } @@ -9766,9 +10023,9 @@ "optional": true }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "requires": { "lru-cache": "^6.0.0" } @@ -10030,6 +10287,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -10071,6 +10339,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -10523,6 +10800,17 @@ } } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/dev/coverage-action/package.json b/dev/coverage-action/package.json index 05ceac94d..289ce9dfb 100644 --- a/dev/coverage-action/package.json +++ b/dev/coverage-action/package.json @@ -19,6 +19,6 @@ "eslint-plugin-import": "2.27.5", "eslint-plugin-node": "11.1.0", "eslint-plugin-promise": "6.1.1", - "npm-check-updates": "16.10.8" + "npm-check-updates": "16.10.12" } } From 04fbb8cff3f2ca3ef74ca65090b21707d74f54eb Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Wed, 24 May 2023 09:50:24 -0500 Subject: [PATCH 09/14] chore(deps): update all npm dependencies for dev/del-old-packages (#5669) Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com> --- dev/del-old-packages/package-lock.json | 14 +++++++------- dev/del-old-packages/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dev/del-old-packages/package-lock.json b/dev/del-old-packages/package-lock.json index f40c8036d..682d088ff 100644 --- a/dev/del-old-packages/package-lock.json +++ b/dev/del-old-packages/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@octokit/core": "^4.2.0", + "@octokit/core": "^4.2.1", "luxon": "^3.3.0" } }, @@ -25,9 +25,9 @@ } }, "node_modules/@octokit/core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", - "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz", + "integrity": "sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==", "dependencies": { "@octokit/auth-token": "^3.0.0", "@octokit/graphql": "^5.0.0", @@ -215,9 +215,9 @@ } }, "@octokit/core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", - "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz", + "integrity": "sha512-tEDxFx8E38zF3gT7sSMDrT1tGumDgsw5yPG6BBh/X+5ClIQfMH/Yqocxz1PnHx6CHyF6pxmovUTOfZAUvQ0Lvw==", "requires": { "@octokit/auth-token": "^3.0.0", "@octokit/graphql": "^5.0.0", diff --git a/dev/del-old-packages/package.json b/dev/del-old-packages/package.json index f141a4e11..068b56961 100644 --- a/dev/del-old-packages/package.json +++ b/dev/del-old-packages/package.json @@ -10,7 +10,7 @@ "author": "", "license": "ISC", "dependencies": { - "@octokit/core": "^4.2.0", + "@octokit/core": "^4.2.1", "luxon": "^3.3.0" } } From 65bd689daa6f418f0cf5e8cd55ccfff0f9d6a845 Mon Sep 17 00:00:00 2001 From: Paul Selkirk Date: Wed, 24 May 2023 11:26:19 -0400 Subject: [PATCH 10/14] fix: make chat room an overrideable property of Session (#5681) * fix: make chat room an overrideable property of Session * test: validate that /meeting/session//edit shows and sets chat room * test: validate Session.chat_room_name --- ietf/meeting/admin.py | 2 +- ietf/meeting/forms.py | 2 +- .../migrations/0004_session_chat_room.py | 18 ++++++++++++++++++ ietf/meeting/models.py | 6 +++++- ietf/meeting/tests_models.py | 8 ++++++++ ietf/meeting/tests_views.py | 2 ++ 6 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 ietf/meeting/migrations/0004_session_chat_room.py diff --git a/ietf/meeting/admin.py b/ietf/meeting/admin.py index 8c419e8a9..e975dd38a 100644 --- a/ietf/meeting/admin.py +++ b/ietf/meeting/admin.py @@ -97,7 +97,7 @@ class SchedulingEventInline(admin.TabularInline): class SessionAdmin(admin.ModelAdmin): list_display = [ - "meeting", "name", "group_acronym", "purpose", "attendees", "has_onsite_tool", "requested", "current_status" + "meeting", "name", "group_acronym", "purpose", "attendees", "has_onsite_tool", "chat_room", "requested", "current_status" ] list_filter = ["purpose", "meeting", ] raw_id_fields = ["meeting", "group", "materials", "joint_with_groups", "tombstone_for"] diff --git a/ietf/meeting/forms.py b/ietf/meeting/forms.py index f3f660b2f..822f56b97 100644 --- a/ietf/meeting/forms.py +++ b/ietf/meeting/forms.py @@ -744,7 +744,7 @@ class SessionDetailsForm(forms.ModelForm): model = Session fields = ( 'purpose', 'name', 'short', 'type', 'requested_duration', - 'on_agenda', 'agenda_note', 'has_onsite_tool', 'remote_instructions', + 'on_agenda', 'agenda_note', 'has_onsite_tool', 'chat_room', 'remote_instructions', 'attendees', 'comments', ) labels = {'requested_duration': 'Length'} diff --git a/ietf/meeting/migrations/0004_session_chat_room.py b/ietf/meeting/migrations/0004_session_chat_room.py new file mode 100644 index 000000000..9879c8c42 --- /dev/null +++ b/ietf/meeting/migrations/0004_session_chat_room.py @@ -0,0 +1,18 @@ +# Copyright The IETF Trust 2023, All Rights Reserved + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('meeting', '0003_populate_session_has_onsite_tool'), + ] + + operations = [ + migrations.AddField( + model_name='session', + name='chat_room', + field=models.CharField(blank=True, help_text='Name of Zulip stream, if different from group acronym', max_length=32), + ), + ] diff --git a/ietf/meeting/models.py b/ietf/meeting/models.py index a65271162..31a887e46 100644 --- a/ietf/meeting/models.py +++ b/ietf/meeting/models.py @@ -1052,6 +1052,7 @@ class Session(models.Model): remote_instructions = models.CharField(blank=True,max_length=1024) on_agenda = models.BooleanField(default=True, help_text='Is this session visible on the meeting agenda?') has_onsite_tool = models.BooleanField(default=False, help_text="Does this session use the officially supported onsite and remote tooling?") + chat_room = models.CharField(blank=True, max_length=32, help_text='Name of Zulip stream, if different from group acronym') tombstone_for = models.ForeignKey('Session', blank=True, null=True, help_text="This session is the tombstone for a session that was rescheduled", on_delete=models.CASCADE) @@ -1285,7 +1286,10 @@ class Session(models.Model): return self._agenda_file def chat_room_name(self): - if self.type_id=='plenary': + if self.chat_room: + return self.chat_room + # At some point, add a migration to add "plenary" chat room name to existing sessions in the database. + elif self.type_id=='plenary': return 'plenary' else: return self.group_at_the_time().acronym diff --git a/ietf/meeting/tests_models.py b/ietf/meeting/tests_models.py index 2603190fe..0ccd46271 100644 --- a/ietf/meeting/tests_models.py +++ b/ietf/meeting/tests_models.py @@ -138,3 +138,11 @@ class SessionTests(TestCase): self.assertEqual(session_with_jabber.chat_archive_url(), 'https://www.ietf.org/jabber/logs/fakeacronym?C=M;O=D') chatlog = SessionPresentationFactory(session=session_with_jabber, document__type_id='chatlog').document self.assertEqual(session_with_jabber.chat_archive_url(), chatlog.get_href()) + + def test_chat_room_name(self): + session = SessionFactory(group__acronym='xyzzy') + self.assertEqual(session.chat_room_name(), 'xyzzy') + session.type_id = 'plenary' + self.assertEqual(session.chat_room_name(), 'plenary') + session.chat_room = 'fnord' + self.assertEqual(session.chat_room_name(), 'fnord') diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 449ad03a3..e65adaf0c 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -3975,6 +3975,7 @@ class EditTests(TestCase): 'remote_instructions': 'Do this do that', 'attendees': '103', 'comments': 'So much to say', + 'chat_room': 'xyzzy', } r = self.client.post(url, post_data) self.assertNoFormPostErrors(r) @@ -3989,6 +3990,7 @@ class EditTests(TestCase): self.assertEqual(session.remote_instructions, 'Do this do that') self.assertEqual(session.attendees, 103) self.assertEqual(session.comments, 'So much to say') + self.assertEqual(session.chat_room, 'xyzzy') # Verify return to correct schedule when sched query parameter is present other_schedule = ScheduleFactory(meeting=session.meeting) From 66f1ba30886389f7178790731d3d96a8c925c51d Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 25 May 2023 08:28:13 -0500 Subject: [PATCH 11/14] fix: reflect publication of rfc9389 (#5685) --- ietf/nomcom/tests.py | 2 +- ietf/nomcom/utils.py | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/ietf/nomcom/tests.py b/ietf/nomcom/tests.py index 8e915b74d..805f1ab74 100644 --- a/ietf/nomcom/tests.py +++ b/ietf/nomcom/tests.py @@ -2599,7 +2599,7 @@ class rfc8989EligibilityTests(TestCase): self.assertEqual(set(list_eligible(nomcom=nomcom)),set(eligible)) Person.objects.filter(pk__in=[p.pk for p in eligible.union(ineligible)]).delete() -class rfc8989bisEligibilityTests(TestCase): +class rfc9389EligibilityTests(TestCase): def setUp(self): super().setUp() diff --git a/ietf/nomcom/utils.py b/ietf/nomcom/utils.py index 4c91bfd1d..d666ed816 100644 --- a/ietf/nomcom/utils.py +++ b/ietf/nomcom/utils.py @@ -513,7 +513,7 @@ def list_eligible(nomcom=None, date=None, base_qs=None): elif eligibility_date.year in (2021,2022): return list_eligible_8989(date=eligibility_date, base_qs=base_qs) elif eligibility_date.year > 2022: - return list_eligible_8989bis(date=eligibility_date, base_qs=base_qs) + return list_eligible_9389(date=eligibility_date, base_qs=base_qs) else: return Person.objects.none() @@ -551,8 +551,8 @@ def list_eligible_8788(date, base_qs=None): def get_8989_eligibility_querysets(date, base_qs): return get_threerule_eligibility_querysets(date, base_qs, three_of_five_callable=three_of_five_eligible_8713) -def get_8989bis_eligibility_querysets(date, base_qs): - return get_threerule_eligibility_querysets(date, base_qs, three_of_five_callable=three_of_five_eligible_8989bis) +def get_9389_eligibility_querysets(date, base_qs): + return get_threerule_eligibility_querysets(date, base_qs, three_of_five_callable=three_of_five_eligible_9389) def get_threerule_eligibility_querysets(date, base_qs, three_of_five_callable): if not base_qs: @@ -605,10 +605,10 @@ def list_eligible_8989(date, base_qs=None): author_pks = author_qs.values_list('pk',flat=True) return remove_disqualified(Person.objects.filter(pk__in=set(three_of_five_pks).union(set(officer_pks)).union(set(author_pks)))) -def list_eligible_8989bis(date, base_qs=None): +def list_eligible_9389(date, base_qs=None): if not base_qs: base_qs = Person.objects.all() - three_of_five_qs, officer_qs, author_qs = get_8989bis_eligibility_querysets(date, base_qs) + three_of_five_qs, officer_qs, author_qs = get_9389_eligibility_querysets(date, base_qs) three_of_five_pks = three_of_five_qs.values_list('pk',flat=True) officer_pks = officer_qs.values_list('pk',flat=True) author_pks = author_qs.values_list('pk',flat=True) @@ -653,12 +653,11 @@ def three_of_five_eligible_8713(previous_five, queryset=None): queryset = Person.objects.all() return queryset.filter(meetingregistration__meeting__in=list(previous_five),meetingregistration__attended=True).annotate(mtg_count=Count('meetingregistration')).filter(mtg_count__gte=3) -def three_of_five_eligible_8989bis(previous_five, queryset=None): +def three_of_five_eligible_9389(previous_five, queryset=None): """ Return a list of Person records who attended at least 3 of the 5 type_id='ietf' meetings before the given date. Does not disqualify anyone based on held roles. This variant bases the calculation on Meeting.Session and MeetingRegistration.checked_in - Leadership will have to create a new RFC specifying eligibility (RFC8989 is timing out) before it can be used. """ if queryset is None: queryset = Person.objects.all() From 5f4dfb87b615c2e1cc65b316da4fe145a13623ac Mon Sep 17 00:00:00 2001 From: Lars Eggert Date: Thu, 25 May 2023 17:43:15 +0300 Subject: [PATCH 12/14] fix: Use new fonts for PDFization (#5688) --- ietf/doc/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 2e6db02a6..8779ffb2a 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -14,6 +14,7 @@ from pathlib import Path from lxml import etree from typing import Optional, TYPE_CHECKING from weasyprint import HTML as wpHTML +from weasyprint.text.fonts import FontConfiguration from django.db import models from django.core import checks @@ -626,6 +627,7 @@ class DocumentInfo(models.Model): stylesheets.append(finders.find("ietf/css/document_html_txt.css")) else: text = self.htmlized() + stylesheets.append("https://static.ietf.org/fonts/noto-sans-mono/import.css") cache = caches["pdfized"] cache_key = name.split(".")[0] @@ -635,10 +637,12 @@ class DocumentInfo(models.Model): pdf = None if not pdf: try: + font_config = FontConfiguration() pdf = wpHTML( string=text, base_url=settings.IDTRACKER_BASE_URL ).write_pdf( stylesheets=stylesheets, + font_config=font_config, presentational_hints=True, optimize_size=("fonts", "images"), ) From 0a118924147667ea26e7d6a4806a206a5516a68a Mon Sep 17 00:00:00 2001 From: Nicolas Giard Date: Thu, 25 May 2023 18:23:18 -0400 Subject: [PATCH 13/14] chore: use variable for static.ietf.org references (#5692) --- .devcontainer/devcontainer.json | 6 +++++- docker-compose.yml | 6 ++++++ docker/configs/settings_local.py | 2 ++ ietf/doc/models.py | 2 +- ietf/settings.py | 3 ++- ietf/templates/base.html | 4 ++-- ietf/templates/doc/document_html.html | 4 ++-- 7 files changed, 20 insertions(+), 7 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c4f2ee172..5fd3fb2be 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -66,7 +66,7 @@ }, // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [8000, 5432, 5433], + "forwardPorts": [3000, 5432, 5433, 8000, 8001], "portsAttributes": { "3000": { @@ -84,6 +84,10 @@ "8000": { "label": "Datatracker", "onAutoForward": "notify" + }, + "8001": { + "label": "Static", + "onAutoForward": "silent" } }, diff --git a/docker-compose.yml b/docker-compose.yml index e91085266..434ec8f46 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,6 +59,12 @@ services: volumes: - ./docker/configs/pgadmin-servers.json:/pgadmin4/servers.json + static: + image: ghcr.io/ietf-tools/static:latest + restart: unless-stopped + ports: + - 8001:80 + mq: image: rabbitmq:3-alpine restart: unless-stopped diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index a405206c9..4f0d6a249 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -55,3 +55,5 @@ NOMCOM_PUBLIC_KEYS_DIR = 'data/nomcom_keys/public_keys/' SLIDE_STAGING_PATH = 'test/staging/' DE_GFM_BINARY = '/usr/local/bin/de-gfm' + +STATIC_IETF_ORG = "http://localhost:8001" diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 8779ffb2a..5d0e22683 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -627,7 +627,7 @@ class DocumentInfo(models.Model): stylesheets.append(finders.find("ietf/css/document_html_txt.css")) else: text = self.htmlized() - stylesheets.append("https://static.ietf.org/fonts/noto-sans-mono/import.css") + stylesheets.append(f'{settings.STATIC_IETF_ORG}/fonts/noto-sans-mono/import.css') cache = caches["pdfized"] cache_key = name.split(".")[0] diff --git a/ietf/settings.py b/ietf/settings.py index 7934a42a7..db3acab1e 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -137,7 +137,6 @@ IETF_NOTES_URL = 'https://notes.ietf.org/' # HedgeDoc base URL # Absolute path to the directory static files should be collected to. # Example: "/var/www/example.com/static/" - SERVE_CDN_PHOTOS = True SERVE_CDN_FILES_LOCALLY_IN_DEV_MODE = True @@ -157,6 +156,8 @@ STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ) +STATIC_IETF_ORG = "https://static.ietf.org" + WSGI_APPLICATION = "ietf.wsgi.application" AUTHENTICATION_BACKENDS = ( 'ietf.ietfauth.backends.CaseInsensitiveModelBackend', ) diff --git a/ietf/templates/base.html b/ietf/templates/base.html index c5dd43fef..dd8a49158 100644 --- a/ietf/templates/base.html +++ b/ietf/templates/base.html @@ -15,8 +15,8 @@ {% block title %}No title{% endblock %} - - + + From d595aaced0c15fbd4beaf6c4c7a57dd010a96278 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Fri, 26 May 2023 11:28:16 -0300 Subject: [PATCH 14/14] fix: Skip title validation if only XML uploaded (#5694) --- ietf/submit/utils.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ietf/submit/utils.py b/ietf/submit/utils.py index 3f12e50c5..dfc6f2835 100644 --- a/ietf/submit/utils.py +++ b/ietf/submit/utils.py @@ -1265,7 +1265,11 @@ def process_and_validate_submission(submission): # Parse text, whether uploaded or generated from XML text_metadata = process_submission_text(submission.name, submission.rev) - if xml_metadata and xml_metadata["title"] != text_metadata["title"]: + if ( + ".txt" in submission.file_types + and xml_metadata + and xml_metadata["title"] != text_metadata["title"] + ): raise SubmissionError( f"Text Internet-Draft title ({text_metadata['title']}) " f"disagrees with XML Internet-Draft title ({xml_metadata['title']})" @@ -1275,13 +1279,14 @@ def process_and_validate_submission(submission): if xml_metadata is not None: # Items preferred / only available from XML submission.xml_version = xml_metadata["xml_version"] + submission.title = xml_metadata["title"] submission.authors = xml_metadata["authors"] else: # Items to get from text only if XML not available + submission.title = text_metadata["title"] submission.authors = text_metadata["authors"] # Items always to get from text, even when XML is available - submission.title = text_metadata["title"] # verified above this agrees with XML, if present submission.abstract = text_metadata["abstract"] submission.document_date = text_metadata["document_date"] submission.pages = text_metadata["pages"]