diff --git a/package-lock.json b/package-lock.json index 2829002d544c158ca823c193e3f74659ac683bbc..9beef9856f211deaa6676c86f6b8a75ca7bcde38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -282,34 +282,34 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.689.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.689.0.tgz", - "integrity": "sha512-qYD1GJEPeLM6H3x8BuAAMXZltvVce5vGiwtZc9uMkBBo3HyFnmPitIPTPfaD1q8LOn/7KFdkY4MJ4e8D3YpV9g==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.691.0.tgz", + "integrity": "sha512-GrcFakf5sZDSFtQGIPzT/5CTl9rLCsua0+yrmz/zidCvd7HFiwPrmyLQSv+MwgEUqHb4unnqUMSo2HKfkV3AIQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.687.0", - "@aws-sdk/client-sts": "3.687.0", - "@aws-sdk/core": "3.686.0", - "@aws-sdk/credential-provider-node": "3.687.0", + "@aws-sdk/client-sso-oidc": "3.691.0", + "@aws-sdk/client-sts": "3.691.0", + "@aws-sdk/core": "3.691.0", + "@aws-sdk/credential-provider-node": "3.691.0", "@aws-sdk/middleware-bucket-endpoint": "3.686.0", "@aws-sdk/middleware-expect-continue": "3.686.0", - "@aws-sdk/middleware-flexible-checksums": "3.689.0", + "@aws-sdk/middleware-flexible-checksums": "3.691.0", "@aws-sdk/middleware-host-header": "3.686.0", "@aws-sdk/middleware-location-constraint": "3.686.0", "@aws-sdk/middleware-logger": "3.686.0", "@aws-sdk/middleware-recursion-detection": "3.686.0", - "@aws-sdk/middleware-sdk-s3": "3.687.0", + "@aws-sdk/middleware-sdk-s3": "3.691.0", "@aws-sdk/middleware-ssec": "3.686.0", - "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/middleware-user-agent": "3.691.0", "@aws-sdk/region-config-resolver": "3.686.0", - "@aws-sdk/signature-v4-multi-region": "3.687.0", + "@aws-sdk/signature-v4-multi-region": "3.691.0", "@aws-sdk/types": "3.686.0", "@aws-sdk/util-endpoints": "3.686.0", "@aws-sdk/util-user-agent-browser": "3.686.0", - "@aws-sdk/util-user-agent-node": "3.687.0", + "@aws-sdk/util-user-agent-node": "3.691.0", "@aws-sdk/xml-builder": "3.686.0", "@smithy/config-resolver": "^3.0.10", "@smithy/core": "^2.5.1", @@ -351,23 +351,23 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.687.0.tgz", - "integrity": "sha512-dfj0y9fQyX4kFill/ZG0BqBTLQILKlL7+O5M4F9xlsh2WNuV2St6WtcOg14Y1j5UODPJiJs//pO+mD1lihT5Kw==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.691.0.tgz", + "integrity": "sha512-bzp4ni6zGxwrlSWhG0MfOh57ORgzdUFlIc2JeQHLO9b6n0iNnG57ILHzo90sQxom6LfW1bXZrsKvYH3vAU8sdA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/middleware-host-header": "3.686.0", "@aws-sdk/middleware-logger": "3.686.0", "@aws-sdk/middleware-recursion-detection": "3.686.0", - "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/middleware-user-agent": "3.691.0", "@aws-sdk/region-config-resolver": "3.686.0", "@aws-sdk/types": "3.686.0", "@aws-sdk/util-endpoints": "3.686.0", "@aws-sdk/util-user-agent-browser": "3.686.0", - "@aws-sdk/util-user-agent-node": "3.687.0", + "@aws-sdk/util-user-agent-node": "3.691.0", "@smithy/config-resolver": "^3.0.10", "@smithy/core": "^2.5.1", "@smithy/fetch-http-handler": "^4.0.0", @@ -400,24 +400,24 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.687.0.tgz", - "integrity": "sha512-Rdd8kLeTeh+L5ZuG4WQnWgYgdv7NorytKdZsGjiag1D8Wv3PcJvPqqWdgnI0Og717BSXVoaTYaN34FyqFYSx6Q==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.691.0.tgz", + "integrity": "sha512-3njUhD4buM1RfigU6IXZ18/R9V5mbqNrAftgDabnNn4/V4Qly32nz+KQONXT5x0GqPszGhp+0mmwuLai9DxSrQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.686.0", - "@aws-sdk/credential-provider-node": "3.687.0", + "@aws-sdk/core": "3.691.0", + "@aws-sdk/credential-provider-node": "3.691.0", "@aws-sdk/middleware-host-header": "3.686.0", "@aws-sdk/middleware-logger": "3.686.0", "@aws-sdk/middleware-recursion-detection": "3.686.0", - "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/middleware-user-agent": "3.691.0", "@aws-sdk/region-config-resolver": "3.686.0", "@aws-sdk/types": "3.686.0", "@aws-sdk/util-endpoints": "3.686.0", "@aws-sdk/util-user-agent-browser": "3.686.0", - "@aws-sdk/util-user-agent-node": "3.687.0", + "@aws-sdk/util-user-agent-node": "3.691.0", "@smithy/config-resolver": "^3.0.10", "@smithy/core": "^2.5.1", "@smithy/fetch-http-handler": "^4.0.0", @@ -449,29 +449,29 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.687.0" + "@aws-sdk/client-sts": "^3.691.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.687.0.tgz", - "integrity": "sha512-SQjDH8O4XCTtouuCVYggB0cCCrIaTzUZIkgJUpOsIEJBLlTbNOb/BZqUShAQw2o9vxr2rCeOGjAQOYPysW/Pmg==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.691.0.tgz", + "integrity": "sha512-Qmj2euPnmIni/eFSrc9LUkg52/2D487fTcKMwZh0ldHv4fD4ossuXX7AaDur8SD9Lc9EOxn/hXCsI644YnGwew==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.687.0", - "@aws-sdk/core": "3.686.0", - "@aws-sdk/credential-provider-node": "3.687.0", + "@aws-sdk/client-sso-oidc": "3.691.0", + "@aws-sdk/core": "3.691.0", + "@aws-sdk/credential-provider-node": "3.691.0", "@aws-sdk/middleware-host-header": "3.686.0", "@aws-sdk/middleware-logger": "3.686.0", "@aws-sdk/middleware-recursion-detection": "3.686.0", - "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/middleware-user-agent": "3.691.0", "@aws-sdk/region-config-resolver": "3.686.0", "@aws-sdk/types": "3.686.0", "@aws-sdk/util-endpoints": "3.686.0", "@aws-sdk/util-user-agent-browser": "3.686.0", - "@aws-sdk/util-user-agent-node": "3.687.0", + "@aws-sdk/util-user-agent-node": "3.691.0", "@smithy/config-resolver": "^3.0.10", "@smithy/core": "^2.5.1", "@smithy/fetch-http-handler": "^4.0.0", @@ -504,17 +504,17 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.686.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.686.0.tgz", - "integrity": "sha512-Xt3DV4DnAT3v2WURwzTxWQK34Ew+iiLzoUoguvLaZrVMFOqMMrwVjP+sizqIaHp1j7rGmFcN5I8saXnsDLuQLA==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.691.0.tgz", + "integrity": "sha512-5hyCj6gX92fXRf1kyfIpJetjVx0NxHbNmcLcrMy6oXuGNIBeJkMp+ZC6uJo3PsIjyPgGQSC++EhjLxpWiF/wHg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.686.0", "@smithy/core": "^2.5.1", "@smithy/node-config-provider": "^3.1.9", - "@smithy/property-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.8", "@smithy/protocol-http": "^4.1.5", - "@smithy/signature-v4": "^4.2.0", + "@smithy/signature-v4": "^4.2.1", "@smithy/smithy-client": "^3.4.2", "@smithy/types": "^3.6.0", "@smithy/util-middleware": "^3.0.8", @@ -526,14 +526,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.686.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.686.0.tgz", - "integrity": "sha512-osD7lPO8OREkgxPiTWmA1i6XEmOth1uW9HWWj/+A2YGCj1G/t2sHu931w4Qj9NWHYZtbTTXQYVRg+TErALV7nQ==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.691.0.tgz", + "integrity": "sha512-c4Ip7tSNxt5VANVyryl6XjfEUCbm7f+iCUEfEWEezywll4DjNZ1N0l7nNmX4dDbwRAB42XH3rk5fbqBe0lXT8g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/types": "3.686.0", - "@smithy/property-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.8", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -542,16 +542,16 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.686.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.686.0.tgz", - "integrity": "sha512-xyGAD/f3vR/wssUiZrNFWQWXZvI4zRm2wpHhoHA1cC2fbRMNFYtFn365yw6dU7l00ZLcdFB1H119AYIUZS7xbw==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.691.0.tgz", + "integrity": "sha512-RL2/d4DbUGeX8xKhXcwQvhAqd+WM3P87znSS5nEQA5pSwqeJsC3l2DCj+09yUM6I9n7nOppe5XephiiBpq190w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/types": "3.686.0", "@smithy/fetch-http-handler": "^4.0.0", "@smithy/node-http-handler": "^3.2.5", - "@smithy/property-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.8", "@smithy/protocol-http": "^4.1.5", "@smithy/smithy-client": "^3.4.2", "@smithy/types": "^3.6.0", @@ -563,21 +563,21 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.687.0.tgz", - "integrity": "sha512-6d5ZJeZch+ZosJccksN0PuXv7OSnYEmanGCnbhUqmUSz9uaVX6knZZfHCZJRgNcfSqg9QC0zsFA/51W5HCUqSQ==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.691.0.tgz", + "integrity": "sha512-NB5jbiBLAWD/oz2CHksKRHo+Q8KI8ljyZUDW091j7IDYEYZZ/c2jDkYWX7eGnJqKNZLxGtcc1B+yYJrE9xXnbQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.686.0", - "@aws-sdk/credential-provider-env": "3.686.0", - "@aws-sdk/credential-provider-http": "3.686.0", - "@aws-sdk/credential-provider-process": "3.686.0", - "@aws-sdk/credential-provider-sso": "3.687.0", - "@aws-sdk/credential-provider-web-identity": "3.686.0", + "@aws-sdk/core": "3.691.0", + "@aws-sdk/credential-provider-env": "3.691.0", + "@aws-sdk/credential-provider-http": "3.691.0", + "@aws-sdk/credential-provider-process": "3.691.0", + "@aws-sdk/credential-provider-sso": "3.691.0", + "@aws-sdk/credential-provider-web-identity": "3.691.0", "@aws-sdk/types": "3.686.0", - "@smithy/credential-provider-imds": "^3.2.4", - "@smithy/property-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/credential-provider-imds": "^3.2.5", + "@smithy/property-provider": "^3.1.8", + "@smithy/shared-ini-file-loader": "^3.1.9", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -585,25 +585,25 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.687.0" + "@aws-sdk/client-sts": "^3.691.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.687.0.tgz", - "integrity": "sha512-Pqld8Nx11NYaBUrVk3bYiGGpLCxkz8iTONlpQWoVWFhSOzlO7zloNOaYbD2XgFjjqhjlKzE91drs/f41uGeCTA==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.691.0.tgz", + "integrity": "sha512-GjQvajKDz6nKWS1Cxdzz2Ecu9R8aojOhRIPAgnG62MG5BvlqDddanF6szcDVSYtlWx+cv2SZ6lDYjoHnDnideQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.686.0", - "@aws-sdk/credential-provider-http": "3.686.0", - "@aws-sdk/credential-provider-ini": "3.687.0", - "@aws-sdk/credential-provider-process": "3.686.0", - "@aws-sdk/credential-provider-sso": "3.687.0", - "@aws-sdk/credential-provider-web-identity": "3.686.0", + "@aws-sdk/credential-provider-env": "3.691.0", + "@aws-sdk/credential-provider-http": "3.691.0", + "@aws-sdk/credential-provider-ini": "3.691.0", + "@aws-sdk/credential-provider-process": "3.691.0", + "@aws-sdk/credential-provider-sso": "3.691.0", + "@aws-sdk/credential-provider-web-identity": "3.691.0", "@aws-sdk/types": "3.686.0", - "@smithy/credential-provider-imds": "^3.2.4", - "@smithy/property-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/credential-provider-imds": "^3.2.5", + "@smithy/property-provider": "^3.1.8", + "@smithy/shared-ini-file-loader": "^3.1.9", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -612,15 +612,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.686.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.686.0.tgz", - "integrity": "sha512-sXqaAgyzMOc+dm4CnzAR5Q6S9OWVHyZjLfW6IQkmGjqeQXmZl24c4E82+w64C+CTkJrFLzH1VNOYp1Hy5gE6Qw==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.691.0.tgz", + "integrity": "sha512-tEoLkcxhF98aVHEyJ0n50rnNRewGUYYXszrNi8/sLh8enbDMWWByWReFPhNriE9oOdcrS5AKU7lCoY9i6zXQ3A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/types": "3.686.0", - "@smithy/property-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/property-provider": "^3.1.8", + "@smithy/shared-ini-file-loader": "^3.1.9", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -629,17 +629,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.687.0.tgz", - "integrity": "sha512-N1YCoE7DovIRF2ReyRrA4PZzF0WNi4ObPwdQQkVxhvSm7PwjbWxrfq7rpYB+6YB1Uq3QPzgVwUFONE36rdpxUQ==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.691.0.tgz", + "integrity": "sha512-CxEiF2LMesk93dG+fCglLyVS9m7rjkWAZFUSSbjW7YbJC0VDks83hQG8EsFv+Grl/kvFITEvU0NoiavI6hbDlw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.687.0", - "@aws-sdk/core": "3.686.0", - "@aws-sdk/token-providers": "3.686.0", + "@aws-sdk/client-sso": "3.691.0", + "@aws-sdk/core": "3.691.0", + "@aws-sdk/token-providers": "3.691.0", "@aws-sdk/types": "3.686.0", - "@smithy/property-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/property-provider": "^3.1.8", + "@smithy/shared-ini-file-loader": "^3.1.9", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -648,14 +648,14 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.686.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.686.0.tgz", - "integrity": "sha512-40UqCpPxyHCXDP7CGd9JIOZDgDZf+u1OyLaGBpjQJlz1HYuEsIWnnbTe29Yg3Ah/Zc3g4NBWcUdlGVotlnpnDg==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.691.0.tgz", + "integrity": "sha512-54FgLnyWpSTlQ8/plZRFSXkI83wgPhJ4zqcX+n+K3BcGil4/Vsn/8+JQSY+6CA6JtDSqhpKAe54o+2DbDexsVg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/types": "3.686.0", - "@smithy/property-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.8", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -663,16 +663,16 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.686.0" + "@aws-sdk/client-sts": "^3.691.0" } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.689.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.689.0.tgz", - "integrity": "sha512-5onxtoSunbrTIt5bttlEAF92A7OJfYDL1+qTEMxdyvLXzOENp3WElXVpKKPeqowuOffABT9ZcoTo/0aHOdZ81w==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.691.0.tgz", + "integrity": "sha512-sX1005ICZhXlWOI/H/EXU/LU6a57zlt7cLPjk+T/JlCldDVGccDTcZh3MFS3DB1FioTlXqf9oSSVoBvJQCNg6g==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^3.1.5", + "@smithy/abort-controller": "^3.1.6", "@smithy/middleware-endpoint": "^3.2.1", "@smithy/smithy-client": "^3.4.2", "buffer": "5.6.0", @@ -684,7 +684,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.689.0" + "@aws-sdk/client-s3": "^3.691.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { @@ -721,15 +721,15 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.689.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.689.0.tgz", - "integrity": "sha512-6VxMOf3mgmAgg6SMagwKj5pAe+putcx2F2odOAWviLcobFpdM/xK9vNry7p6kY+RDNmSlBvcji9wnU59fjV74Q==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.691.0.tgz", + "integrity": "sha512-jBKW3hZ8YpxlAecwuvMDWvs5tqu2I3BubptKeVJiwrEhNR1Yy3gtsZ1RnxCfGEEdVLS4fxc5JRF/jxPFnTT00Q==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/types": "3.686.0", "@smithy/is-array-buffer": "^3.0.0", "@smithy/node-config-provider": "^3.1.9", @@ -803,18 +803,18 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.687.0.tgz", - "integrity": "sha512-YGHYqiyRiNNucmvLrfx3QxIkjSDWR/+cc72bn0lPvqFUQBRHZgmYQLxVYrVZSmRzzkH2FQ1HsZcXhOafLbq4vQ==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.691.0.tgz", + "integrity": "sha512-JYtpQNy9/M0qgihu7RY9vdrtuF+71H3U/BK7EqtskM/ioNL7twAAonCmXA2NXxYjS9bG+/3hw3xZkWSWfYvYFA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/types": "3.686.0", "@aws-sdk/util-arn-parser": "3.679.0", "@smithy/core": "^2.5.1", "@smithy/node-config-provider": "^3.1.9", "@smithy/protocol-http": "^4.1.5", - "@smithy/signature-v4": "^4.2.0", + "@smithy/signature-v4": "^4.2.1", "@smithy/smithy-client": "^3.4.2", "@smithy/types": "^3.6.0", "@smithy/util-config-provider": "^3.0.0", @@ -842,12 +842,12 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.687.0.tgz", - "integrity": "sha512-nUgsKiEinyA50CaDXojAkOasAU3Apdg7Qox6IjNUC4ZjgOu7QWsCDB5N28AYMUt06cNYeYQdfMX1aEzG85a1Mg==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.691.0.tgz", + "integrity": "sha512-d1ieFuOw7Lh4PQguSWceOgX0B4YkZOuYPRZhlAbwx/LQayoZ7LDh//0bbdDdgDgKyNxCTN5EjdoCh/MAPaKIjQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.686.0", + "@aws-sdk/core": "3.691.0", "@aws-sdk/types": "3.686.0", "@aws-sdk/util-endpoints": "3.686.0", "@smithy/core": "^2.5.1", @@ -877,12 +877,12 @@ } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.689.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.689.0.tgz", - "integrity": "sha512-E9P59HEsPeFuO10yKyYE180J3V1DRVFTa0H0XzrBTP+s2g9g8xvfyGqoDYJw5YHUckqls39jT5nlbrf+kBSrfg==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.691.0.tgz", + "integrity": "sha512-aDGp+7uL9p+HXeG28pVS8z1VSqNOscbK9QcemRCHiIZCXUi+IzUTP0G7tzTQN4WjxYkjRC9dC9QEKE3KTh7z2Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.687.0", + "@aws-sdk/signature-v4-multi-region": "3.691.0", "@aws-sdk/types": "3.686.0", "@aws-sdk/util-format-url": "3.686.0", "@smithy/middleware-endpoint": "^3.2.1", @@ -896,15 +896,15 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.687.0.tgz", - "integrity": "sha512-vdOQHCRHJPX9mT8BM6xOseazHD6NodvHl9cyF5UjNtLn+gERRJEItIA9hf0hlt62odGD8Fqp+rFRuqdmbNkcNw==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.691.0.tgz", + "integrity": "sha512-xCKaOoKJMTHxDWA82KTFOqAQUyGEKUqH+Est9aruR9alawbRx+qiLNt/+AhLrGT8IaFNycuD7P73V8yScJKE2g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.687.0", + "@aws-sdk/middleware-sdk-s3": "3.691.0", "@aws-sdk/types": "3.686.0", "@smithy/protocol-http": "^4.1.5", - "@smithy/signature-v4": "^4.2.0", + "@smithy/signature-v4": "^4.2.1", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -913,14 +913,14 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.686.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.686.0.tgz", - "integrity": "sha512-9oL4kTCSePFmyKPskibeiOXV6qavPZ63/kXM9Wh9V6dTSvBtLeNnMxqGvENGKJcTdIgtoqyqA6ET9u0PJ5IRIg==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.691.0.tgz", + "integrity": "sha512-XtBnNUOzdezdC/7bFYAenrUQCZI5raHZ1F+7qWEbEDbshz4nR6v0MczVXkaPsSJ6mel0sQMhYs7b3Y/0yUkB6w==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.686.0", - "@smithy/property-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/property-provider": "^3.1.8", + "@smithy/shared-ini-file-loader": "^3.1.9", "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, @@ -928,7 +928,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.686.0" + "@aws-sdk/client-sso-oidc": "^3.691.0" } }, "node_modules/@aws-sdk/types": { @@ -1011,12 +1011,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.687.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.687.0.tgz", - "integrity": "sha512-idkP6ojSTZ4ek1pJ8wIN7r9U3KR5dn0IkJn3KQBXQ58LWjkRqLtft2vxzdsktWwhPKjjmIKl1S0kbvqLawf8XQ==", + "version": "3.691.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.691.0.tgz", + "integrity": "sha512-n+g337W2W/S3Ju47vBNs970477WsLidmdQp1jaxFaBYjSV8l7Tm4dZNMtrq4AEvS+2ErkLpm9BmTiREoWR38Ag==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/middleware-user-agent": "3.691.0", "@aws-sdk/types": "3.686.0", "@smithy/node-config-provider": "^3.1.9", "@smithy/types": "^3.6.0", @@ -1707,9 +1707,9 @@ } }, "node_modules/@hey-api/openapi-ts": { - "version": "0.55.2", - "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.55.2.tgz", - "integrity": "sha512-EdVslFxtV27prj8oLWCm4ZOFAx+zGOqRVbDkKOcaYzg6wQQdvQ0j14LMapvhM0PtP2hkffh6PGeh6dt9aJORZQ==", + "version": "0.55.3", + "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.55.3.tgz", + "integrity": "sha512-eboeFHqMimdTwhO5VrBl2HoPzby0wlbO8900N3ukvGu8dG9PgXGzHBcLF2ukwt4TReNcsIm3daj/9cqcJ5LWUQ==", "dev": true, "license": "FSL-1.1-MIT", "dependencies": { @@ -3742,9 +3742,9 @@ } }, "node_modules/alien-signals": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.2.1.tgz", - "integrity": "sha512-FlEQrDJe9r2RI4cDlnK2zYqJezvx1uJaWEuwxsnlFqnPwvJbgitNBRumWrLDv8lA+7cCikpMxfJD2TTHiaTklA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.2.2.tgz", + "integrity": "sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A==", "dev": true, "license": "MIT" }, diff --git a/src/components/MarkdownRenderer.vue b/src/components/MarkdownRenderer.vue index 906e7d5ba849cfedb744a53d043ae44eb295d540..936b9bc66d5ce768029d15662e324e98d6141d46 100644 --- a/src/components/MarkdownRenderer.vue +++ b/src/components/MarkdownRenderer.vue @@ -5,7 +5,7 @@ import DOMPurify from "dompurify"; import { computed } from "vue"; const props = defineProps<{ - markdown: string; + markdown?: string; }>(); const converter = new showdown.Converter({ @@ -14,7 +14,7 @@ const converter = new showdown.Converter({ }); converter.setFlavor("github"); const outputHtml = computed<string>(() => { - const dirtyHTML = converter.makeHtml(props.markdown); + const dirtyHTML = converter.makeHtml(props.markdown ?? ""); return DOMPurify.sanitize(dirtyHTML); }); </script> diff --git a/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue b/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue index c1517193021a794f021b68df27680975374a3ca4..9e401bef0ed515301edc01ba9cdbc981ac29cdba 100644 --- a/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue +++ b/src/components/parameter-schema/ParameterSchemaDescriptionComponent.vue @@ -44,10 +44,16 @@ const navParameterGroups = computed<ParameterGroup[]>(() => { return groups; }); +const schemaDefinitions = computed<Record<string, never>>( + () => props.schema?.["definitions"] ?? props.schema?.["$defs"], +); + +/* eslint-disable @typescript-eslint/ban-ts-comment */ +// @ts-ignore const parameterGroups = computed<Record<string, never>>(() => { if (Object.keys(props.schema?.["properties"] ?? {}).length > 0) { return { - ...props.schema?.["definitions"], + ...schemaDefinitions.value, ungrouped_parameters: { title: "Ungrouped Parameters", properties: props.schema?.["properties"], @@ -55,7 +61,7 @@ const parameterGroups = computed<Record<string, never>>(() => { }, }; } - return props.schema?.["definitions"]; + return schemaDefinitions.value; }); </script> @@ -64,7 +70,7 @@ const parameterGroups = computed<Record<string, never>>(() => { <div class="col-9"> <div v-for="(group, groupName) in parameterGroups" :key="groupName"> <parameter-group-description - :parameter-group="group" + :schema-properties="parameterGroups" class="schema-group-description" :parameter-group-name="groupName" :show-hidden="showHidden" diff --git a/src/components/parameter-schema/ParameterSchemaFormComponent.vue b/src/components/parameter-schema/ParameterSchemaFormComponent.vue index 1b5086caf859d35d537a84d29881dce0325ce083..a0c2069bef6e9a11ab17355e129a463981a602e8 100644 --- a/src/components/parameter-schema/ParameterSchemaFormComponent.vue +++ b/src/components/parameter-schema/ParameterSchemaFormComponent.vue @@ -115,10 +115,16 @@ const formState = reactive<{ // Computed Properties // ============================================================================= +const schemaDefinitions = computed<Record<string, never>>( + () => props.schema?.["definitions"] ?? props.schema?.["$defs"], +); + +/* eslint-disable @typescript-eslint/ban-ts-comment */ +// @ts-ignore const parameterGroups = computed<Record<string, never>>(() => { if (Object.keys(props.schema?.["properties"] ?? {}).length > 0) { return { - ...props.schema?.["definitions"], + ...schemaDefinitions.value, ungrouped_parameters: { title: "Ungrouped Parameters", properties: props.schema?.["properties"], @@ -126,7 +132,7 @@ const parameterGroups = computed<Record<string, never>>(() => { }, }; } - return props.schema?.["definitions"]; + return schemaDefinitions.value; }); // Create a list with the names of all parameter groups diff --git a/src/components/parameter-schema/description-mode/ParameterDescription.vue b/src/components/parameter-schema/description-mode/ParameterDescription.vue index 33f35f1a8efd775ef256b8a2c1d4749017571530..016f8ec15f8e2a0a7ed9fca78f85ff9713263c3d 100644 --- a/src/components/parameter-schema/description-mode/ParameterDescription.vue +++ b/src/components/parameter-schema/description-mode/ParameterDescription.vue @@ -1,14 +1,18 @@ <script setup lang="ts"> -import { computed } from "vue"; +import { computed, onMounted, type PropType } from "vue"; import FontAwesomeIcon from "@/components/FontAwesomeIcon.vue"; import MarkdownRenderer from "@/components/MarkdownRenderer.vue"; +import type { ParameterAnyOfDependencies } from "@/types/WorkflowParameters.ts"; +import { Tooltip } from "bootstrap"; const props = defineProps({ parameter: { type: Object, required: true, validator(value: Record<string, never>) { - return ["boolean", "array", "number", "string"].includes(value["type"]); + return ["boolean", "array", "number", "string", "integer"].includes( + value["type"], + ); }, }, required: Boolean, @@ -24,6 +28,11 @@ const props = defineProps({ type: Boolean, default: false, }, + dependencies: { + type: Array as PropType<string[]>, + required: false, + }, + anyOfDependencies: Object as PropType<ParameterAnyOfDependencies>, }); const randomIDSuffix = Math.random().toString(16).substring(2, 8); @@ -51,10 +60,56 @@ const showRightColum = computed<boolean>( props.required || defaultValue.value != undefined, ); + +const anyOfTooltip = computed<string | undefined>(() => { + let labelText: string | undefined = undefined; + if (props.anyOfDependencies != undefined) { + labelText = "<ul class='ps-3 ms-0 mb-0 text-start'>"; + if (props.anyOfDependencies.group.length > 0) { + labelText += + "<li>When this is set, these are also required:<ul >" + + props.anyOfDependencies.group + .map((a) => "<li>--" + a + "</li>") + .join("") + + "</ul></li>"; + } + labelText += + "<li>Set this or any of these parameters:<ul>" + + props.anyOfDependencies.dependencies + .map((a) => "<li>--" + a + "</li>") + .join("") + + "</ul></li></ul>"; + } + return labelText; +}); + +// object with parameter name as key and tooltip string for dependentRequired label as value +const dependentTooltip = computed<string | undefined>(() => { + if (props.dependencies != undefined) { + return ( + "Required when these are set: <ul class='ps-4 mb-0 text-start'>" + + props.dependencies.map((a) => "<li>--" + a + "</li>").join("") + + "</ul></li>" + ); + } + return undefined; +}); +onMounted(() => { + document + ?.querySelector(`#parameter-${randomIDSuffix}`) + ?.querySelectorAll("[data-bs-toggle=tooltip]") + .forEach((tooltipTriggerEl) => { + Tooltip.getOrCreateInstance(tooltipTriggerEl); + }); +}); </script> <template> - <div v-if="showHidden || !hidden" class="border-top"> + <div + :id="`parameter-${randomIDSuffix}`" + :hidden="!showHidden && hidden" + class="border-top" + > <div class="d-flex pt-2 justify-content-between"> <div class="flex-fill ps-2"> <div class="row"> @@ -64,6 +119,26 @@ const showRightColum = computed<boolean>( >--{{ props.parameterName }}</code > </div> + <span + v-if="anyOfTooltip != undefined" + class="rounded p-1 bg-secondary ms-2 label w-fit" + data-bs-toggle="tooltip" + data-bs-placement="bottom" + :data-bs-title="anyOfTooltip" + data-bs-custom-class="parameter-form-tooltip" + data-bs-html="true" + >anyOf</span + > + <span + v-if="dependentTooltip != undefined" + class="rounded p-1 bg-secondary ms-2 label w-fit" + data-bs-toggle="tooltip" + data-bs-placement="bottom" + :data-bs-title="dependentTooltip" + data-bs-custom-class="parameter-form-tooltip" + data-bs-html="true" + >dependent</span + > </div> <div class="row align-items-start mt-2"> <div class="col-auto"> @@ -155,4 +230,8 @@ a:hover { code.border { backdrop-filter: brightness(0.95); } + +.label { + cursor: help; +} </style> diff --git a/src/components/parameter-schema/description-mode/ParameterGroupDescription.vue b/src/components/parameter-schema/description-mode/ParameterGroupDescription.vue index acd145139016082edfbba47cc5f3df6780e2d26d..dd00f5b2cb6f3c4159033ef24baebad3e96c58c3 100644 --- a/src/components/parameter-schema/description-mode/ParameterGroupDescription.vue +++ b/src/components/parameter-schema/description-mode/ParameterGroupDescription.vue @@ -2,19 +2,17 @@ import { computed, type PropType } from "vue"; import FontAwesomeIcon from "@/components/FontAwesomeIcon.vue"; import ParameterDescription from "@/components/parameter-schema/description-mode/ParameterDescription.vue"; +import type { ParameterAnyOfDependencies } from "@/types/WorkflowParameters.ts"; const props = defineProps({ - parameterGroup: { - type: Object, - required: true, - validator(value: Record<string, never>) { - return "object" === value["type"]; - }, - }, parameterGroupName: { type: String, required: true, }, + schemaProperties: { + type: Object, + required: true, + }, showHidden: { type: Boolean, default: false, @@ -25,9 +23,12 @@ const props = defineProps({ }, }); -const title = computed<string>(() => props.parameterGroup["title"]); -const icon = computed<string>(() => props.parameterGroup["fa_icon"]); -const description = computed<string>(() => props.parameterGroup["description"]); +const title = computed<string>(() => parameterGroup.value["title"]); +const icon = computed<string>(() => parameterGroup.value["fa_icon"]); +const description = computed<string>(() => parameterGroup.value["description"]); +const parameters = computed<Record<string, never>>( + () => parameterGroup.value["properties"], +); const groupHidden = computed<boolean>(() => Object.keys(parameters.value).reduce( @@ -36,16 +37,65 @@ const groupHidden = computed<boolean>(() => ), ); -const parameters = computed<Record<string, never>>( - () => props.parameterGroup["properties"], +const parameterGroup = computed( + () => props.schemaProperties[props.parameterGroupName], +); + +/* +Object with parameter name as key and list of parameters that make the parameter required if they are set as value +JSONSchema DependentRequired + */ +const parameterDependenciesPerParameter = computed<Record<string, string[]>>( + () => { + const r: Record<string, string[]> = {}; + for (const groupName of Object.keys(props.schemaProperties)) { + const dep = + props.schemaProperties[groupName]["dependentRequired"] ?? + props.schemaProperties[groupName]["dependencies"] ?? + {}; + for (const paramName of Object.keys(dep)) { + for (const depParam of dep[paramName]) { + if (parameters.value[depParam] != undefined) { + if (r[depParam] == undefined) { + r[depParam] = [paramName]; + } else { + r[depParam].push(depParam); + } + } + } + } + } + return r; + }, ); + +// object with parameter name as key and anyOf dependencies as value +const parameterAnyOfDependenciesPerParameter = computed< + Record<string, ParameterAnyOfDependencies> +>(() => { + const b: string[][] = + parameterGroup.value["anyOf"] + ?.map((b: Record<string, string[]>) => b["required"] ?? []) + ?.filter((b: string[]) => b.length > 0) ?? []; + const r: Record<string, ParameterAnyOfDependencies> = {}; + for (const paramName of b.flat()) { + r[paramName] = { + group: + b.find((a) => a.includes(paramName))?.filter((a) => a != paramName) ?? + [], + dependencies: b.filter((a) => !a.includes(paramName)).flat(), + }; + } + return r; +}); </script> <template> - <div v-if="props.showHidden || !groupHidden" class="mb-5"> + <div :hidden="!props.showHidden && groupHidden" class="mb-5"> <div class="row"> <h2 :id="props.parameterGroupName"> - <font-awesome-icon v-if="icon" :icon="icon" class="me-3" />{{ title }} + <font-awesome-icon v-if="icon" :icon="icon" class="me-3" /> + {{ title }} </h2> <h4>{{ description }}</h4> </div> @@ -57,11 +107,13 @@ const parameters = computed<Record<string, never>>( v-if="parameter['type'] !== 'object'" :parameter-name="parameterName" :parameter="parameter" - :required=" - props.parameterGroup['required']?.includes(parameterName) ?? false - " + :required="parameterGroup['required']?.includes(parameterName) ?? false" :show-hidden="showHidden" :clowm-resource="resourceParameters?.includes(parameterName)" + :dependencies="parameterDependenciesPerParameter[parameterName]" + :any-of-dependencies=" + parameterAnyOfDependenciesPerParameter[parameterName] + " /> </template> </div> diff --git a/src/components/parameter-schema/form-mode/ParameterGroupForm.vue b/src/components/parameter-schema/form-mode/ParameterGroupForm.vue index caeeb6d5571625585054da667a35c09959f52ba7..ba8b1b583ecab4353fb2b53de8d819c678a0157d 100644 --- a/src/components/parameter-schema/form-mode/ParameterGroupForm.vue +++ b/src/components/parameter-schema/form-mode/ParameterGroupForm.vue @@ -2,7 +2,10 @@ import FontAwesomeIcon from "@/components/FontAwesomeIcon.vue"; import { computed, onMounted, type PropType } from "vue"; import MarkdownRenderer from "@/components/MarkdownRenderer.vue"; -import type { FlatWorkflowParameters } from "@/types/WorkflowParameters"; +import type { + FlatWorkflowParameters, + ParameterAnyOfDependencies, +} from "@/types/WorkflowParameters"; import ParameterInput from "@/components/parameter-schema/form-mode/ParameterInput.vue"; import { Tooltip } from "bootstrap"; import { md5 } from "@/utils/md5"; @@ -128,11 +131,6 @@ function parameterAnyOfRequired(parameterName: string): boolean { ); } -interface ParameterAnyOfDependencies { - group: string[]; // AND group in OR combination - dependencies: string[]; // OR combination to fulfill -} - // object with parameter name as key and anyOf dependencies as value const parameterAnyOfDependenciesPerParameter = computed< Record<string, ParameterAnyOfDependencies> diff --git a/src/types/WorkflowParameters.ts b/src/types/WorkflowParameters.ts index 51b702e09f5ad66d5c6cd783e9a7b8afe8760acc..b13fbe918c3571684dd38a3c81841ed94fdb6f85 100644 --- a/src/types/WorkflowParameters.ts +++ b/src/types/WorkflowParameters.ts @@ -17,3 +17,8 @@ export type TemporaryParams = { params?: NestedWorkflowParameters; metaParams?: WorkflowMetaParameters; }; + +export interface ParameterAnyOfDependencies { + group: string[]; // AND group in OR combination + dependencies: string[]; // OR combination to fulfill +}