diff --git a/antora/package-lock.json b/antora/package-lock.json index 799e340df888..1a14418ca91c 100644 --- a/antora/package-lock.json +++ b/antora/package-lock.json @@ -6,8 +6,8 @@ "": { "dependencies": { "@antora/atlas-extension": "1.0.0-alpha.5", - "@antora/cli": "3.2.0-alpha.11", - "@antora/site-generator": "3.2.0-alpha.11", + "@antora/cli": "3.2.0-alpha.12", + "@antora/site-generator": "3.2.0-alpha.12", "@asciidoctor/tabs": "1.0.0-beta.6", "@springio/antora-extensions": "1.14.11", "@springio/antora-xref-extension": "1.0.0-alpha.5", @@ -16,12 +16,12 @@ } }, "node_modules/@antora/asciidoc-loader": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.2.0-alpha.11.tgz", - "integrity": "sha512-P70cQvjAzovXOuvFrL6/h5Js/9pzdU9fxwK+kA6IGcwuQ2FOb50TEJ0Y291IcrMIEu8lbF7w/yxyDLqsZRr7Ng==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.2.0-alpha.12.tgz", + "integrity": "sha512-GVkVfbHGV+01uk2LCch75fbNdGWkXW8SPeydIEwpy1TZuM5bz6x8f+Ks9qO3Feb6DBgSWpAqj7TLmGtZNaIwZg==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.2.0-alpha.11", + "@antora/logger": "3.2.0-alpha.12", "@antora/user-require-helper": "~3.0", "@asciidoctor/core": "~2.2" }, @@ -45,15 +45,15 @@ } }, "node_modules/@antora/cli": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.2.0-alpha.11.tgz", - "integrity": "sha512-hyCVmJT/esg6raPFyR1aIpUuGwXbe/0cAGPlQ86Ag/m7CUP80mQEZaVN1NxyVOK/KmtF5E7qpNvksDetBtGvcw==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.2.0-alpha.12.tgz", + "integrity": "sha512-UaRcJBLpEas8kMVCJcZit41+/EMTS0HBHIYripf98HzyB3ljGYp8M6kMMvrO/YdHohMgF65aSjz6sSSrHYDpwg==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.2.0-alpha.11", - "@antora/playbook-builder": "3.2.0-alpha.11", + "@antora/logger": "3.2.0-alpha.12", + "@antora/playbook-builder": "3.2.0-alpha.12", "@antora/user-require-helper": "~3.0", - "commander": "~12.1" + "commander": "~13.1" }, "bin": { "antora": "bin/antora" @@ -63,19 +63,19 @@ } }, "node_modules/@antora/content-aggregator": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.2.0-alpha.11.tgz", - "integrity": "sha512-3LH5Got0075nXbR3cVFG3mOcfzka+v/oqc55RGP6VOLGq5fOvE0cfi4auJIselQv6wzK2jGsiAzyInbDLWlk4w==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.2.0-alpha.12.tgz", + "integrity": "sha512-4JSK6u7ihbr5b4Jp3XFWYAUsn593OZvWFayrqmupcnLYcyooGjTDUqnO2UHDH9GLelZxLhlOaxTGBrovXF+kNQ==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", - "@antora/logger": "3.2.0-alpha.11", + "@antora/logger": "3.2.0-alpha.12", "@antora/user-require-helper": "~3.0", "braces": "~3.0", "cache-directory": "~2.0", "fast-glob": "~3.3", "hpagent": "~1.2", - "isomorphic-git": "~1.25", + "isomorphic-git": "~1.37", "js-yaml": "~4.1", "multi-progress": "~4.0", "picomatch": "~4.0", @@ -89,14 +89,14 @@ } }, "node_modules/@antora/content-classifier": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.2.0-alpha.11.tgz", - "integrity": "sha512-6TKNWGWdOJkop0hGYFgSLTdJjK1RJVlwuUye2n+fPGMJH2k3T53i3OIJxsQwoKhVkdA3n383tdsjsf+ptoJAmw==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.2.0-alpha.12.tgz", + "integrity": "sha512-CTGRxjKkd4wZKVXquz+B5ker3YeFakGUeNG4XLULxNis7WVi99b/SZoh00gMjHeftXqschx8JugwXNAiO7yz2w==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.11", - "@antora/logger": "3.2.0-alpha.11", - "mime-types": "~2.1", + "@antora/asciidoc-loader": "3.2.0-alpha.12", + "@antora/logger": "3.2.0-alpha.12", + "mime-types": "~3.0", "vinyl": "~3.0" }, "engines": { @@ -104,12 +104,12 @@ } }, "node_modules/@antora/document-converter": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.2.0-alpha.11.tgz", - "integrity": "sha512-yfjqxeXrTFY5EQMFk6I1ITZySgerwVcN/4G30dcrTTUUYZyjSospKuKwlnIr0qP+TUXf27ArzL5+Wpj8+X5XZQ==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.2.0-alpha.12.tgz", + "integrity": "sha512-fTAw3ohkM8Cj/kocX7oJj0njivtj2T/PJs4nv6nWnb87/Dceh+B7O9hS+qz5jwCwByx6HulE6bG9Uc+BgZFuww==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.11" + "@antora/asciidoc-loader": "3.2.0-alpha.12" }, "engines": { "node": ">=18.0.0" @@ -125,83 +125,80 @@ } }, "node_modules/@antora/file-publisher": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.2.0-alpha.11.tgz", - "integrity": "sha512-2XcyCR148aUCQsNPMBkBRD0SUBwpx1ZpgyshNnSuvE/cHP1pSkBjxMxqdsF8SZTL2za/k67Ge1vaTND5PZRMIw==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.2.0-alpha.12.tgz", + "integrity": "sha512-l74Ge+VkbflBRNkflJRtPcmQP0VchbhihUnmA9oj7y5bz+arLvFNFKL1zo0qllJ121VQE34fINheH0D68l9ilQ==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", "@antora/user-require-helper": "~3.0", "vinyl": "~3.0", - "yazl": "~2.5" + "yazl": "~3.3" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@antora/logger": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.2.0-alpha.11.tgz", - "integrity": "sha512-reiqsBqpllqRsuJhcPqbe7roOR3Ja+LfysTzyDzgrXS7liu5BexlwHCPOn9MqScT3A+fhUYajnck8t+w6+fcgQ==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.2.0-alpha.12.tgz", + "integrity": "sha512-feyaa9w79rKuQQ9A1HpLYHNrAVgo8Oc3J/Ptu6M9XCm/T7utNA79z8DyQWL4yQADrI64f52sZv9PpSAF7EVz8A==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", - "pino": "~9.2", - "pino-pretty": "~11.2", - "sonic-boom": "~4.0" + "pino": "10.1.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@antora/navigation-builder": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.2.0-alpha.11.tgz", - "integrity": "sha512-59+Uev7/Dk7/Is5EbL4DmsNJs/ju0MVZzb7qzRLu/3C5rRWZqG3l536Bb1/mStGfSbP6xHHSlzZWMjr7DZpCnw==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.2.0-alpha.12.tgz", + "integrity": "sha512-b/+UbU/u2EasQQTwznE4Yv5+eoNuTKpYn3YBlFDVt68WhXuIee+Gevzb38EnWBCn+XrPvWRV99ZE/ccCJBE5ng==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.11" + "@antora/asciidoc-loader": "3.2.0-alpha.12" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@antora/page-composer": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.2.0-alpha.11.tgz", - "integrity": "sha512-04JKTx5fui605PDh5HJPTmhDsMszwYST5xP6pXSpujEaeKCuHa6z9pmlxbesc9WYIkMqEdAXPrxtzXA/DdFpEA==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.2.0-alpha.12.tgz", + "integrity": "sha512-oGVhhPVo9FCwhfrEiGdzUjnA7cf1Yl4dyJd82fk+JakyhaifLxGgKmJazWn8CXs1OJUd7ImjkpX4vVAryTnlZw==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.2.0-alpha.11", - "handlebars": "~4.7", - "require-from-string": "~2.0" + "@antora/logger": "3.2.0-alpha.12", + "handlebars": "~4.7" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@antora/playbook-builder": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.2.0-alpha.11.tgz", - "integrity": "sha512-rI707tLA3sGigNTEaoQzCDBn1pIyQa35ktf7OAO2kTYcUF9eLwf8gU3u68BqTwdh4ewuFG2uvHDEx6/6pTciNQ==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.2.0-alpha.12.tgz", + "integrity": "sha512-mOLSX7Xr297Svt3UCka0ebPN9eKq2/2qZVwgflQXZruEMY6hl6sqey8tGYZhcINKYGcGEej4EXGj0R0u1xt0oA==", "license": "MPL-2.0", "dependencies": { "@iarna/toml": "~2.2", "convict": "~6.2", "js-yaml": "~4.1", - "json5": "~2.2", - "yargs-parser": "~20.2" + "json5": "~2.2" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@antora/redirect-producer": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.2.0-alpha.11.tgz", - "integrity": "sha512-kMjA79P+3tzd1Ao5MAygIBoZqSYRG6yn2/P4VUURw7IIwh/kAbqwgJVXTFTIAL0u6PuDsGWtrOnO+eteT7WpwQ==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.2.0-alpha.12.tgz", + "integrity": "sha512-K58XBU3NKsGMPeLRpk/J7PWR/8TMXjX/sgnUK4Yl/NjNh2uksKfsW/DLUV8ErXYaxT8l+1R8nAgBGRSpuBIUOQ==", "license": "MPL-2.0", "dependencies": { + "@antora/content-classifier": "3.2.0-alpha.12", "vinyl": "~3.0" }, "engines": { @@ -209,24 +206,24 @@ } }, "node_modules/@antora/site-generator": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.2.0-alpha.11.tgz", - "integrity": "sha512-m8CGC4dRxv3gUSK56p5KXHHEGOO6EOA8QlMi7gfiwtK/5+O/qRC6thJeet7zQPATuwESnpI1ASViHhOI2aSKpA==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.2.0-alpha.12.tgz", + "integrity": "sha512-iLt+3RRx0NgA2A2LEg6LLsfxXeb/yYQIvOkrlGJonnADsYhl4U+301Pns9VKLQURY7iUnjkvi7QJrLUb0cJftg==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.11", - "@antora/content-aggregator": "3.2.0-alpha.11", - "@antora/content-classifier": "3.2.0-alpha.11", - "@antora/document-converter": "3.2.0-alpha.11", - "@antora/file-publisher": "3.2.0-alpha.11", - "@antora/logger": "3.2.0-alpha.11", - "@antora/navigation-builder": "3.2.0-alpha.11", - "@antora/page-composer": "3.2.0-alpha.11", - "@antora/playbook-builder": "3.2.0-alpha.11", - "@antora/redirect-producer": "3.2.0-alpha.11", - "@antora/site-mapper": "3.2.0-alpha.11", - "@antora/site-publisher": "3.2.0-alpha.11", - "@antora/ui-loader": "3.2.0-alpha.11", + "@antora/asciidoc-loader": "3.2.0-alpha.12", + "@antora/content-aggregator": "3.2.0-alpha.12", + "@antora/content-classifier": "3.2.0-alpha.12", + "@antora/document-converter": "3.2.0-alpha.12", + "@antora/file-publisher": "3.2.0-alpha.12", + "@antora/logger": "3.2.0-alpha.12", + "@antora/navigation-builder": "3.2.0-alpha.12", + "@antora/page-composer": "3.2.0-alpha.12", + "@antora/playbook-builder": "3.2.0-alpha.12", + "@antora/redirect-producer": "3.2.0-alpha.12", + "@antora/site-mapper": "3.2.0-alpha.12", + "@antora/site-publisher": "3.2.0-alpha.12", + "@antora/ui-loader": "3.2.0-alpha.12", "@antora/user-require-helper": "~3.0" }, "engines": { @@ -234,12 +231,12 @@ } }, "node_modules/@antora/site-mapper": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.2.0-alpha.11.tgz", - "integrity": "sha512-CWvsfjVXSRbdGSN9UmGeiVJa+UDDSYLH15O5eKeEzvMp8mVXPVcSvWyW0h1js20ki+PNLlBqwP8O524v7/Mkzg==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.2.0-alpha.12.tgz", + "integrity": "sha512-JM9CeuAvqZZejcly64C8WOn2BbMh33iSxZCMyJdWuz1GjIEuI8y3CY0W1YcGNUQtEdEaBfmSArH2aMEz3c4vYg==", "license": "MPL-2.0", "dependencies": { - "@antora/content-classifier": "3.2.0-alpha.11", + "@antora/content-classifier": "3.2.0-alpha.12", "vinyl": "~3.0" }, "engines": { @@ -247,21 +244,21 @@ } }, "node_modules/@antora/site-publisher": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.2.0-alpha.11.tgz", - "integrity": "sha512-gxiPpQHioCp+y9xYPlJFl2yLnZhjb1Hzr+e4YgmDsc4KvOB+IGR4oGiaOhUfBb63X0VsKFHzv/uq2Mhohazj3Q==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.2.0-alpha.12.tgz", + "integrity": "sha512-gde53/tYRgTY8jqYnL1Yq1SmGhd0/+k8iooKBXONzpI6v9crWow4+RTEaGbjVKM0bMS0lBurs+0lyjLzpirUFw==", "license": "MPL-2.0", "dependencies": { - "@antora/file-publisher": "3.2.0-alpha.11" + "@antora/file-publisher": "3.2.0-alpha.12" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@antora/ui-loader": { - "version": "3.2.0-alpha.11", - "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.2.0-alpha.11.tgz", - "integrity": "sha512-LHK8wo9mlXg8RmumBW2yCwIZXXoNgcYUh5ln94vf46p8gnO4cm+5i8REa6JgFPIO95FGVVQlE4lRhr86I7GPgw==", + "version": "3.2.0-alpha.12", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.2.0-alpha.12.tgz", + "integrity": "sha512-SkrYKWyMubho7uakypMiHkoV9S+pU9PUxYchCl+FChQGY515LJn1ibOmsZVhcGtbYU1u+YgkBxcG/bujbm4Vfw==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", @@ -274,7 +271,7 @@ "should-proxy": "~1.0", "simple-get": "~4.0", "vinyl": "~3.0", - "yauzl": "~3.1" + "yauzl": "~3.3" }, "engines": { "node": ">=18.0.0" @@ -293,13 +290,13 @@ } }, "node_modules/@asciidoctor/core": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.8.tgz", - "integrity": "sha512-oozXk7ZO1RAd/KLFLkKOhqTcG4GO3CV44WwOFg2gMcCsqCUTarvMT7xERIoWW2WurKbB0/ce+98r01p8xPOlBw==", + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.9.tgz", + "integrity": "sha512-tIPRHo1T2SFmAm+j77cDsj0RuaszP7xJxsaVTTAF5CwKyTbazw9TnIVlpIWM5yWfIWAWcAZy92RcnPgMJwny1w==", "license": "MIT", "dependencies": { - "asciidoctor-opal-runtime": "0.3.3", - "unxhr": "1.0.1" + "asciidoctor-opal-runtime": "0.3.4", + "unxhr": "~1.2" }, "engines": { "node": ">=8.11", @@ -395,6 +392,12 @@ "node": ">= 8" } }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -627,58 +630,18 @@ "license": "Python-2.0" }, "node_modules/asciidoctor-opal-runtime": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", - "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.4.tgz", + "integrity": "sha512-zqd6zn1LV+PZ69AP/kEbB00zuPHMIAJY3IX8+aZV+X1qOwatYvKGjsMmdMc5ApfhtkjZ4mYkqiTPJWnEnBiMJg==", "license": "MIT", "dependencies": { - "glob": "7.1.3", - "unxhr": "1.0.1" + "fast-glob": "~3.3", + "unxhr": "~1.2" }, "engines": { "node": ">=8.11" } }, - "node_modules/asciidoctor-opal-runtime/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/asciidoctor-opal-runtime/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/asciidoctor-opal-runtime/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/asciinema-player": { "version": "3.15.1", "resolved": "https://registry.npmjs.org/asciinema-player/-/asciinema-player-3.15.1.tgz", @@ -1083,16 +1046,10 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" - }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "license": "MIT", "engines": { "node": ">=18" @@ -1184,15 +1141,6 @@ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/decompress": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", @@ -1551,12 +1499,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" }, - "node_modules/fast-copy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", - "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", - "license": "MIT" - }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -1579,21 +1521,6 @@ "node": ">=8.6.0" } }, - "node_modules/fast-redact": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", - "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "license": "MIT" - }, "node_modules/fast-xml-builder": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", @@ -1985,12 +1912,6 @@ "node": ">= 0.4" } }, - "node_modules/help-me": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", - "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", - "license": "MIT" - }, "node_modules/hpagent": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", @@ -2198,9 +2119,9 @@ "license": "ISC" }, "node_modules/isomorphic-git": { - "version": "1.25.10", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", - "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", + "version": "1.37.9", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.37.9.tgz", + "integrity": "sha512-jmjEiXhaPQy27AcTwI6KYFXMhYq3RB5G7MKsFZ/J1oW7dMNOKW9rGi05LhD9Shl7lp15WyQ1cRrRdl0aE8yIhQ==", "license": "MIT", "dependencies": { "async-lock": "^1.4.1", @@ -2211,15 +2132,15 @@ "minimisted": "^2.0.0", "pako": "^1.0.10", "pify": "^4.0.1", - "readable-stream": "^3.4.0", - "sha.js": "^2.4.9", + "readable-stream": "^4.0.0", + "sha.js": "^2.4.12", "simple-get": "^4.0.1" }, "bin": { "isogit": "cli.cjs" }, "engines": { - "node": ">=12" + "node": ">=14.17" } }, "node_modules/isomorphic-git/node_modules/pify": { @@ -2231,20 +2152,6 @@ "node": ">=6" } }, - "node_modules/isomorphic-git/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -2260,15 +2167,6 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -2430,24 +2328,28 @@ } }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/mimic-response": { @@ -2716,17 +2618,17 @@ } }, "node_modules/pino": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.2.0.tgz", - "integrity": "sha512-g3/hpwfujK5a4oVbaefoJxezLzsDgLcNJeITvC6yrfwYeT9la+edCK42j5QpEQSQCZgTKapXvnQIdgZwvRaZug==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.1.0.tgz", + "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", "license": "MIT", "dependencies": { + "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", + "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", - "process-warning": "^3.0.0", + "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", @@ -2738,40 +2640,14 @@ } }, "node_modules/pino-abstract-transport": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", - "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", "license": "MIT", "dependencies": { - "readable-stream": "^4.0.0", "split2": "^4.0.0" } }, - "node_modules/pino-pretty": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.2.2.tgz", - "integrity": "sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==", - "license": "MIT", - "dependencies": { - "colorette": "^2.0.7", - "dateformat": "^4.6.3", - "fast-copy": "^3.0.2", - "fast-safe-stringify": "^2.1.1", - "help-me": "^5.0.0", - "joycon": "^3.1.1", - "minimist": "^1.2.6", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.0.0", - "pump": "^3.0.0", - "readable-stream": "^4.0.0", - "secure-json-parse": "^2.4.0", - "sonic-boom": "^4.0.1", - "strip-json-comments": "^3.1.1" - }, - "bin": { - "pino-pretty": "bin.js" - } - }, "node_modules/pino-std-serializers": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", @@ -2803,9 +2679,19 @@ "license": "MIT" }, "node_modules/process-warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", - "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "MIT" }, "node_modules/progress": { @@ -2925,15 +2811,6 @@ "node": ">= 10" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -2996,12 +2873,6 @@ "node": ">=10" } }, - "node_modules/secure-json-parse": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", - "license": "BSD-3-Clause" - }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -3192,9 +3063,9 @@ } }, "node_modules/sonic-boom": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", - "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", + "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" @@ -3349,18 +3220,6 @@ "is-natural-number": "^4.0.1" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strnum": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.3.tgz", @@ -3594,9 +3453,9 @@ } }, "node_modules/unxhr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", - "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz", + "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==", "license": "MIT", "engines": { "node": ">=8.11" @@ -3805,9 +3664,9 @@ } }, "node_modules/yauzl": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", - "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.1.tgz", + "integrity": "sha512-RNPCUkiE/ZgO4w8i9U5yDQVHaFDdnzaFANElRvpJteCspvmv2VqrRb9lvS6odVD+jqI/zDsxAHJVsafpcheVQQ==", "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", @@ -3827,21 +3686,12 @@ } }, "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-3.3.1.tgz", + "integrity": "sha512-BbETDVWG+VcMUle37k5Fqp//7SDOK2/1+T7X8TD96M3D9G8jK5VLUdQVdVjGi8im7FGkazX7kk5hkU8X4L5Bng==", "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3" - } - }, - "node_modules/yazl/node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "license": "MIT", - "engines": { - "node": "*" + "buffer-crc32": "^1.0.0" } }, "node_modules/zip-stream": { diff --git a/antora/package.json b/antora/package.json index 0298b502c883..837448b82bce 100644 --- a/antora/package.json +++ b/antora/package.json @@ -3,8 +3,8 @@ "antora": "node npm/antora.js" }, "dependencies": { - "@antora/cli": "3.2.0-alpha.11", - "@antora/site-generator": "3.2.0-alpha.11", + "@antora/cli": "3.2.0-alpha.12", + "@antora/site-generator": "3.2.0-alpha.12", "@antora/atlas-extension": "1.0.0-alpha.5", "@springio/antora-extensions": "1.14.11", "@springio/antora-xref-extension": "1.0.0-alpha.5", diff --git a/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/getting-started.adoc b/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/getting-started.adoc index 5e923ee0d1e2..995bb857fc8a 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/getting-started.adoc +++ b/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/getting-started.adoc @@ -6,7 +6,7 @@ To get started with the plugin it needs to be applied to your project. ifeval::["{build-type}" == "commercial"] The plugin is published to the Spring Commercial repository. You will have to configure your build to access this repository. -This is usual done through a local artifact repository that mirrors the content of the Spring Commercial repository. +This is usually done through a local artifact repository that mirrors the content of the Spring Commercial repository. Alternatively, while it is not recommended, the Spring Commercial repository can also be accessed directly. In either case, see https://docs.vmware.com/en/Tanzu-Spring-Runtime/Commercial/Tanzu-Spring-Runtime/spring-enterprise-subscription.html[the Tanzu Spring Runtime documentation] for further details. diff --git a/core/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/ProcessRunner.java b/core/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/ProcessRunner.java index 1e82bd68be4a..2aaac547822a 100644 --- a/core/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/ProcessRunner.java +++ b/core/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/core/ProcessRunner.java @@ -138,7 +138,8 @@ private int waitForProcess(Process process) { return process.waitFor(); } catch (InterruptedException ex) { - throw new IllegalStateException("Interrupted waiting for %s".formatted(process)); + Thread.currentThread().interrupt(); + throw new IllegalStateException("Interrupted waiting for %s".formatted(process), ex); } } @@ -190,6 +191,7 @@ public String toString() { return this.output.toString(); } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); return ""; } } diff --git a/documentation/spring-boot-docs/src/docs/antora/modules/appendix/pages/deprecated-application-properties/index.adoc b/documentation/spring-boot-docs/src/docs/antora/modules/appendix/pages/deprecated-application-properties/index.adoc index c0aa05ec2ade..46c66045e94a 100644 --- a/documentation/spring-boot-docs/src/docs/antora/modules/appendix/pages/deprecated-application-properties/index.adoc +++ b/documentation/spring-boot-docs/src/docs/antora/modules/appendix/pages/deprecated-application-properties/index.adoc @@ -3,7 +3,7 @@ = Deprecated Application Properties The following deprecated properties can be specified inside your `application.properties` file, inside your `application.yaml` file, or as command line switches. -Support for these properties will be removed in a future release and should you should migrate away from them. +Support for these properties will be removed in a future release and you should migrate away from them. [TIP] ==== diff --git a/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/io/validation.adoc b/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/io/validation.adoc index 4fecbc4a4e4b..c3818e8ea70b 100644 --- a/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/io/validation.adoc +++ b/documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/io/validation.adoc @@ -1,7 +1,7 @@ [[io.validation]] = Validation -The method validation feature supported by Bean Validation 1.1 is automatically enabled as long as a JSR-303 implementation (such as Hibernate validator) is on the classpath. +The method validation feature supported by Bean Validation 1.1 is automatically enabled as long as a JSR-303 implementation (such as Hibernate Validator, typically provided by `spring-boot-starter-validation`) is on the classpath. This lets bean methods be annotated with `jakarta.validation` constraints on their parameters and/or on their return value. Target classes with such annotated methods need to be annotated with the javadoc:org.springframework.validation.annotation.Validated[format=annotation] annotation at the type level for their methods to be searched for inline constraint annotations. diff --git a/documentation/spring-boot-docs/src/docs/antora/modules/tutorial/pages/first-application/index.adoc b/documentation/spring-boot-docs/src/docs/antora/modules/tutorial/pages/first-application/index.adoc index 2250c225ed43..f29c1f8927d8 100644 --- a/documentation/spring-boot-docs/src/docs/antora/modules/tutorial/pages/first-application/index.adoc +++ b/documentation/spring-boot-docs/src/docs/antora/modules/tutorial/pages/first-application/index.adoc @@ -132,7 +132,7 @@ endif::[] ifeval::["{build-type}" == "commercial"] You will also have to configure your build to access the Spring Commercial repository. -This is usual done through a local artifact repository that mirrors the content of the Spring Commercial repository. +This is usually done through a local artifact repository that mirrors the content of the Spring Commercial repository. Alternatively, while it is not recommended, the Spring Commercial repository can also be accessed directly. In either case, see https://docs.vmware.com/en/Tanzu-Spring-Runtime/Commercial/Tanzu-Spring-Runtime/spring-enterprise-subscription.html[the Tanzu Spring Runtime documentation] for further details. diff --git a/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.java b/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.java index 8e1fd5d2403c..6082de18e174 100644 --- a/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.java +++ b/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.java @@ -16,12 +16,10 @@ package org.springframework.boot.docs.data.nosql.neo4j.repositories; -import java.util.Optional; - import org.springframework.data.neo4j.repository.Neo4jRepository; public interface CityRepository extends Neo4jRepository { - Optional findOneByNameAndState(String name, String state); + City findOneByNameAndState(String name, String state); } diff --git a/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.kt b/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.kt index 683c34d2a312..e2eacf600611 100644 --- a/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.kt +++ b/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/data/nosql/neo4j/repositories/CityRepository.kt @@ -17,11 +17,10 @@ package org.springframework.boot.docs.data.nosql.neo4j.repositories import org.springframework.data.neo4j.repository.Neo4jRepository -import java.util.Optional interface CityRepository : Neo4jRepository { - fun findOneByNameAndState(name: String?, state: String?): Optional? + fun findOneByNameAndState(name: String?, state: String?): City? } diff --git a/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/autoconfigure/RabbitProperties.java b/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/autoconfigure/RabbitProperties.java index e9fdff70acfa..c23d78798293 100644 --- a/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/autoconfigure/RabbitProperties.java +++ b/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/autoconfigure/RabbitProperties.java @@ -479,7 +479,7 @@ public class Ssl { * @see #getEnabled() () */ public boolean determineEnabled() { - boolean defaultEnabled = Boolean.TRUE.equals(getEnabled()) || this.bundle != null; + boolean defaultEnabled = Boolean.TRUE.equals(getEnabled()) || StringUtils.hasText(this.bundle); if (CollectionUtils.isEmpty(RabbitProperties.this.parsedAddresses)) { return defaultEnabled; } @@ -1387,7 +1387,7 @@ public static class Ssl { } public boolean determineEnabled() { - return Boolean.TRUE.equals(getEnabled()) || this.bundle != null; + return Boolean.TRUE.equals(getEnabled()) || StringUtils.hasText(this.bundle); } public void setEnabled(@Nullable Boolean enabled) { diff --git a/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/RabbitPropertiesTests.java b/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/RabbitPropertiesTests.java index 93548c283a41..81ecdf6f625e 100644 --- a/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/RabbitPropertiesTests.java +++ b/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/autoconfigure/RabbitPropertiesTests.java @@ -336,6 +336,12 @@ void determineSslEnabledIsTrueWhenBundleIsSetAndNoAddresses() { assertThat(this.properties.getSsl().determineEnabled()).isTrue(); } + @Test + void determineSslEnabledIsFalseWhenBundleIsEmpty() { + this.properties.getSsl().setBundle(""); + assertThat(this.properties.getSsl().determineEnabled()).isFalse(); + } + @Test void propertiesUseConsistentDefaultValues() { ConnectionFactory connectionFactory = new ConnectionFactory(); @@ -399,6 +405,12 @@ void streamSslIsEnabledWhenBundleIsSet() { assertThat(this.properties.getStream().getSsl().determineEnabled()).isTrue(); } + @Test + void streamSslIsDisabledWhenBundleIsEmpty() { + this.properties.getStream().getSsl().setBundle(""); + assertThat(this.properties.getStream().getSsl().determineEnabled()).isFalse(); + } + @Test void streamSslIsDisabledWhenEnabledIsFalseAndBundleIsNotSet() { this.properties.getStream().getSsl().setEnabled(false); diff --git a/module/spring-boot-reactor-netty/src/main/java/org/springframework/boot/reactor/netty/SslServerCustomizer.java b/module/spring-boot-reactor-netty/src/main/java/org/springframework/boot/reactor/netty/SslServerCustomizer.java index ce72e6495732..7e9d4ecfdc01 100644 --- a/module/spring-boot-reactor-netty/src/main/java/org/springframework/boot/reactor/netty/SslServerCustomizer.java +++ b/module/spring-boot-reactor-netty/src/main/java/org/springframework/boot/reactor/netty/SslServerCustomizer.java @@ -76,11 +76,13 @@ public HttpServer apply(HttpServer server) { } private void applySecurity(SslContextSpec spec) { - spec.sslContext(this.sslProvider.getSslContext()).setSniAsyncMappings((serverName, promise) -> { - SslProvider provider = (serverName != null) ? this.serverNameSslProviders.get(serverName) - : this.sslProvider; - return promise.setSuccess(provider); - }); + spec.sslContext(this.sslProvider.getSslContext()) + .setSniAsyncMappings((serverName, promise) -> promise.setSuccess(getSslProvider(serverName))); + } + + SslProvider getSslProvider(@Nullable String serverName) { + return (serverName != null) ? this.serverNameSslProviders.getOrDefault(serverName, this.sslProvider) + : this.sslProvider; } void updateSslBundle(@Nullable String serverName, SslBundle sslBundle) { diff --git a/module/spring-boot-reactor-netty/src/test/java/org/springframework/boot/reactor/netty/SslServerCustomizerTests.java b/module/spring-boot-reactor-netty/src/test/java/org/springframework/boot/reactor/netty/SslServerCustomizerTests.java new file mode 100644 index 000000000000..08137c53d517 --- /dev/null +++ b/module/spring-boot-reactor-netty/src/test/java/org/springframework/boot/reactor/netty/SslServerCustomizerTests.java @@ -0,0 +1,76 @@ +/* + * Copyright 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.reactor.netty; + +import java.util.Collections; +import java.util.Map; + +import org.junit.jupiter.api.Test; +import reactor.netty.tcp.SslProvider; + +import org.springframework.boot.ssl.SslBundle; +import org.springframework.boot.ssl.pem.PemSslStoreBundle; +import org.springframework.boot.ssl.pem.PemSslStoreDetails; +import org.springframework.boot.testsupport.classpath.resources.WithPackageResources; +import org.springframework.boot.web.server.Ssl; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link SslServerCustomizer}. + * + * @author Daeho Kwon + */ +class SslServerCustomizerTests { + + @Test + @WithPackageResources({ "1.key", "1.crt", "2.key", "2.crt" }) + void getSslProviderReturnsMappedProviderForKnownServerName() { + SslBundle defaultBundle = createBundle("1.key", "1.crt"); + SslBundle mappedBundle = createBundle("2.key", "2.crt"); + SslServerCustomizer customizer = new SslServerCustomizer(null, Ssl.ClientAuth.NONE, defaultBundle, + Map.of("mapped.example", mappedBundle)); + SslProvider mapped = customizer.getSslProvider("mapped.example"); + assertThat(mapped).isNotNull().isNotSameAs(customizer.getSslProvider(null)); + } + + @Test + @WithPackageResources({ "1.key", "1.crt", "2.key", "2.crt" }) + void getSslProviderFallsBackToDefaultWhenServerNameIsUnmapped() { + SslBundle defaultBundle = createBundle("1.key", "1.crt"); + SslBundle mappedBundle = createBundle("2.key", "2.crt"); + SslServerCustomizer customizer = new SslServerCustomizer(null, Ssl.ClientAuth.NONE, defaultBundle, + Map.of("mapped.example", mappedBundle)); + assertThat(customizer.getSslProvider("unmapped.example")).isSameAs(customizer.getSslProvider(null)); + } + + @Test + @WithPackageResources({ "1.key", "1.crt" }) + @SuppressWarnings("NullAway") // Test null check + void getSslProviderReturnsDefaultWhenServerNameIsNull() { + SslBundle defaultBundle = createBundle("1.key", "1.crt"); + SslServerCustomizer customizer = new SslServerCustomizer(null, Ssl.ClientAuth.NONE, defaultBundle, + Collections.emptyMap()); + assertThat(customizer.getSslProvider(null)).isNotNull(); + } + + private static SslBundle createBundle(String key, String certificate) { + return SslBundle.of(new PemSslStoreBundle( + new PemSslStoreDetails(null, "classpath:" + certificate, "classpath:" + key), null)); + } + +} diff --git a/platform/spring-boot-dependencies/build.gradle b/platform/spring-boot-dependencies/build.gradle index 6024148fe40b..c77954e2dcc4 100644 --- a/platform/spring-boot-dependencies/build.gradle +++ b/platform/spring-boot-dependencies/build.gradle @@ -1658,7 +1658,7 @@ bom { releaseNotes("https://github.com/mockito/mockito/releases/tag/v{version}") } } - library("MongoDB", "5.7.0") { + library("MongoDB", "5.8.0") { alignWith { version { of "org.mongodb:mongodb-driver-core" diff --git a/platform/spring-boot-internal-dependencies/build.gradle b/platform/spring-boot-internal-dependencies/build.gradle index e4d139fc18c2..38a9d2a9acb8 100644 --- a/platform/spring-boot-internal-dependencies/build.gradle +++ b/platform/spring-boot-internal-dependencies/build.gradle @@ -157,13 +157,14 @@ bom { ] } } - library("Maven Resolver", "1.9.23") { + library("Maven Resolver", "1.9.27") { group("org.apache.maven.resolver") { modules = [ "maven-resolver-api", "maven-resolver-connector-basic", "maven-resolver-impl", "maven-resolver-spi", + "maven-resolver-supplier", "maven-resolver-transport-file", "maven-resolver-transport-http", "maven-resolver-util" diff --git a/test-support/spring-boot-test-support/build.gradle b/test-support/spring-boot-test-support/build.gradle index 29ae85812c7d..62b184c2d45a 100644 --- a/test-support/spring-boot-test-support/build.gradle +++ b/test-support/spring-boot-test-support/build.gradle @@ -47,12 +47,7 @@ dependencies { compileOnly("org.springframework.data:spring-data-redis") implementation("jakarta.inject:jakarta.inject-api") - implementation("org.apache.maven.resolver:maven-resolver-connector-basic") - implementation("org.apache.maven.resolver:maven-resolver-impl") - implementation("org.apache.maven:maven-resolver-provider") { - exclude(group: "javax.inject", module: "javax.inject") - } - implementation("org.apache.maven.resolver:maven-resolver-transport-http") { + implementation("org.apache.maven.resolver:maven-resolver-supplier") { exclude group: "org.slf4j", module: "jcl-over-slf4j" } diff --git a/test-support/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/classpath/ModifiedClassPathClassLoader.java b/test-support/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/classpath/ModifiedClassPathClassLoader.java index c6df949673ad..fedbcb8b8897 100644 --- a/test-support/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/classpath/ModifiedClassPathClassLoader.java +++ b/test-support/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/classpath/ModifiedClassPathClassLoader.java @@ -32,6 +32,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Function; import java.util.jar.Attributes; import java.util.jar.JarFile; import java.util.regex.Pattern; @@ -42,16 +43,13 @@ import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.collection.CollectRequest; -import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.repository.LocalRepository; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.resolution.ArtifactResult; import org.eclipse.aether.resolution.DependencyRequest; import org.eclipse.aether.resolution.DependencyResult; -import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; -import org.eclipse.aether.spi.connector.transport.TransporterFactory; -import org.eclipse.aether.transport.http.HttpTransporterFactory; +import org.eclipse.aether.supplier.RepositorySystemSupplier; import org.springframework.core.annotation.MergedAnnotation; import org.springframework.core.annotation.MergedAnnotations; @@ -241,42 +239,49 @@ private static List getAdditionalUrls(List annotations) } private static List resolveCoordinates(String[] coordinates) { - Exception latestFailure = null; - RepositorySystem repositorySystem = createRepositorySystem(); - DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); - session.setSystemProperties(System.getProperties()); - LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository"); - RemoteRepository remoteRepository = new RemoteRepository.Builder("central", "default", - "https://repo.maven.apache.org/maven2") - .build(); - session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository)); - for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) { - CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(remoteRepository)); - collectRequest.setDependencies(createDependencies(coordinates)); - DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null); - try { - DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest); - List resolvedArtifacts = new ArrayList<>(); - for (ArtifactResult artifact : result.getArtifactResults()) { - resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL()); + return doWithRepositorySystem((repositorySystem) -> { + Exception latestFailure = null; + DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); + session.setSystemProperties(System.getProperties()); + LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository"); + RemoteRepository remoteRepository = new RemoteRepository.Builder("central", "default", + "https://repo.maven.apache.org/maven2") + .build(); + session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository)); + for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) { + CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(remoteRepository)); + collectRequest.setDependencies(createDependencies(coordinates)); + DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null); + try { + DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest); + List resolvedArtifacts = new ArrayList<>(); + for (ArtifactResult artifact : result.getArtifactResults()) { + resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL()); + } + return resolvedArtifacts; + } + catch (Exception ex) { + latestFailure = ex; } - return resolvedArtifacts; + } + throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts", + latestFailure); + }); + } + + private static T doWithRepositorySystem(Function repositorySystem) { + RepositorySystem rs = new RepositorySystemSupplier().get(); + try { + return repositorySystem.apply(rs); + } + finally { + try { + rs.shutdown(); } catch (Exception ex) { - latestFailure = ex; + // Ignore } } - throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts", - latestFailure); - } - - @SuppressWarnings("deprecation") - private static RepositorySystem createRepositorySystem() { - org.eclipse.aether.impl.DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils.newServiceLocator(); - serviceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); - serviceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class); - RepositorySystem repositorySystem = serviceLocator.getService(RepositorySystem.class); - return repositorySystem; } private static List createDependencies(String[] allCoordinates) {