From 450d100c39839a1b158fb4b0d0ef07c115621caf Mon Sep 17 00:00:00 2001
From: Max <53796487+dyedwiper@users.noreply.github.com>
Date: Wed, 29 Jan 2025 14:13:52 +0100
Subject: [PATCH 1/6] BC-8861 Revert upgrade of aws dependencies (#5472)
---
package-lock.json | 5103 +++++++++++++++++++++++++++++++--------------
package.json | 4 +-
2 files changed, 3547 insertions(+), 1560 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 091401d6d4..2f4a532a23 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,8 +8,8 @@
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
- "@aws-sdk/client-s3": "^3.731.1",
- "@aws-sdk/lib-storage": "^3.731.1",
+ "@aws-sdk/client-s3": "3.617.0",
+ "@aws-sdk/lib-storage": "3.617.0",
"@feathersjs/adapter-commons": "^5.0.31",
"@feathersjs/authentication": "^5.0.31",
"@feathersjs/authentication-local": "^5.0.31",
@@ -864,70 +864,72 @@
}
},
"node_modules/@aws-sdk/client-s3": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.731.1.tgz",
- "integrity": "sha512-Ab2PA/8Th6JkurCkxnQJZHPE/JnnSsX/XHQzirkQb+JpKOyWMRC/YZUBfAaiwhxqX65RHgklrwil+UbFl4TtAQ==",
+ "version": "3.617.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.617.0.tgz",
+ "integrity": "sha512-0f954CU42BhPFVRQCCBc1jAvV9N4XW9I3D4h7tJ8tzxft7fS62MSJkgxRIXNKgWKLeGR7DUbz+XGZ1R5e7pyjA==",
"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/core": "3.731.0",
- "@aws-sdk/credential-provider-node": "3.731.1",
- "@aws-sdk/middleware-bucket-endpoint": "3.731.0",
- "@aws-sdk/middleware-expect-continue": "3.731.0",
- "@aws-sdk/middleware-flexible-checksums": "3.731.0",
- "@aws-sdk/middleware-host-header": "3.731.0",
- "@aws-sdk/middleware-location-constraint": "3.731.0",
- "@aws-sdk/middleware-logger": "3.731.0",
- "@aws-sdk/middleware-recursion-detection": "3.731.0",
- "@aws-sdk/middleware-sdk-s3": "3.731.0",
- "@aws-sdk/middleware-ssec": "3.731.0",
- "@aws-sdk/middleware-user-agent": "3.731.0",
- "@aws-sdk/region-config-resolver": "3.731.0",
- "@aws-sdk/signature-v4-multi-region": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@aws-sdk/util-endpoints": "3.731.0",
- "@aws-sdk/util-user-agent-browser": "3.731.0",
- "@aws-sdk/util-user-agent-node": "3.731.0",
- "@aws-sdk/xml-builder": "3.723.0",
- "@smithy/config-resolver": "^4.0.0",
- "@smithy/core": "^3.0.0",
- "@smithy/eventstream-serde-browser": "^4.0.0",
- "@smithy/eventstream-serde-config-resolver": "^4.0.0",
- "@smithy/eventstream-serde-node": "^4.0.0",
- "@smithy/fetch-http-handler": "^5.0.0",
- "@smithy/hash-blob-browser": "^4.0.0",
- "@smithy/hash-node": "^4.0.0",
- "@smithy/hash-stream-node": "^4.0.0",
- "@smithy/invalid-dependency": "^4.0.0",
- "@smithy/md5-js": "^4.0.0",
- "@smithy/middleware-content-length": "^4.0.0",
- "@smithy/middleware-endpoint": "^4.0.0",
- "@smithy/middleware-retry": "^4.0.0",
- "@smithy/middleware-serde": "^4.0.0",
- "@smithy/middleware-stack": "^4.0.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/node-http-handler": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/smithy-client": "^4.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/url-parser": "^4.0.0",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.0",
- "@smithy/util-defaults-mode-node": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
- "@smithy/util-middleware": "^4.0.0",
- "@smithy/util-retry": "^4.0.0",
- "@smithy/util-stream": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
- "@smithy/util-waiter": "^4.0.0",
+ "@aws-sdk/client-sso-oidc": "3.616.0",
+ "@aws-sdk/client-sts": "3.616.0",
+ "@aws-sdk/core": "3.616.0",
+ "@aws-sdk/credential-provider-node": "3.616.0",
+ "@aws-sdk/middleware-bucket-endpoint": "3.616.0",
+ "@aws-sdk/middleware-expect-continue": "3.616.0",
+ "@aws-sdk/middleware-flexible-checksums": "3.616.0",
+ "@aws-sdk/middleware-host-header": "3.616.0",
+ "@aws-sdk/middleware-location-constraint": "3.609.0",
+ "@aws-sdk/middleware-logger": "3.609.0",
+ "@aws-sdk/middleware-recursion-detection": "3.616.0",
+ "@aws-sdk/middleware-sdk-s3": "3.617.0",
+ "@aws-sdk/middleware-signing": "3.616.0",
+ "@aws-sdk/middleware-ssec": "3.609.0",
+ "@aws-sdk/middleware-user-agent": "3.616.0",
+ "@aws-sdk/region-config-resolver": "3.614.0",
+ "@aws-sdk/signature-v4-multi-region": "3.617.0",
+ "@aws-sdk/types": "3.609.0",
+ "@aws-sdk/util-endpoints": "3.614.0",
+ "@aws-sdk/util-user-agent-browser": "3.609.0",
+ "@aws-sdk/util-user-agent-node": "3.614.0",
+ "@aws-sdk/xml-builder": "3.609.0",
+ "@smithy/config-resolver": "^3.0.5",
+ "@smithy/core": "^2.2.7",
+ "@smithy/eventstream-serde-browser": "^3.0.4",
+ "@smithy/eventstream-serde-config-resolver": "^3.0.3",
+ "@smithy/eventstream-serde-node": "^3.0.4",
+ "@smithy/fetch-http-handler": "^3.2.2",
+ "@smithy/hash-blob-browser": "^3.1.2",
+ "@smithy/hash-node": "^3.0.3",
+ "@smithy/hash-stream-node": "^3.1.2",
+ "@smithy/invalid-dependency": "^3.0.3",
+ "@smithy/md5-js": "^3.0.3",
+ "@smithy/middleware-content-length": "^3.0.4",
+ "@smithy/middleware-endpoint": "^3.0.5",
+ "@smithy/middleware-retry": "^3.0.10",
+ "@smithy/middleware-serde": "^3.0.3",
+ "@smithy/middleware-stack": "^3.0.3",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/node-http-handler": "^3.1.3",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/smithy-client": "^3.1.8",
+ "@smithy/types": "^3.3.0",
+ "@smithy/url-parser": "^3.0.3",
+ "@smithy/util-base64": "^3.0.0",
+ "@smithy/util-body-length-browser": "^3.0.0",
+ "@smithy/util-body-length-node": "^3.0.0",
+ "@smithy/util-defaults-mode-browser": "^3.0.10",
+ "@smithy/util-defaults-mode-node": "^3.0.10",
+ "@smithy/util-endpoints": "^2.0.5",
+ "@smithy/util-retry": "^3.0.3",
+ "@smithy/util-stream": "^3.1.0",
+ "@smithy/util-utf8": "^3.0.0",
+ "@smithy/util-waiter": "^3.1.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-crypto/sha256-browser": {
@@ -1006,286 +1008,404 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.731.0.tgz",
- "integrity": "sha512-O4C/UYGgqMsBg21MMApFdgyh8BX568hQhbdoNFmRVTBoSnCZ3w+H4a1wBPX4Gyl0NX+ab6Xxo9rId8HiyPXJ0A==",
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.616.0.tgz",
+ "integrity": "sha512-hwW0u1f8U4dSloAe61/eupUiGd5Q13B72BuzGxvRk0cIpYX/2m0KBG8DDl7jW1b2QQ+CflTLpG2XUf2+vRJxGA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/middleware-host-header": "3.731.0",
- "@aws-sdk/middleware-logger": "3.731.0",
- "@aws-sdk/middleware-recursion-detection": "3.731.0",
- "@aws-sdk/middleware-user-agent": "3.731.0",
- "@aws-sdk/region-config-resolver": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@aws-sdk/util-endpoints": "3.731.0",
- "@aws-sdk/util-user-agent-browser": "3.731.0",
- "@aws-sdk/util-user-agent-node": "3.731.0",
- "@smithy/config-resolver": "^4.0.0",
- "@smithy/core": "^3.0.0",
- "@smithy/fetch-http-handler": "^5.0.0",
- "@smithy/hash-node": "^4.0.0",
- "@smithy/invalid-dependency": "^4.0.0",
- "@smithy/middleware-content-length": "^4.0.0",
- "@smithy/middleware-endpoint": "^4.0.0",
- "@smithy/middleware-retry": "^4.0.0",
- "@smithy/middleware-serde": "^4.0.0",
- "@smithy/middleware-stack": "^4.0.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/node-http-handler": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/smithy-client": "^4.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/url-parser": "^4.0.0",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.0",
- "@smithy/util-defaults-mode-node": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
- "@smithy/util-middleware": "^4.0.0",
- "@smithy/util-retry": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.616.0",
+ "@aws-sdk/middleware-host-header": "3.616.0",
+ "@aws-sdk/middleware-logger": "3.609.0",
+ "@aws-sdk/middleware-recursion-detection": "3.616.0",
+ "@aws-sdk/middleware-user-agent": "3.616.0",
+ "@aws-sdk/region-config-resolver": "3.614.0",
+ "@aws-sdk/types": "3.609.0",
+ "@aws-sdk/util-endpoints": "3.614.0",
+ "@aws-sdk/util-user-agent-browser": "3.609.0",
+ "@aws-sdk/util-user-agent-node": "3.614.0",
+ "@smithy/config-resolver": "^3.0.5",
+ "@smithy/core": "^2.2.7",
+ "@smithy/fetch-http-handler": "^3.2.2",
+ "@smithy/hash-node": "^3.0.3",
+ "@smithy/invalid-dependency": "^3.0.3",
+ "@smithy/middleware-content-length": "^3.0.4",
+ "@smithy/middleware-endpoint": "^3.0.5",
+ "@smithy/middleware-retry": "^3.0.10",
+ "@smithy/middleware-serde": "^3.0.3",
+ "@smithy/middleware-stack": "^3.0.3",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/node-http-handler": "^3.1.3",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/smithy-client": "^3.1.8",
+ "@smithy/types": "^3.3.0",
+ "@smithy/url-parser": "^3.0.3",
+ "@smithy/util-base64": "^3.0.0",
+ "@smithy/util-body-length-browser": "^3.0.0",
+ "@smithy/util-body-length-node": "^3.0.0",
+ "@smithy/util-defaults-mode-browser": "^3.0.10",
+ "@smithy/util-defaults-mode-node": "^3.0.10",
+ "@smithy/util-endpoints": "^2.0.5",
+ "@smithy/util-middleware": "^3.0.3",
+ "@smithy/util-retry": "^3.0.3",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.731.0.tgz",
- "integrity": "sha512-h0WWZg4QMLgFVyIvQrC43zpVqsUWg1mPM1clpogP43B8+wEhDEQ4qWRzvFs3dQ4cqx/FLyDUZZF4cqgd94z7kw==",
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.616.0.tgz",
+ "integrity": "sha512-YY1hpYS/G1uRGjQf88dL8VLHkP/IjGxKeXdhy+JnzMdCkAWl3V9j0fEALw40NZe0x79gr6R2KUOUH/IKYQfUmg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.616.0",
+ "@aws-sdk/credential-provider-node": "3.616.0",
+ "@aws-sdk/middleware-host-header": "3.616.0",
+ "@aws-sdk/middleware-logger": "3.609.0",
+ "@aws-sdk/middleware-recursion-detection": "3.616.0",
+ "@aws-sdk/middleware-user-agent": "3.616.0",
+ "@aws-sdk/region-config-resolver": "3.614.0",
+ "@aws-sdk/types": "3.609.0",
+ "@aws-sdk/util-endpoints": "3.614.0",
+ "@aws-sdk/util-user-agent-browser": "3.609.0",
+ "@aws-sdk/util-user-agent-node": "3.614.0",
+ "@smithy/config-resolver": "^3.0.5",
+ "@smithy/core": "^2.2.7",
+ "@smithy/fetch-http-handler": "^3.2.2",
+ "@smithy/hash-node": "^3.0.3",
+ "@smithy/invalid-dependency": "^3.0.3",
+ "@smithy/middleware-content-length": "^3.0.4",
+ "@smithy/middleware-endpoint": "^3.0.5",
+ "@smithy/middleware-retry": "^3.0.10",
+ "@smithy/middleware-serde": "^3.0.3",
+ "@smithy/middleware-stack": "^3.0.3",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/node-http-handler": "^3.1.3",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/smithy-client": "^3.1.8",
+ "@smithy/types": "^3.3.0",
+ "@smithy/url-parser": "^3.0.3",
+ "@smithy/util-base64": "^3.0.0",
+ "@smithy/util-body-length-browser": "^3.0.0",
+ "@smithy/util-body-length-node": "^3.0.0",
+ "@smithy/util-defaults-mode-browser": "^3.0.10",
+ "@smithy/util-defaults-mode-node": "^3.0.10",
+ "@smithy/util-endpoints": "^2.0.5",
+ "@smithy/util-middleware": "^3.0.3",
+ "@smithy/util-retry": "^3.0.3",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/client-sts": "^3.616.0"
}
},
- "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.731.1.tgz",
- "integrity": "sha512-0M0ejuqW8iHNcTH2ZXSY9m+I7Y06qVkj6k3vfQU9XaB//mTUCxxfGfqWAtgfr7Yi73egABTcPc0jyPdcvSW4Kw==",
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sts": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.616.0.tgz",
+ "integrity": "sha512-FP7i7hS5FpReqnysQP1ukQF1OUWy8lkomaOnbu15H415YUrfCp947SIx6+BItjmx+esKxPkEjh/fbCVzw2D6hQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/credential-provider-env": "3.731.0",
- "@aws-sdk/credential-provider-http": "3.731.0",
- "@aws-sdk/credential-provider-process": "3.731.0",
- "@aws-sdk/credential-provider-sso": "3.731.1",
- "@aws-sdk/credential-provider-web-identity": "3.731.1",
- "@aws-sdk/nested-clients": "3.731.1",
- "@aws-sdk/types": "3.731.0",
- "@smithy/credential-provider-imds": "^4.0.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/shared-ini-file-loader": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/client-sso-oidc": "3.616.0",
+ "@aws-sdk/core": "3.616.0",
+ "@aws-sdk/credential-provider-node": "3.616.0",
+ "@aws-sdk/middleware-host-header": "3.616.0",
+ "@aws-sdk/middleware-logger": "3.609.0",
+ "@aws-sdk/middleware-recursion-detection": "3.616.0",
+ "@aws-sdk/middleware-user-agent": "3.616.0",
+ "@aws-sdk/region-config-resolver": "3.614.0",
+ "@aws-sdk/types": "3.609.0",
+ "@aws-sdk/util-endpoints": "3.614.0",
+ "@aws-sdk/util-user-agent-browser": "3.609.0",
+ "@aws-sdk/util-user-agent-node": "3.614.0",
+ "@smithy/config-resolver": "^3.0.5",
+ "@smithy/core": "^2.2.7",
+ "@smithy/fetch-http-handler": "^3.2.2",
+ "@smithy/hash-node": "^3.0.3",
+ "@smithy/invalid-dependency": "^3.0.3",
+ "@smithy/middleware-content-length": "^3.0.4",
+ "@smithy/middleware-endpoint": "^3.0.5",
+ "@smithy/middleware-retry": "^3.0.10",
+ "@smithy/middleware-serde": "^3.0.3",
+ "@smithy/middleware-stack": "^3.0.3",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/node-http-handler": "^3.1.3",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/smithy-client": "^3.1.8",
+ "@smithy/types": "^3.3.0",
+ "@smithy/url-parser": "^3.0.3",
+ "@smithy/util-base64": "^3.0.0",
+ "@smithy/util-body-length-browser": "^3.0.0",
+ "@smithy/util-body-length-node": "^3.0.0",
+ "@smithy/util-defaults-mode-browser": "^3.0.10",
+ "@smithy/util-defaults-mode-node": "^3.0.10",
+ "@smithy/util-endpoints": "^2.0.5",
+ "@smithy/util-middleware": "^3.0.3",
+ "@smithy/util-retry": "^3.0.3",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.731.1.tgz",
- "integrity": "sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==",
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz",
+ "integrity": "sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.731.0",
- "@aws-sdk/credential-provider-http": "3.731.0",
- "@aws-sdk/credential-provider-ini": "3.731.1",
- "@aws-sdk/credential-provider-process": "3.731.0",
- "@aws-sdk/credential-provider-sso": "3.731.1",
- "@aws-sdk/credential-provider-web-identity": "3.731.1",
- "@aws-sdk/types": "3.731.0",
- "@smithy/credential-provider-imds": "^4.0.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/shared-ini-file-loader": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.616.0.tgz",
+ "integrity": "sha512-5gQdMr9cca3xV7FF2SxpxWGH2t6+t4o+XBGiwsHm8muEjf4nUmw7Ij863x25Tjt2viPYV0UStczSb5Sihp7bkA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.609.0",
+ "@aws-sdk/credential-provider-http": "3.616.0",
+ "@aws-sdk/credential-provider-process": "3.614.0",
+ "@aws-sdk/credential-provider-sso": "3.616.0",
+ "@aws-sdk/credential-provider-web-identity": "3.609.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/credential-provider-imds": "^3.1.4",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/shared-ini-file-loader": "^3.1.4",
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/client-sts": "^3.616.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.616.0.tgz",
+ "integrity": "sha512-Se+u6DAxjDPjKE3vX1X2uxjkWgGq69BTo0uTB0vDUiWwBVgh16s9BsBhSAlKEH1CCbbJHvOg4YdTrzjwzqyClg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.609.0",
+ "@aws-sdk/credential-provider-http": "3.616.0",
+ "@aws-sdk/credential-provider-ini": "3.616.0",
+ "@aws-sdk/credential-provider-process": "3.614.0",
+ "@aws-sdk/credential-provider-sso": "3.616.0",
+ "@aws-sdk/credential-provider-web-identity": "3.609.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/credential-provider-imds": "^3.1.4",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/shared-ini-file-loader": "^3.1.4",
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.731.0.tgz",
- "integrity": "sha512-6yNMY6q3xHLbs2f2+C6GhvMrjTgtFBiPJJqKaPLsTIhlTRvh4sK8pGm3ITcma0jOxtPDIuoPfBAV8N8XVMBlZg==",
+ "version": "3.614.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz",
+ "integrity": "sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/shared-ini-file-loader": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/shared-ini-file-loader": "^3.1.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.731.1.tgz",
- "integrity": "sha512-p1tp+rMUf5YNQLr8rVRmDgNtKGYLL0KCdq3K2hwwvFnx9MjReF1sA4lfm3xWsxBQM+j3QN9AvMQqBzDJ+NOSdw==",
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.616.0.tgz",
+ "integrity": "sha512-3rsWs9GBi8Z8Gps5ROwqguxtw+J6OIg1vawZMLRNMqqZoBvbOToe9wEnpid8ylU+27+oG8uibJNlNuRyXApUjw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/client-sso": "3.731.0",
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/token-providers": "3.731.1",
- "@aws-sdk/types": "3.731.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/shared-ini-file-loader": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/client-sso": "3.616.0",
+ "@aws-sdk/token-providers": "3.614.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/shared-ini-file-loader": "^3.1.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.731.1.tgz",
- "integrity": "sha512-+ynAvEGWDR5ZJFxgpwwzhvlQ3WQ7BleWXU6JwpIw3yFrD4eZEn85b8DZC1aEz7C9kb1HSV6B3gpqHqlyS6wj8g==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz",
+ "integrity": "sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/nested-clients": "3.731.1",
- "@aws-sdk/types": "3.731.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/client-sts": "^3.609.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.731.0.tgz",
- "integrity": "sha512-ndAJsm5uWPPJRZowLKpB1zuL17qWlWVtCJP4I/ynBkq1PU1DijDXBul2UZaG6Mpvsgms1NXo/h9noHuK7T3v8w==",
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.616.0.tgz",
+ "integrity": "sha512-mhNfHuGhCDZwYCABebaOvTgOM44UCZZRq2cBpgPZLVKP0ydAv5aFHXv01goexxXHqgHoEGx0uXWxlw0s2EpFDg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.731.0.tgz",
- "integrity": "sha512-IIZrOdjbY2vKzPJPrwE7FoFQCIPEL6UqURi8LEaiVyCag4p2fvaTN5pgKuQtGC2+iYd/HHcGT4qn2bAqF5Jmmw==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz",
+ "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.731.0.tgz",
- "integrity": "sha512-y6FLASB1iKWuR5tUipMyo77bt0lEl3OnCrrd2xw/H24avq1HhJjjPR0HHhJE6QKJzF/FYXeV88tcyPSMe32VDw==",
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz",
+ "integrity": "sha512-LQKAcrZRrR9EGez4fdCIVjdn0Ot2HMN12ChnoMGEU6oIxnQ2aSC7iASFFCV39IYfeMh7iSCPj7Wopqw8rAouzg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-signing": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.616.0.tgz",
+ "integrity": "sha512-wwzZFlXyURwo40oz1NmufreQa5DqwnCF8hR8tIP5+oKCyhbkmlmv8xG4Wn51bzY2WEbQhvFebgZSFTEvelCoCg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/signature-v4": "^4.0.0",
+ "@smithy/types": "^3.3.0",
+ "@smithy/util-middleware": "^3.0.3",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.731.0.tgz",
- "integrity": "sha512-Ngr2Gz0aec/uduoKaO3srN52SYkEHndYtFzkK/gDUyQwQzi4ha2eIisxPiuHEX6RvXT31V9ouqn/YtVkt0R76A==",
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.616.0.tgz",
+ "integrity": "sha512-iMcAb4E+Z3vuEcrDsG6T2OBNiqWAquwahP9qepHqfmnmJqHr1mSHtXDYTGBNid31+621sUQmneUQ+fagpGAe4w==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@aws-sdk/util-endpoints": "3.731.0",
- "@smithy/core": "^3.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@aws-sdk/util-endpoints": "3.614.0",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz",
- "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==",
+ "version": "3.614.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz",
+ "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/types": "^3.3.0",
+ "@smithy/util-endpoints": "^2.0.5",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.731.0.tgz",
- "integrity": "sha512-EnYXxTkCNCjTTBjW/pelRPv4Thsi9jepoB6qQjPMA9/ixrZ71BhhQecz9kgqzZLR9BPCwb6hgJ/Yd702jqJ4aQ==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz",
+ "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/types": "^3.3.0",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.731.0.tgz",
- "integrity": "sha512-Rze78Ym5Bx7aWMvmZE2iL3JPo2INNCC5N9rLVx98Gg1G0ZaxclVRUvJrh1AojNlOFxU+otkxAe7FA3Foy2iLLQ==",
+ "version": "3.614.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz",
+ "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
},
"peerDependencies": {
"aws-crt": ">=1.0.0"
@@ -1309,28 +1429,28 @@
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-buffer-from": {
@@ -1389,158 +1509,1333 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/client-sts": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.735.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.735.0.tgz",
+ "integrity": "sha512-vc/5aXLRjIhn4czx7sxR07Q8qLNmLG2DmwukyZ1AAcVcSWbs67Mdw3nAxV3X94gmH1jS/OuqTrpDmBvOvnnk4g==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.347.0",
- "@aws-sdk/credential-provider-node": "3.352.0",
- "@aws-sdk/fetch-http-handler": "3.347.0",
- "@aws-sdk/hash-node": "3.347.0",
- "@aws-sdk/invalid-dependency": "3.347.0",
- "@aws-sdk/middleware-content-length": "3.347.0",
- "@aws-sdk/middleware-endpoint": "3.347.0",
- "@aws-sdk/middleware-host-header": "3.347.0",
- "@aws-sdk/middleware-logger": "3.347.0",
- "@aws-sdk/middleware-recursion-detection": "3.347.0",
- "@aws-sdk/middleware-retry": "3.347.0",
- "@aws-sdk/middleware-sdk-sts": "3.347.0",
- "@aws-sdk/middleware-serde": "3.347.0",
- "@aws-sdk/middleware-signing": "3.347.0",
- "@aws-sdk/middleware-stack": "3.347.0",
- "@aws-sdk/middleware-user-agent": "3.352.0",
- "@aws-sdk/node-config-provider": "3.347.0",
- "@aws-sdk/node-http-handler": "3.350.0",
- "@aws-sdk/smithy-client": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/url-parser": "3.347.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.347.0",
- "@aws-sdk/util-defaults-mode-node": "3.347.0",
- "@aws-sdk/util-endpoints": "3.352.0",
- "@aws-sdk/util-retry": "3.347.0",
- "@aws-sdk/util-user-agent-browser": "3.347.0",
- "@aws-sdk/util-user-agent-node": "3.347.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "fast-xml-parser": "4.2.5",
- "tslib": "^2.5.0"
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/credential-provider-node": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/config-resolver": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
+ "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/util-config-provider": "3.310.0",
- "@aws-sdk/util-middleware": "3.347.0",
- "tslib": "^2.5.0"
+ "@aws-crypto/sha256-js": "^5.2.0",
+ "@aws-crypto/supports-web-crypto": "^5.2.0",
+ "@aws-crypto/util": "^5.2.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/core": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.731.0.tgz",
- "integrity": "sha512-ithBN1VWASkvAIlozJmenqDvNnFddr/SZXAs58+jCnBHgy3tXLHABZGVNCjetZkHRqNdXEO1kirnoxaFeXMeDA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/core": "^3.0.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/signature-v4": "^5.0.0",
- "@smithy/smithy-client": "^4.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-middleware": "^4.0.0",
- "fast-xml-parser": "4.4.1",
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^2.2.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/core/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/core/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/sha256-js": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
+ "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@aws-crypto/util": "^5.2.0",
+ "@aws-sdk/types": "^3.222.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/core/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
+ "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/core/node_modules/fast-xml-parser": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
- "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- }
- ],
- "license": "MIT",
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
+ "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
+ "license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "strnum": "^1.0.5"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
+ "@aws-sdk/types": "^3.222.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.6.2"
}
},
- "node_modules/@aws-sdk/credential-provider-cognito-identity": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.352.0",
- "@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/client-sso": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.734.0.tgz",
+ "integrity": "sha512-oerepp0mut9VlgTwnG5Ds/lb0C0b2/rQ+hL/rF6q+HGKPfGsCuPvFx1GtwGKCXd49ase88/jVgrhcA9OQbz3kg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/core": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.734.0.tgz",
+ "integrity": "sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-env": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.734.0.tgz",
+ "integrity": "sha512-gtRkzYTGafnm1FPpiNO8VBmJrYMoxhDlGPYDVcijzx3DlF8dhWnowuSBCxLSi+MJMx5hvwrX2A+e/q0QAeHqmw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-http": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.734.0.tgz",
+ "integrity": "sha512-JFSL6xhONsq+hKM8xroIPhM5/FOhiQ1cov0lZxhzZWj6Ai3UAjucy3zyIFDr9MgP1KfCYNdvyaUq9/o+HWvEDg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-stream": "^4.0.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.734.0.tgz",
+ "integrity": "sha512-HEyaM/hWI7dNmb4NhdlcDLcgJvrilk8G4DQX6qz0i4pBZGC2l4iffuqP8K6ZQjUfz5/6894PzeFuhTORAMd+cg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/credential-provider-env": "3.734.0",
+ "@aws-sdk/credential-provider-http": "3.734.0",
+ "@aws-sdk/credential-provider-process": "3.734.0",
+ "@aws-sdk/credential-provider-sso": "3.734.0",
+ "@aws-sdk/credential-provider-web-identity": "3.734.0",
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.734.0.tgz",
+ "integrity": "sha512-9NOSNbkPVb91JwaXOhyfahkzAwWdMsbWHL6fh5/PHlXYpsDjfIfT23I++toepNF2nODAJNLnOEHGYIxgNgf6jQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.734.0",
+ "@aws-sdk/credential-provider-http": "3.734.0",
+ "@aws-sdk/credential-provider-ini": "3.734.0",
+ "@aws-sdk/credential-provider-process": "3.734.0",
+ "@aws-sdk/credential-provider-sso": "3.734.0",
+ "@aws-sdk/credential-provider-web-identity": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.734.0.tgz",
+ "integrity": "sha512-zvjsUo+bkYn2vjT+EtLWu3eD6me+uun+Hws1IyWej/fKFAqiBPwyeyCgU7qjkiPQSXqk1U9+/HG9IQ6Iiz+eBw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.734.0.tgz",
+ "integrity": "sha512-cCwwcgUBJOsV/ddyh1OGb4gKYWEaTeTsqaAK19hiNINfYV/DO9r4RMlnWAo84sSBfJuj9shUNsxzyoe6K7R92Q==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.734.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/token-providers": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.734.0.tgz",
+ "integrity": "sha512-t4OSOerc+ppK541/Iyn1AS40+2vT/qE+MFMotFkhCgCJbApeRF2ozEdnDN6tGmnl4ybcUuxnp9JWLjwDVlR/4g==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.734.0.tgz",
+ "integrity": "sha512-LW7RRgSOHHBzWZnigNsDIzu3AiwtjeI2X66v+Wn1P1u+eXssy1+up4ZY/h+t2sU4LU36UvEf+jrZti9c6vRnFw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.734.0.tgz",
+ "integrity": "sha512-mUMFITpJUW3LcKvFok176eI5zXAUomVtahb9IQBwLzkqFYOrMJvWAvoV4yuxrJ8TlQBG8gyEnkb9SnhZvjg67w==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.734.0.tgz",
+ "integrity": "sha512-CUat2d9ITsFc2XsmeiRQO96iWpxSKYFjxvj27Hc7vo87YUHRnfMfnc8jw1EpxEwMcvBD7LsRa6vDNky6AjcrFA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.734.0.tgz",
+ "integrity": "sha512-MFVzLWRkfFz02GqGPjqSOteLe5kPfElUrXZft1eElnqulqs6RJfVSpOV7mO90gu293tNAeggMWAVSGRPKIYVMg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.734.0.tgz",
+ "integrity": "sha512-Lvj1kPRC5IuJBr9DyJ9T9/plkh+EfKLy+12s/mykOy1JaKHDpvj+XGy2YO6YgYVOb8JFtaqloid+5COtje4JTQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/token-providers": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz",
+ "integrity": "sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/nested-clients": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/types": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.734.0.tgz",
+ "integrity": "sha512-o11tSPTT70nAkGV1fN9wm/hAIiLPyWX6SuGf+9JyTp7S/rC2cFWhR26MvA69nplcjNaXVzB0f+QFrLXXjOqCrg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.734.0.tgz",
+ "integrity": "sha512-w2+/E88NUbqql6uCVAsmMxDQKu7vsKV0KqhlQb0lL+RCq4zy07yXYptVNs13qrnuTfyX7uPXkXrlugvK9R1Ucg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.734.0.tgz",
+ "integrity": "sha512-xQTCus6Q9LwUuALW+S76OL0jcWtMOVu14q+GoLnWPUM7QeUw963oQcLhF7oq0CtaLLKyl4GOUfcwc773Zmwwng==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.734.0.tgz",
+ "integrity": "sha512-c6Iinh+RVQKs6jYUFQ64htOU2HUXFQ3TVx+8Tu3EDF19+9vzWi9UukhIMH9rqyyEXIAkk9XL7avt8y2Uyw2dGA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/abort-controller": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.1.tgz",
+ "integrity": "sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/config-resolver": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.0.1.tgz",
+ "integrity": "sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/core": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.2.tgz",
+ "integrity": "sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/middleware-serde": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/credential-provider-imds": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.1.tgz",
+ "integrity": "sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/fetch-http-handler": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.1.tgz",
+ "integrity": "sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/querystring-builder": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-base64": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/hash-node": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.1.tgz",
+ "integrity": "sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/invalid-dependency": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.1.tgz",
+ "integrity": "sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/is-array-buffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz",
+ "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-content-length": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.1.tgz",
+ "integrity": "sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-endpoint": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz",
+ "integrity": "sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/core": "^3.1.2",
+ "@smithy/middleware-serde": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-retry": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz",
+ "integrity": "sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/service-error-classification": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "tslib": "^2.6.2",
+ "uuid": "^9.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-serde": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.2.tgz",
+ "integrity": "sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-stack": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.1.tgz",
+ "integrity": "sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-config-provider": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.0.1.tgz",
+ "integrity": "sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-http-handler": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.2.tgz",
+ "integrity": "sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/abort-controller": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/querystring-builder": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/property-provider": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.1.tgz",
+ "integrity": "sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/protocol-http": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
+ "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/querystring-builder": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.1.tgz",
+ "integrity": "sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-uri-escape": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/querystring-parser": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.1.tgz",
+ "integrity": "sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/service-error-classification": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.1.tgz",
+ "integrity": "sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/shared-ini-file-loader": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.1.tgz",
+ "integrity": "sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/signature-v4": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.0.1.tgz",
+ "integrity": "sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^4.0.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-uri-escape": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/smithy-client": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.3.tgz",
+ "integrity": "sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/core": "^3.1.2",
+ "@smithy/middleware-endpoint": "^4.0.3",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-stream": "^4.0.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/types": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
+ "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/url-parser": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.1.tgz",
+ "integrity": "sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/querystring-parser": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-base64": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz",
+ "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz",
+ "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-node": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz",
+ "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-buffer-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz",
+ "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/is-array-buffer": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-config-provider": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz",
+ "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-browser": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz",
+ "integrity": "sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
+ "bowser": "^2.11.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-node": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz",
+ "integrity": "sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-endpoints": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.1.tgz",
+ "integrity": "sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-hex-encoding": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz",
+ "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-middleware": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.1.tgz",
+ "integrity": "sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-retry": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.1.tgz",
+ "integrity": "sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/service-error-classification": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-stream": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.2.tgz",
+ "integrity": "sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-uri-escape": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz",
+ "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-utf8": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz",
+ "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/util-buffer-from": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/fast-xml-parser": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
+ "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "strnum": "^1.0.5"
+ },
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/@aws-sdk/client-sso-oidc/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@aws-sdk/client-sts": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.347.0",
+ "@aws-sdk/credential-provider-node": "3.352.0",
+ "@aws-sdk/fetch-http-handler": "3.347.0",
+ "@aws-sdk/hash-node": "3.347.0",
+ "@aws-sdk/invalid-dependency": "3.347.0",
+ "@aws-sdk/middleware-content-length": "3.347.0",
+ "@aws-sdk/middleware-endpoint": "3.347.0",
+ "@aws-sdk/middleware-host-header": "3.347.0",
+ "@aws-sdk/middleware-logger": "3.347.0",
+ "@aws-sdk/middleware-recursion-detection": "3.347.0",
+ "@aws-sdk/middleware-retry": "3.347.0",
+ "@aws-sdk/middleware-sdk-sts": "3.347.0",
+ "@aws-sdk/middleware-serde": "3.347.0",
+ "@aws-sdk/middleware-signing": "3.347.0",
+ "@aws-sdk/middleware-stack": "3.347.0",
+ "@aws-sdk/middleware-user-agent": "3.352.0",
+ "@aws-sdk/node-config-provider": "3.347.0",
+ "@aws-sdk/node-http-handler": "3.350.0",
+ "@aws-sdk/smithy-client": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/url-parser": "3.347.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.347.0",
+ "@aws-sdk/util-defaults-mode-node": "3.347.0",
+ "@aws-sdk/util-endpoints": "3.352.0",
+ "@aws-sdk/util-retry": "3.347.0",
+ "@aws-sdk/util-user-agent-browser": "3.347.0",
+ "@aws-sdk/util-user-agent-node": "3.347.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "@smithy/protocol-http": "^1.0.1",
+ "@smithy/types": "^1.0.0",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/config-resolver": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/util-config-provider": "3.310.0",
+ "@aws-sdk/util-middleware": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/core": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.616.0.tgz",
+ "integrity": "sha512-O/urkh2kECs/IqZIVZxyeyHZ7OR2ZWhLNK7btsVQBQvJKrEspLrk/Fp20Qfg5JDerQfBN83ZbyRXLJOOucdZpw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/core": "^2.2.7",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/signature-v4": "^4.0.0",
+ "@smithy/smithy-client": "^3.1.8",
+ "@smithy/types": "^3.3.0",
+ "fast-xml-parser": "4.2.5",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/core/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/core/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-cognito-identity": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.352.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
@@ -1551,100 +2846,764 @@
"license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-http": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.616.0.tgz",
+ "integrity": "sha512-1rgCkr7XvEMBl7qWCo5BKu3yAxJs71dRaZ55Xnjte/0ZHH6Oc93ZrHzyYy6UH6t0nZrH+FAuw7Yko2YtDDwDeg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/fetch-http-handler": "^3.2.2",
+ "@smithy/node-http-handler": "^3.1.3",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/smithy-client": "^3.1.8",
+ "@smithy/types": "^3.3.0",
+ "@smithy/util-stream": "^3.1.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-http/node_modules/@aws-sdk/types": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-imds": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/node-config-provider": "3.347.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/url-parser": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-ini": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.347.0",
+ "@aws-sdk/credential-provider-imds": "3.347.0",
+ "@aws-sdk/credential-provider-process": "3.347.0",
+ "@aws-sdk/credential-provider-sso": "3.352.0",
+ "@aws-sdk/credential-provider-web-identity": "3.347.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/shared-ini-file-loader": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-node": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/credential-provider-env": "3.347.0",
+ "@aws-sdk/credential-provider-imds": "3.347.0",
+ "@aws-sdk/credential-provider-ini": "3.352.0",
+ "@aws-sdk/credential-provider-process": "3.347.0",
+ "@aws-sdk/credential-provider-sso": "3.352.0",
+ "@aws-sdk/credential-provider-web-identity": "3.347.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/shared-ini-file-loader": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-process": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/shared-ini-file-loader": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-sso": "3.352.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/shared-ini-file-loader": "3.347.0",
+ "@aws-sdk/token-providers": "3.352.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/config-resolver": "3.347.0",
+ "@aws-sdk/fetch-http-handler": "3.347.0",
+ "@aws-sdk/hash-node": "3.347.0",
+ "@aws-sdk/invalid-dependency": "3.347.0",
+ "@aws-sdk/middleware-content-length": "3.347.0",
+ "@aws-sdk/middleware-endpoint": "3.347.0",
+ "@aws-sdk/middleware-host-header": "3.347.0",
+ "@aws-sdk/middleware-logger": "3.347.0",
+ "@aws-sdk/middleware-recursion-detection": "3.347.0",
+ "@aws-sdk/middleware-retry": "3.347.0",
+ "@aws-sdk/middleware-serde": "3.347.0",
+ "@aws-sdk/middleware-stack": "3.347.0",
+ "@aws-sdk/middleware-user-agent": "3.352.0",
+ "@aws-sdk/node-config-provider": "3.347.0",
+ "@aws-sdk/node-http-handler": "3.350.0",
+ "@aws-sdk/smithy-client": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/url-parser": "3.347.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "@aws-sdk/util-body-length-browser": "3.310.0",
+ "@aws-sdk/util-body-length-node": "3.310.0",
+ "@aws-sdk/util-defaults-mode-browser": "3.347.0",
+ "@aws-sdk/util-defaults-mode-node": "3.347.0",
+ "@aws-sdk/util-endpoints": "3.352.0",
+ "@aws-sdk/util-retry": "3.347.0",
+ "@aws-sdk/util-user-agent-browser": "3.347.0",
+ "@aws-sdk/util-user-agent-node": "3.347.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "@smithy/protocol-http": "^1.0.1",
+ "@smithy/types": "^1.0.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-sso-oidc": "3.352.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/shared-ini-file-loader": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/credential-providers": {
+ "version": "3.352.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/client-cognito-identity": "3.352.0",
+ "@aws-sdk/client-sso": "3.352.0",
+ "@aws-sdk/client-sts": "3.352.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.352.0",
+ "@aws-sdk/credential-provider-env": "3.347.0",
+ "@aws-sdk/credential-provider-imds": "3.347.0",
+ "@aws-sdk/credential-provider-ini": "3.352.0",
+ "@aws-sdk/credential-provider-node": "3.352.0",
+ "@aws-sdk/credential-provider-process": "3.347.0",
+ "@aws-sdk/credential-provider-sso": "3.352.0",
+ "@aws-sdk/credential-provider-web-identity": "3.347.0",
+ "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/eventstream-codec": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/crc32": "3.0.0",
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/util-hex-encoding": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/fetch-http-handler": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.347.0",
+ "@aws-sdk/querystring-builder": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/util-base64": "3.310.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/hash-node": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/util-buffer-from": "3.310.0",
+ "@aws-sdk/util-utf8": "3.310.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/invalid-dependency": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ }
+ },
+ "node_modules/@aws-sdk/is-array-buffer": {
+ "version": "3.310.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/lib-storage": {
+ "version": "3.617.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.617.0.tgz",
+ "integrity": "sha512-bR+3E66Dp3CyuSGywxMSwrYQCfwuFu7gRJxOpk1i2AKV1Wh7g0y1eANXHVKnk+UbVRz4S53UCD8LEiKp2KYShA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/abort-controller": "^3.1.1",
+ "@smithy/middleware-endpoint": "^3.0.5",
+ "@smithy/smithy-client": "^3.1.8",
+ "buffer": "5.6.0",
+ "events": "3.3.0",
+ "stream-browserify": "3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/client-s3": "^3.617.0"
+ }
+ },
+ "node_modules/@aws-sdk/lib-storage/node_modules/buffer": {
+ "version": "5.6.0",
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-bucket-endpoint": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.616.0.tgz",
+ "integrity": "sha512-KZv78s8UE7+s3qZCfG3pE9U9XV5WTP478aNWis5gDXmsb5LF7QWzEeR8kve5dnjNlK6qVQ33v+mUZa6lR5PwMw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.609.0",
+ "@aws-sdk/util-arn-parser": "3.568.0",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/types": "^3.3.0",
+ "@smithy/util-config-provider": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-content-length": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-endpoint": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/middleware-serde": "3.347.0",
"@aws-sdk/types": "3.347.0",
+ "@aws-sdk/url-parser": "3.347.0",
+ "@aws-sdk/util-middleware": "3.347.0",
"tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.731.0.tgz",
- "integrity": "sha512-iRtrjtcYaWgbvtu2cvDhIsPWXZGvhy1Hgks4682MEBNTc9AUwlfvDrYz2EEnTtJJyrbOdEHVrYrzqD8qPyVLCg==",
+ "node_modules/@aws-sdk/middleware-expect-continue": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.616.0.tgz",
+ "integrity": "sha512-IM1pfJPm7pDUXa55js9bnGjS8o3ldzDwf95mL9ZAYdEsm10q6i0ZxZbbro2gTq25Ap5ykdeeS34lOSzIqPiW1A==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/fetch-http-handler": "^5.0.0",
- "@smithy/node-http-handler": "^4.0.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/smithy-client": "^4.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-stream": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-http/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-imds": {
+ "node_modules/@aws-sdk/middleware-flexible-checksums": {
+ "version": "3.616.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.616.0.tgz",
+ "integrity": "sha512-Mrco/dURoTXVqwcnYRcyrFaPTIg36ifg2PK0kUYfSVTGEOClZOQXlVG5zYCZoo3yEMgy/gLT907FjUQxwoifIw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-crypto/crc32": "5.2.0",
+ "@aws-crypto/crc32c": "5.2.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/is-array-buffer": "^3.0.0",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/types": "^3.3.0",
+ "@smithy/util-utf8": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-crypto/crc32": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
+ "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-crypto/util": "^5.2.0",
+ "@aws-sdk/types": "^3.222.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-crypto/util": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
+ "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "^3.222.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/util-buffer-from": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/is-array-buffer": "^2.2.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-host-header": {
"version": "3.347.0",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/node-config-provider": "3.347.0",
- "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/protocol-http": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-location-constraint": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz",
+ "integrity": "sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/types": "3.347.0",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.347.0",
"@aws-sdk/types": "3.347.0",
- "@aws-sdk/url-parser": "3.347.0",
"tslib": "^2.5.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-retry": {
+ "version": "3.347.0",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "@aws-sdk/protocol-http": "3.347.0",
+ "@aws-sdk/service-error-classification": "3.347.0",
+ "@aws-sdk/types": "3.347.0",
+ "@aws-sdk/util-middleware": "3.347.0",
+ "@aws-sdk/util-retry": "3.347.0",
+ "tslib": "^2.5.0",
+ "uuid": "^8.3.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-retry/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-s3": {
+ "version": "3.617.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.617.0.tgz",
+ "integrity": "sha512-zVOS6sNGcLGhq7i+5POmVqmSPNmrQYDFsynpnWMSLsNaej+xvkdSOnytLrUvag3Du4kAxfO5NNIC0GuNj9lcCg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@aws-sdk/types": "3.609.0",
+ "@aws-sdk/util-arn-parser": "3.568.0",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/signature-v4": "^4.0.0",
+ "@smithy/smithy-client": "^3.1.8",
+ "@smithy/types": "^3.3.0",
+ "@smithy/util-config-provider": "^3.0.0",
+ "@smithy/util-stream": "^3.1.0",
+ "@smithy/util-utf8": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/types": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/middleware-sdk-sts": {
+ "version": "3.347.0",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.347.0",
- "@aws-sdk/credential-provider-imds": "3.347.0",
- "@aws-sdk/credential-provider-process": "3.347.0",
- "@aws-sdk/credential-provider-sso": "3.352.0",
- "@aws-sdk/credential-provider-web-identity": "3.347.0",
- "@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/shared-ini-file-loader": "3.347.0",
+ "@aws-sdk/middleware-signing": "3.347.0",
"@aws-sdk/types": "3.347.0",
"tslib": "^2.5.0"
},
@@ -1652,19 +3611,11 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/middleware-serde": {
+ "version": "3.347.0",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.347.0",
- "@aws-sdk/credential-provider-imds": "3.347.0",
- "@aws-sdk/credential-provider-ini": "3.352.0",
- "@aws-sdk/credential-provider-process": "3.347.0",
- "@aws-sdk/credential-provider-sso": "3.352.0",
- "@aws-sdk/credential-provider-web-identity": "3.347.0",
- "@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/shared-ini-file-loader": "3.347.0",
"@aws-sdk/types": "3.347.0",
"tslib": "^2.5.0"
},
@@ -1672,335 +3623,318 @@
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-process": {
+ "node_modules/@aws-sdk/middleware-signing": {
"version": "3.347.0",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/shared-ini-file-loader": "3.347.0",
+ "@aws-sdk/protocol-http": "3.347.0",
+ "@aws-sdk/signature-v4": "3.347.0",
"@aws-sdk/types": "3.347.0",
+ "@aws-sdk/util-middleware": "3.347.0",
"tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/middleware-ssec": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz",
+ "integrity": "sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg==",
"license": "Apache-2.0",
- "optional": true,
"dependencies": {
- "@aws-sdk/client-sso": "3.352.0",
- "@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/shared-ini-file-loader": "3.347.0",
- "@aws-sdk/token-providers": "3.352.0",
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso-oidc": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": {
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
"license": "Apache-2.0",
- "optional": true,
"dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/config-resolver": "3.347.0",
- "@aws-sdk/fetch-http-handler": "3.347.0",
- "@aws-sdk/hash-node": "3.347.0",
- "@aws-sdk/invalid-dependency": "3.347.0",
- "@aws-sdk/middleware-content-length": "3.347.0",
- "@aws-sdk/middleware-endpoint": "3.347.0",
- "@aws-sdk/middleware-host-header": "3.347.0",
- "@aws-sdk/middleware-logger": "3.347.0",
- "@aws-sdk/middleware-recursion-detection": "3.347.0",
- "@aws-sdk/middleware-retry": "3.347.0",
- "@aws-sdk/middleware-serde": "3.347.0",
- "@aws-sdk/middleware-stack": "3.347.0",
- "@aws-sdk/middleware-user-agent": "3.352.0",
- "@aws-sdk/node-config-provider": "3.347.0",
- "@aws-sdk/node-http-handler": "3.350.0",
- "@aws-sdk/smithy-client": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/url-parser": "3.347.0",
- "@aws-sdk/util-base64": "3.310.0",
- "@aws-sdk/util-body-length-browser": "3.310.0",
- "@aws-sdk/util-body-length-node": "3.310.0",
- "@aws-sdk/util-defaults-mode-browser": "3.347.0",
- "@aws-sdk/util-defaults-mode-node": "3.347.0",
- "@aws-sdk/util-endpoints": "3.352.0",
- "@aws-sdk/util-retry": "3.347.0",
- "@aws-sdk/util-user-agent-browser": "3.347.0",
- "@aws-sdk/util-user-agent-node": "3.347.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "@smithy/protocol-http": "^1.0.1",
- "@smithy/types": "^1.0.0",
- "tslib": "^2.5.0"
+ "@smithy/types": "^3.3.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/middleware-ssec/node_modules/@smithy/types": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
- "optional": true,
"dependencies": {
- "@aws-sdk/client-sso-oidc": "3.352.0",
- "@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/shared-ini-file-loader": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/credential-provider-web-identity": {
+ "node_modules/@aws-sdk/middleware-stack": {
"version": "3.347.0",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/types": "3.347.0",
"tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/credential-providers": {
+ "node_modules/@aws-sdk/middleware-user-agent": {
"version": "3.352.0",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.352.0",
- "@aws-sdk/client-sso": "3.352.0",
- "@aws-sdk/client-sts": "3.352.0",
- "@aws-sdk/credential-provider-cognito-identity": "3.352.0",
- "@aws-sdk/credential-provider-env": "3.347.0",
- "@aws-sdk/credential-provider-imds": "3.347.0",
- "@aws-sdk/credential-provider-ini": "3.352.0",
- "@aws-sdk/credential-provider-node": "3.352.0",
- "@aws-sdk/credential-provider-process": "3.347.0",
- "@aws-sdk/credential-provider-sso": "3.352.0",
- "@aws-sdk/credential-provider-web-identity": "3.347.0",
- "@aws-sdk/property-provider": "3.347.0",
+ "@aws-sdk/protocol-http": "3.347.0",
"@aws-sdk/types": "3.347.0",
+ "@aws-sdk/util-endpoints": "3.352.0",
"tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/eventstream-codec": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz",
+ "integrity": "sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-crypto/crc32": "3.0.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/util-hex-encoding": "3.310.0",
- "tslib": "^2.5.0"
+ "@aws-crypto/sha256-browser": "5.2.0",
+ "@aws-crypto/sha256-js": "5.2.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/middleware-host-header": "3.734.0",
+ "@aws-sdk/middleware-logger": "3.734.0",
+ "@aws-sdk/middleware-recursion-detection": "3.734.0",
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/region-config-resolver": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@aws-sdk/util-user-agent-browser": "3.734.0",
+ "@aws-sdk/util-user-agent-node": "3.734.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/core": "^3.1.1",
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/hash-node": "^4.0.1",
+ "@smithy/invalid-dependency": "^4.0.1",
+ "@smithy/middleware-content-length": "^4.0.1",
+ "@smithy/middleware-endpoint": "^4.0.2",
+ "@smithy/middleware-retry": "^4.0.3",
+ "@smithy/middleware-serde": "^4.0.1",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-body-length-node": "^4.0.0",
+ "@smithy/util-defaults-mode-browser": "^4.0.3",
+ "@smithy/util-defaults-mode-node": "^4.0.3",
+ "@smithy/util-endpoints": "^3.0.1",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/fetch-http-handler": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-browser": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
+ "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/protocol-http": "3.347.0",
- "@aws-sdk/querystring-builder": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/util-base64": "3.310.0",
- "tslib": "^2.5.0"
+ "@aws-crypto/sha256-js": "^5.2.0",
+ "@aws-crypto/supports-web-crypto": "^5.2.0",
+ "@aws-crypto/util": "^5.2.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/util-locate-window": "^3.0.0",
+ "@smithy/util-utf8": "^2.0.0",
+ "tslib": "^2.6.2"
}
},
- "node_modules/@aws-sdk/hash-node": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/util-buffer-from": "3.310.0",
- "@aws-sdk/util-utf8": "3.310.0",
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/invalid-dependency": {
- "version": "3.347.0",
- "license": "Apache-2.0",
- "optional": true,
- "dependencies": {
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
- }
- },
- "node_modules/@aws-sdk/is-array-buffer": {
- "version": "3.310.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "@smithy/is-array-buffer": "^2.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/lib-storage": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.731.1.tgz",
- "integrity": "sha512-+ajlL3FOCHu+HEB8M5BJ3Rvq+QmXfGdgzU5tmnVMJUl1V9ggbG9P01EmrVX7Q7INdWezQYr/VWqUcOmUW4zuBQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/abort-controller": "^4.0.0",
- "@smithy/middleware-endpoint": "^4.0.0",
- "@smithy/smithy-client": "^4.0.0",
- "buffer": "5.6.0",
- "events": "3.3.0",
- "stream-browserify": "3.0.0",
+ "@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
- },
- "peerDependencies": {
- "@aws-sdk/client-s3": "^3.731.1"
- }
- },
- "node_modules/@aws-sdk/lib-storage/node_modules/buffer": {
- "version": "5.6.0",
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4"
+ "node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/middleware-bucket-endpoint": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.731.0.tgz",
- "integrity": "sha512-G9vuGW5GWCbzGOwlGFJcOkfxhw1cB6vzcv75QTT0CmciLXK+Cio8O2pqMSTTF2kg9Y6iHVC2BlOtLRkJAVOxVQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-js": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
+ "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@aws-sdk/util-arn-parser": "3.723.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-config-provider": "^4.0.0",
+ "@aws-crypto/util": "^5.2.0",
+ "@aws-sdk/types": "^3.222.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/supports-web-crypto": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
+ "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/util": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
+ "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@aws-sdk/types": "^3.222.0",
+ "@smithy/util-utf8": "^2.0.0",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
+ "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/middleware-content-length": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
+ "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/protocol-http": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "@smithy/is-array-buffer": "^2.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/middleware-endpoint": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
+ "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/middleware-serde": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/url-parser": "3.347.0",
- "@aws-sdk/util-middleware": "3.347.0",
- "tslib": "^2.5.0"
+ "@smithy/util-buffer-from": "^2.2.0",
+ "tslib": "^2.6.2"
},
"engines": {
"node": ">=14.0.0"
}
},
- "node_modules/@aws-sdk/middleware-expect-continue": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.731.0.tgz",
- "integrity": "sha512-oY4nsY/mb5O5eZCzIuWpyvzO45Bi6UBtE48IaJsoyVctagA1l8hB66aczH9M1NHNjvbS4Beu1agwh3Nyb1eJug==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/core": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.734.0.tgz",
+ "integrity": "sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/signature-v4": "^5.0.1",
+ "@smithy/smithy-client": "^4.1.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "fast-xml-parser": "4.4.1",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-host-header": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.734.0.tgz",
+ "integrity": "sha512-LW7RRgSOHHBzWZnigNsDIzu3AiwtjeI2X66v+Wn1P1u+eXssy1+up4ZY/h+t2sU4LU36UvEf+jrZti9c6vRnFw==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-logger": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.734.0.tgz",
+ "integrity": "sha512-mUMFITpJUW3LcKvFok176eI5zXAUomVtahb9IQBwLzkqFYOrMJvWAvoV4yuxrJ8TlQBG8gyEnkb9SnhZvjg67w==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@aws-sdk/types": "3.734.0",
"@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
@@ -2008,290 +3942,317 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-recursion-detection": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.734.0.tgz",
+ "integrity": "sha512-CUat2d9ITsFc2XsmeiRQO96iWpxSKYFjxvj27Hc7vo87YUHRnfMfnc8jw1EpxEwMcvBD7LsRa6vDNky6AjcrFA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.731.0.tgz",
- "integrity": "sha512-LMs/rndovYjYSntSYyPE/PIl4iHNiquaU0lpDqpQc9iTgQcNbjdriSUWpibgu1jXlGBpBYCqttNkxmEThbbWxA==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-user-agent": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.734.0.tgz",
+ "integrity": "sha512-MFVzLWRkfFz02GqGPjqSOteLe5kPfElUrXZft1eElnqulqs6RJfVSpOV7mO90gu293tNAeggMWAVSGRPKIYVMg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-crypto/crc32": "5.2.0",
- "@aws-crypto/crc32c": "5.2.0",
- "@aws-crypto/util": "5.2.0",
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/is-array-buffer": "^4.0.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-middleware": "^4.0.0",
- "@smithy/util-stream": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@aws-sdk/core": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@aws-sdk/util-endpoints": "3.734.0",
+ "@smithy/core": "^3.1.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-crypto/crc32": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
- "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/region-config-resolver": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.734.0.tgz",
+ "integrity": "sha512-Lvj1kPRC5IuJBr9DyJ9T9/plkh+EfKLy+12s/mykOy1JaKHDpvj+XGy2YO6YgYVOb8JFtaqloid+5COtje4JTQ==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-crypto/util": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
- "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@smithy/util-utf8": "^2.0.0",
- "tslib": "^2.6.2"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/types": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.734.0.tgz",
+ "integrity": "sha512-o11tSPTT70nAkGV1fN9wm/hAIiLPyWX6SuGf+9JyTp7S/rC2cFWhR26MvA69nplcjNaXVzB0f+QFrLXXjOqCrg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.734.0.tgz",
+ "integrity": "sha512-w2+/E88NUbqql6uCVAsmMxDQKu7vsKV0KqhlQb0lL+RCq4zy07yXYptVNs13qrnuTfyX7uPXkXrlugvK9R1Ucg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-endpoints": "^3.0.1",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-browser": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.734.0.tgz",
+ "integrity": "sha512-xQTCus6Q9LwUuALW+S76OL0jcWtMOVu14q+GoLnWPUM7QeUw963oQcLhF7oq0CtaLLKyl4GOUfcwc773Zmwwng==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@aws-sdk/types": "3.734.0",
"@smithy/types": "^4.1.0",
+ "bowser": "^2.11.0",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-node": {
+ "version": "3.734.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.734.0.tgz",
+ "integrity": "sha512-c6Iinh+RVQKs6jYUFQ64htOU2HUXFQ3TVx+8Tu3EDF19+9vzWi9UukhIMH9rqyyEXIAkk9XL7avt8y2Uyw2dGA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@aws-sdk/middleware-user-agent": "3.734.0",
+ "@aws-sdk/types": "3.734.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
+ },
+ "peerDependencies": {
+ "aws-crt": ">=1.0.0"
+ },
+ "peerDependenciesMeta": {
+ "aws-crt": {
+ "optional": true
+ }
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/abort-controller": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.1.tgz",
+ "integrity": "sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/config-resolver": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.0.1.tgz",
+ "integrity": "sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-config-provider": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/core": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.2.tgz",
+ "integrity": "sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/protocol-http": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "@smithy/middleware-serde": "^4.0.2",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-body-length-browser": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-stream": "^4.0.2",
+ "@smithy/util-utf8": "^4.0.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-location-constraint": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.731.0.tgz",
- "integrity": "sha512-1I2EjAFxrQksrzqdN7YYuY/q2YsjqeX4l7f9VOkdBjiZeDvVIEdM99IT5sISJB/r6CjNrYX5MhqGhE8i1VFchA==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/credential-provider-imds": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.1.tgz",
+ "integrity": "sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/fetch-http-handler": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.1.tgz",
+ "integrity": "sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/querystring-builder": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-base64": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/hash-node": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.1.tgz",
+ "integrity": "sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-logger": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/invalid-dependency": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.1.tgz",
+ "integrity": "sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/is-array-buffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz",
+ "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/protocol-http": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-retry": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-content-length": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.1.tgz",
+ "integrity": "sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==",
"license": "Apache-2.0",
- "optional": true,
- "dependencies": {
- "@aws-sdk/protocol-http": "3.347.0",
- "@aws-sdk/service-error-classification": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/util-middleware": "3.347.0",
- "@aws-sdk/util-retry": "3.347.0",
- "tslib": "^2.5.0",
- "uuid": "^8.3.2"
+ "peer": true,
+ "dependencies": {
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@aws-sdk/middleware-retry/node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "license": "MIT",
- "optional": true,
- "bin": {
- "uuid": "dist/bin/uuid"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.731.0.tgz",
- "integrity": "sha512-J9aKyQaVoec5eWTSDfO4h2sKHNP0wTzN15LFcHnkD+e/d0rdmOi7BTkkbJrIaynma9WShIasmrtM3HNi9GiiTA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@aws-sdk/util-arn-parser": "3.723.0",
- "@smithy/core": "^3.0.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/signature-v4": "^5.0.0",
- "@smithy/smithy-client": "^4.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.0",
- "@smithy/util-stream": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-endpoint": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz",
+ "integrity": "sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "dependencies": {
+ "@smithy/core": "^3.1.2",
+ "@smithy/middleware-serde": "^4.0.2",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/url-parser": "^4.0.1",
+ "@smithy/util-middleware": "^4.0.1",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-retry": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz",
+ "integrity": "sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
- "tslib": "^2.6.2"
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/service-error-classification": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-retry": "^4.0.1",
+ "tslib": "^2.6.2",
+ "uuid": "^9.0.1"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-serde": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.2.tgz",
+ "integrity": "sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
@@ -2300,165 +4261,150 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-stack": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.1.tgz",
+ "integrity": "sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-sdk-sts": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-config-provider": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.0.1.tgz",
+ "integrity": "sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/middleware-signing": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/shared-ini-file-loader": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-serde": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.2.tgz",
+ "integrity": "sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.347.0",
- "tslib": "^2.5.0"
+ "@smithy/abort-controller": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/querystring-builder": "^4.0.1",
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-signing": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/property-provider": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.1.tgz",
+ "integrity": "sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/property-provider": "3.347.0",
- "@aws-sdk/protocol-http": "3.347.0",
- "@aws-sdk/signature-v4": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/util-middleware": "3.347.0",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-ssec": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.731.0.tgz",
- "integrity": "sha512-1HP4lxGcQx4awXgxfL8t9faBK7TqEL7zkAZrm/YBbLrT9oQomxZOHKIOHvo5VVh4qmsNBdqnH2XUlSMY71gsww==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/protocol-http": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
+ "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/querystring-builder": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.1.tgz",
+ "integrity": "sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-uri-escape": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-ssec/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/querystring-parser": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.1.tgz",
+ "integrity": "sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-stack": {
- "version": "3.347.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/service-error-classification": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.1.tgz",
+ "integrity": "sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.1.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.352.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/shared-ini-file-loader": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.1.tgz",
+ "integrity": "sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==",
"license": "Apache-2.0",
- "optional": true,
+ "peer": true,
"dependencies": {
- "@aws-sdk/protocol-http": "3.347.0",
- "@aws-sdk/types": "3.347.0",
- "@aws-sdk/util-endpoints": "3.352.0",
- "tslib": "^2.5.0"
+ "@smithy/types": "^4.1.0",
+ "tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.731.1.tgz",
- "integrity": "sha512-/L8iVrulnXZl+kgmTn+oxRxNnhcSIbf+r12C06vGUq60w0YMidLvxJZN7vt8H9SnCAGCHqud2MS7ExCEvhc0gA==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/signature-v4": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.0.1.tgz",
+ "integrity": "sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-crypto/sha256-browser": "5.2.0",
- "@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/middleware-host-header": "3.731.0",
- "@aws-sdk/middleware-logger": "3.731.0",
- "@aws-sdk/middleware-recursion-detection": "3.731.0",
- "@aws-sdk/middleware-user-agent": "3.731.0",
- "@aws-sdk/region-config-resolver": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@aws-sdk/util-endpoints": "3.731.0",
- "@aws-sdk/util-user-agent-browser": "3.731.0",
- "@aws-sdk/util-user-agent-node": "3.731.0",
- "@smithy/config-resolver": "^4.0.0",
- "@smithy/core": "^3.0.0",
- "@smithy/fetch-http-handler": "^5.0.0",
- "@smithy/hash-node": "^4.0.0",
- "@smithy/invalid-dependency": "^4.0.0",
- "@smithy/middleware-content-length": "^4.0.0",
- "@smithy/middleware-endpoint": "^4.0.0",
- "@smithy/middleware-retry": "^4.0.0",
- "@smithy/middleware-serde": "^4.0.0",
- "@smithy/middleware-stack": "^4.0.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/node-http-handler": "^4.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/smithy-client": "^4.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/url-parser": "^4.0.0",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-body-length-node": "^4.0.0",
- "@smithy/util-defaults-mode-browser": "^4.0.0",
- "@smithy/util-defaults-mode-node": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
- "@smithy/util-middleware": "^4.0.0",
- "@smithy/util-retry": "^4.0.0",
+ "@smithy/is-array-buffer": "^4.0.0",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-middleware": "^4.0.1",
+ "@smithy/util-uri-escape": "^4.0.0",
"@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
@@ -2466,255 +4412,296 @@
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-browser": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz",
- "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/smithy-client": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.3.tgz",
+ "integrity": "sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-crypto/sha256-js": "^5.2.0",
- "@aws-crypto/supports-web-crypto": "^5.2.0",
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
- "@aws-sdk/util-locate-window": "^3.0.0",
- "@smithy/util-utf8": "^2.0.0",
+ "@smithy/core": "^3.1.2",
+ "@smithy/middleware-endpoint": "^4.0.3",
+ "@smithy/middleware-stack": "^4.0.1",
+ "@smithy/protocol-http": "^5.0.1",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-stream": "^4.0.2",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
+ "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/sha256-js": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz",
- "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/url-parser": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.1.tgz",
+ "integrity": "sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-crypto/util": "^5.2.0",
- "@aws-sdk/types": "^3.222.0",
+ "@smithy/querystring-parser": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/supports-web-crypto": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz",
- "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-base64": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz",
+ "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/util": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz",
- "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-body-length-browser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz",
+ "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "^3.222.0",
- "@smithy/util-utf8": "^2.0.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz",
- "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-body-length-node": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz",
+ "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/util-buffer-from": "^2.2.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.731.0.tgz",
- "integrity": "sha512-ndAJsm5uWPPJRZowLKpB1zuL17qWlWVtCJP4I/ynBkq1PU1DijDXBul2UZaG6Mpvsgms1NXo/h9noHuK7T3v8w==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-buffer-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz",
+ "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@smithy/is-array-buffer": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-logger": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.731.0.tgz",
- "integrity": "sha512-IIZrOdjbY2vKzPJPrwE7FoFQCIPEL6UqURi8LEaiVyCag4p2fvaTN5pgKuQtGC2+iYd/HHcGT4qn2bAqF5Jmmw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-config-provider": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz",
+ "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.731.0.tgz",
- "integrity": "sha512-y6FLASB1iKWuR5tUipMyo77bt0lEl3OnCrrd2xw/H24avq1HhJjjPR0HHhJE6QKJzF/FYXeV88tcyPSMe32VDw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-defaults-mode-browser": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz",
+ "integrity": "sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
+ "bowser": "^2.11.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.731.0.tgz",
- "integrity": "sha512-Ngr2Gz0aec/uduoKaO3srN52SYkEHndYtFzkK/gDUyQwQzi4ha2eIisxPiuHEX6RvXT31V9ouqn/YtVkt0R76A==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-defaults-mode-node": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz",
+ "integrity": "sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/core": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@aws-sdk/util-endpoints": "3.731.0",
- "@smithy/core": "^3.0.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@smithy/config-resolver": "^4.0.1",
+ "@smithy/credential-provider-imds": "^4.0.1",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/property-provider": "^4.0.1",
+ "@smithy/smithy-client": "^4.1.3",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-endpoints": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.1.tgz",
+ "integrity": "sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/node-config-provider": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz",
- "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-hex-encoding": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz",
+ "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-endpoints": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.731.0.tgz",
- "integrity": "sha512-EnYXxTkCNCjTTBjW/pelRPv4Thsi9jepoB6qQjPMA9/ixrZ71BhhQecz9kgqzZLR9BPCwb6hgJ/Yd702jqJ4aQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-middleware": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.1.tgz",
+ "integrity": "sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/types": "^4.0.0",
- "bowser": "^2.11.0",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.731.0.tgz",
- "integrity": "sha512-Rze78Ym5Bx7aWMvmZE2iL3JPo2INNCC5N9rLVx98Gg1G0ZaxclVRUvJrh1AojNlOFxU+otkxAe7FA3Foy2iLLQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-retry": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.1.tgz",
+ "integrity": "sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@aws-sdk/middleware-user-agent": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@smithy/service-error-classification": "^4.0.1",
+ "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
- },
- "peerDependencies": {
- "aws-crt": ">=1.0.0"
- },
- "peerDependenciesMeta": {
- "aws-crt": {
- "optional": true
- }
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/is-array-buffer": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz",
- "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-stream": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.2.tgz",
+ "integrity": "sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@smithy/fetch-http-handler": "^5.0.1",
+ "@smithy/node-http-handler": "^4.0.2",
+ "@smithy/types": "^4.1.0",
+ "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/util-utf8": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-uri-escape": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz",
+ "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
- "@smithy/types": "^4.1.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz",
+ "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
+ "@smithy/util-buffer-from": "^4.0.0",
"tslib": "^2.6.2"
},
"engines": {
"node": ">=18.0.0"
}
},
- "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-buffer-from": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz",
- "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==",
- "license": "Apache-2.0",
+ "node_modules/@aws-sdk/nested-clients/node_modules/fast-xml-parser": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz",
+ "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/NaturalIntelligence"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@smithy/is-array-buffer": "^2.2.0",
- "tslib": "^2.6.2"
+ "strnum": "^1.0.5"
},
- "engines": {
- "node": ">=14.0.0"
+ "bin": {
+ "fxparser": "src/cli/cli.js"
+ }
+ },
+ "node_modules/@aws-sdk/nested-clients/node_modules/uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
}
},
"node_modules/@aws-sdk/node-config-provider": {
@@ -2796,45 +4783,45 @@
}
},
"node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.731.0.tgz",
- "integrity": "sha512-XlDpRNkDVHF59f07JmkuAidEv//m3hT6/JL85h0l3+zrpaRWhf8n8lVUyAPNq35ZujK8AcorYM+93u7hdWsliQ==",
+ "version": "3.614.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz",
+ "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/types": "3.731.0",
- "@smithy/node-config-provider": "^4.0.0",
- "@smithy/types": "^4.0.0",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/node-config-provider": "^3.1.4",
+ "@smithy/types": "^3.3.0",
+ "@smithy/util-config-provider": "^3.0.0",
+ "@smithy/util-middleware": "^3.0.3",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/region-config-resolver/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/region-config-resolver/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/service-error-classification": {
@@ -2876,58 +4863,58 @@
}
},
"node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.731.0.tgz",
- "integrity": "sha512-1r/b4Os15dR+BCVRRLVQJMF7Krq6xX6IKHxN43kuvODYWz8Nv3XDlaSpeRpAzyJuzW/fTp4JgE+z0+gmJfdEeA==",
+ "version": "3.617.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.617.0.tgz",
+ "integrity": "sha512-kGbLs9q0/ziuzA1huf0BBh05ChxDeZ8ZWc/kedb80ocq6izOLaGgeqqUR8oB0ianwjel4AQq/iv1fsOIt3wmAA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-sdk-s3": "3.731.0",
- "@aws-sdk/types": "3.731.0",
- "@smithy/protocol-http": "^5.0.0",
- "@smithy/signature-v4": "^5.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/middleware-sdk-s3": "3.617.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/protocol-http": "^4.0.4",
+ "@smithy/signature-v4": "^4.0.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/smithy-client": {
@@ -2944,45 +4931,47 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.731.1",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz",
- "integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==",
+ "version": "3.614.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz",
+ "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/nested-clients": "3.731.1",
- "@aws-sdk/types": "3.731.0",
- "@smithy/property-provider": "^4.0.0",
- "@smithy/shared-ini-file-loader": "^4.0.0",
- "@smithy/types": "^4.0.0",
+ "@aws-sdk/types": "3.609.0",
+ "@smithy/property-provider": "^3.1.3",
+ "@smithy/shared-ini-file-loader": "^3.1.4",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/client-sso-oidc": "^3.614.0"
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types": {
- "version": "3.731.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz",
- "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz",
+ "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/token-providers/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/types": {
@@ -3006,15 +4995,15 @@
}
},
"node_modules/@aws-sdk/util-arn-parser": {
- "version": "3.723.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.723.0.tgz",
- "integrity": "sha512-ZhEfvUwNliOQROcAk34WJWVYTlTa4694kSVhDSjW6lE1bMataPnIN8A0ycukEzBXmd8ZSoBcQLn6lKGl7XIJ5w==",
+ "version": "3.568.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz",
+ "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/util-base64": {
@@ -3221,28 +5210,28 @@
}
},
"node_modules/@aws-sdk/xml-builder": {
- "version": "3.723.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.723.0.tgz",
- "integrity": "sha512-5xK2SqGU1mzzsOeemy7cy3fGKxR1sEpUs4pEiIjaT0OIvU+fZaDVUEYWOqsgns6wI90XZEQJlXtI8uAHX/do5Q==",
+ "version": "3.609.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz",
+ "integrity": "sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.0.0",
+ "@smithy/types": "^3.3.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@babel/code-frame": {
@@ -7534,168 +9523,159 @@
"dev": true
},
"node_modules/@smithy/abort-controller": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.1.tgz",
- "integrity": "sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==",
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz",
+ "integrity": "sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/abort-controller/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/chunked-blob-reader": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz",
- "integrity": "sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-4.0.0.tgz",
+ "integrity": "sha512-jSqRnZvkT4egkq/7b6/QRCNXmmYVcHwnJldqJ3IhVpQE2atObVJ137xmGeuGFhjFUr8gCEVAOKwSY79OvpbDaQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/chunked-blob-reader-native": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz",
- "integrity": "sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.1.tgz",
+ "integrity": "sha512-VEYtPvh5rs/xlyqpm5NRnfYLZn+q0SRPELbvBV+C/G7IQ+ouTuo+NKKa3ShG5OaFR8NYVMXls9hPYLTvIKKDrQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/util-base64": "^4.0.0",
+ "@smithy/util-base64": "^3.0.0",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/config-resolver": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.0.1.tgz",
- "integrity": "sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==",
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.13.tgz",
+ "integrity": "sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/node-config-provider": "^4.0.1",
- "@smithy/types": "^4.1.0",
- "@smithy/util-config-provider": "^4.0.0",
- "@smithy/util-middleware": "^4.0.1",
+ "@smithy/node-config-provider": "^3.1.12",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-config-provider": "^3.0.0",
+ "@smithy/util-middleware": "^3.0.11",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/config-resolver/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/core": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.1.tgz",
- "integrity": "sha512-hhUZlBWYuh9t6ycAcN90XOyG76C1AzwxZZgaCVPMYpWqqk9uMFo7HGG5Zu2cEhCJn7DdOi5krBmlibWWWPgdsw==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/middleware-serde": "^4.0.1",
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/types": "^4.1.0",
- "@smithy/util-body-length-browser": "^4.0.0",
- "@smithy/util-middleware": "^4.0.1",
- "@smithy/util-stream": "^4.0.2",
- "@smithy/util-utf8": "^4.0.0",
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.5.7.tgz",
+ "integrity": "sha512-8olpW6mKCa0v+ibCjoCzgZHQx1SQmZuW/WkrdZo73wiTprTH6qhmskT60QLFdT9DRa5mXxjz89kQPZ7ZSsoqqg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/middleware-serde": "^3.0.11",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-body-length-browser": "^3.0.0",
+ "@smithy/util-middleware": "^3.0.11",
+ "@smithy/util-stream": "^3.3.4",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/core/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/core/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/credential-provider-imds": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.1.tgz",
- "integrity": "sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==",
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz",
+ "integrity": "sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/node-config-provider": "^4.0.1",
- "@smithy/property-provider": "^4.0.1",
- "@smithy/types": "^4.1.0",
- "@smithy/url-parser": "^4.0.1",
+ "@smithy/node-config-provider": "^3.1.12",
+ "@smithy/property-provider": "^3.1.11",
+ "@smithy/types": "^3.7.2",
+ "@smithy/url-parser": "^3.0.11",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/credential-provider-imds/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-codec": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.1.tgz",
- "integrity": "sha512-Q2bCAAR6zXNVtJgifsU16ZjKGqdw/DyecKNgIgi7dlqw04fqDu0mnq+JmGphqheypVc64CYq3azSuCpAdFk2+A==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.10.tgz",
+ "integrity": "sha512-323B8YckSbUH0nMIpXn7HZsAVKHYHFUODa8gG9cHo0ySvA1fr5iWaNT+iIL0UCqUzG6QPHA3BSsBtRQou4mMqQ==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
- "@smithy/types": "^4.1.0",
- "@smithy/util-hex-encoding": "^4.0.0",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-hex-encoding": "^3.0.0",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/eventstream-codec/node_modules/@aws-crypto/crc32": {
@@ -7736,15 +9716,15 @@
}
},
"node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-codec/node_modules/@smithy/util-buffer-from": {
@@ -7774,405 +9754,393 @@
}
},
"node_modules/@smithy/eventstream-serde-browser": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.1.tgz",
- "integrity": "sha512-HbIybmz5rhNg+zxKiyVAnvdM3vkzjE6ccrJ620iPL8IXcJEntd3hnBl+ktMwIy12Te/kyrSbUb8UCdnUT4QEdA==",
+ "version": "3.0.14",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.14.tgz",
+ "integrity": "sha512-kbrt0vjOIihW3V7Cqj1SXQvAI5BR8SnyQYsandva0AOR307cXAc+IhPngxIPslxTLfxwDpNu0HzCAq6g42kCPg==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/eventstream-serde-universal": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/eventstream-serde-universal": "^3.0.13",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-serde-browser/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-serde-config-resolver": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.0.1.tgz",
- "integrity": "sha512-lSipaiq3rmHguHa3QFF4YcCM3VJOrY9oq2sow3qlhFY+nBSTF/nrO82MUQRPrxHQXA58J5G1UnU2WuJfi465BA==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.11.tgz",
+ "integrity": "sha512-P2pnEp4n75O+QHjyO7cbw/vsw5l93K/8EWyjNCAAybYwUmj3M+hjSQZ9P5TVdUgEG08ueMAP5R4FkuSkElZ5tQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-serde-config-resolver/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-serde-node": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.1.tgz",
- "integrity": "sha512-o4CoOI6oYGYJ4zXo34U8X9szDe3oGjmHgsMGiZM0j4vtNoT+h80TLnkUcrLZR3+E6HIxqW+G+9WHAVfl0GXK0Q==",
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.13.tgz",
+ "integrity": "sha512-zqy/9iwbj8Wysmvi7Lq7XFLeDgjRpTbCfwBhJa8WbrylTAHiAu6oQTwdY7iu2lxigbc9YYr9vPv5SzYny5tCXQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/eventstream-serde-universal": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/eventstream-serde-universal": "^3.0.13",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-serde-node/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-serde-universal": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.1.tgz",
- "integrity": "sha512-Z94uZp0tGJuxds3iEAZBqGU2QiaBHP4YytLUjwZWx+oUeohCsLyUm33yp4MMBmhkuPqSbQCXq5hDet6JGUgHWA==",
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.13.tgz",
+ "integrity": "sha512-L1Ib66+gg9uTnqp/18Gz4MDpJPKRE44geOjOQ2SVc0eiaO5l255ADziATZgjQjqumC7yPtp1XnjHlF1srcwjKw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/eventstream-codec": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/eventstream-codec": "^3.1.10",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/fetch-http-handler": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.1.tgz",
- "integrity": "sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==",
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz",
+ "integrity": "sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/querystring-builder": "^4.0.1",
- "@smithy/types": "^4.1.0",
- "@smithy/util-base64": "^4.0.0",
+ "@smithy/protocol-http": "^4.1.4",
+ "@smithy/querystring-builder": "^3.0.7",
+ "@smithy/types": "^3.5.0",
+ "@smithy/util-base64": "^3.0.0",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/fetch-http-handler/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/fetch-http-handler/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/hash-blob-browser": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.1.tgz",
- "integrity": "sha512-rkFIrQOKZGS6i1D3gKJ8skJ0RlXqDvb1IyAphksaFOMzkn3v3I1eJ8m7OkLj0jf1McP63rcCEoLlkAn/HjcTRw==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.10.tgz",
+ "integrity": "sha512-elwslXOoNunmfS0fh55jHggyhccobFkexLYC1ZeZ1xP2BTSrcIBaHV2b4xUQOdctrSNOpMqOZH1r2XzWTEhyfA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/chunked-blob-reader": "^5.0.0",
- "@smithy/chunked-blob-reader-native": "^4.0.0",
- "@smithy/types": "^4.1.0",
+ "@smithy/chunked-blob-reader": "^4.0.0",
+ "@smithy/chunked-blob-reader-native": "^3.0.1",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/hash-blob-browser/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/hash-node": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.1.tgz",
- "integrity": "sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.11.tgz",
+ "integrity": "sha512-emP23rwYyZhQBvklqTtwetkQlqbNYirDiEEwXl2v0GYWMnCzxst7ZaRAnWuy28njp5kAH54lvkdG37MblZzaHA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
- "@smithy/util-buffer-from": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-buffer-from": "^3.0.0",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/hash-node/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/hash-stream-node": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.1.tgz",
- "integrity": "sha512-U1rAE1fxmReCIr6D2o/4ROqAQX+GffZpyMt3d7njtGDr2pUNmAKRWa49gsNVhCh2vVAuf3wXzWwNr2YN8PAXIw==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.10.tgz",
+ "integrity": "sha512-olomK/jZQ93OMayW1zfTHwcbwBdhcZOHsyWyiZ9h9IXvc1mCD/VuvzbLb3Gy/qNJwI4MANPLctTp2BucV2oU/Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/hash-stream-node/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/invalid-dependency": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.1.tgz",
- "integrity": "sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.11.tgz",
+ "integrity": "sha512-NuQmVPEJjUX6c+UELyVz8kUx8Q539EDeNwbRyu4IIF8MeV7hUtq1FB3SHVyki2u++5XLMFqngeMKk7ccspnNyQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/invalid-dependency/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/is-array-buffer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz",
- "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz",
+ "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/md5-js": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.1.tgz",
- "integrity": "sha512-HLZ647L27APi6zXkZlzSFZIjpo8po45YiyjMGJZM3gyDY8n7dPGdmxIIljLm4gPt/7rRvutLTTkYJpZVfG5r+A==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.11.tgz",
+ "integrity": "sha512-3NM0L3i2Zm4bbgG6Ymi9NBcxXhryi3uE8fIfHJZIOfZVxOkGdjdgjR9A06SFIZCfnEIWKXZdm6Yq5/aPXFFhsQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/md5-js/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-content-length": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.1.tgz",
- "integrity": "sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==",
+ "version": "3.0.13",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.13.tgz",
+ "integrity": "sha512-zfMhzojhFpIX3P5ug7jxTjfUcIPcGjcQYzB9t+rv0g1TX7B0QdwONW+ATouaLoD7h7LOw/ZlXfkq4xJ/g2TrIw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-content-length/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-content-length/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.2.tgz",
- "integrity": "sha512-Z9m67CXizGpj8CF/AW/7uHqYNh1VXXOn9Ap54fenWsCa0HnT4cJuE61zqG3cBkTZJDCy0wHJphilI41co/PE5g==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/core": "^3.1.1",
- "@smithy/middleware-serde": "^4.0.1",
- "@smithy/node-config-provider": "^4.0.1",
- "@smithy/shared-ini-file-loader": "^4.0.1",
- "@smithy/types": "^4.1.0",
- "@smithy/url-parser": "^4.0.1",
- "@smithy/util-middleware": "^4.0.1",
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.8.tgz",
+ "integrity": "sha512-OEJZKVUEhMOqMs3ktrTWp7UvvluMJEvD5XgQwRePSbDg1VvBaL8pX8mwPltFn6wk1GySbcVwwyldL8S+iqnrEQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/core": "^2.5.7",
+ "@smithy/middleware-serde": "^3.0.11",
+ "@smithy/node-config-provider": "^3.1.12",
+ "@smithy/shared-ini-file-loader": "^3.1.12",
+ "@smithy/types": "^3.7.2",
+ "@smithy/url-parser": "^3.0.11",
+ "@smithy/util-middleware": "^3.0.11",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-endpoint/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.3.tgz",
- "integrity": "sha512-TiKwwQTwUDeDtwWW8UWURTqu7s6F3wN2pmziLU215u7bqpVT9Mk2oEvURjpRLA+5XeQhM68R5BpAGzVtomsqgA==",
- "license": "Apache-2.0",
- "dependencies": {
- "@smithy/node-config-provider": "^4.0.1",
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/service-error-classification": "^4.0.1",
- "@smithy/smithy-client": "^4.1.2",
- "@smithy/types": "^4.1.0",
- "@smithy/util-middleware": "^4.0.1",
- "@smithy/util-retry": "^4.0.1",
+ "version": "3.0.34",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.34.tgz",
+ "integrity": "sha512-yVRr/AAtPZlUvwEkrq7S3x7Z8/xCd97m2hLDaqdz6ucP2RKHsBjEqaUA2ebNv2SsZoPEi+ZD0dZbOB1u37tGCA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/node-config-provider": "^3.1.12",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/service-error-classification": "^3.0.11",
+ "@smithy/smithy-client": "^3.7.0",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-middleware": "^3.0.11",
+ "@smithy/util-retry": "^3.0.11",
"tslib": "^2.6.2",
"uuid": "^9.0.1"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-retry/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-retry/node_modules/uuid": {
@@ -8189,146 +10157,146 @@
}
},
"node_modules/@smithy/middleware-serde": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.1.tgz",
- "integrity": "sha512-Fh0E2SOF+S+P1+CsgKyiBInAt3o2b6Qk7YOp2W0Qx2XnfTdfMuSDKUEcnrtpxCzgKJnqXeLUZYqtThaP0VGqtA==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz",
+ "integrity": "sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-serde/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-stack": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.1.tgz",
- "integrity": "sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz",
+ "integrity": "sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/middleware-stack/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/node-config-provider": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.0.1.tgz",
- "integrity": "sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==",
+ "version": "3.1.12",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz",
+ "integrity": "sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/property-provider": "^4.0.1",
- "@smithy/shared-ini-file-loader": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/property-provider": "^3.1.11",
+ "@smithy/shared-ini-file-loader": "^3.1.12",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/node-config-provider/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.2.tgz",
- "integrity": "sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz",
+ "integrity": "sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.1",
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/querystring-builder": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/abort-controller": "^3.1.9",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/querystring-builder": "^3.0.11",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/node-http-handler/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/property-provider": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.1.tgz",
- "integrity": "sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==",
+ "version": "3.1.11",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.11.tgz",
+ "integrity": "sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/property-provider/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/protocol-http": {
@@ -8342,192 +10310,192 @@
"engines": {
"node": ">=14.0.0"
}
- },
- "node_modules/@smithy/querystring-builder": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.1.tgz",
- "integrity": "sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==",
+ },
+ "node_modules/@smithy/querystring-builder": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz",
+ "integrity": "sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
- "@smithy/util-uri-escape": "^4.0.0",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-uri-escape": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/querystring-builder/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/querystring-parser": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.1.tgz",
- "integrity": "sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz",
+ "integrity": "sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/querystring-parser/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/service-error-classification": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.1.tgz",
- "integrity": "sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.11.tgz",
+ "integrity": "sha512-QnYDPkyewrJzCyaeI2Rmp7pDwbUETe+hU8ADkXmgNusO1bgHBH7ovXJiYmba8t0fNfJx75fE8dlM6SEmZxheog==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0"
+ "@smithy/types": "^3.7.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/service-error-classification/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/shared-ini-file-loader": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.1.tgz",
- "integrity": "sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==",
+ "version": "3.1.12",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz",
+ "integrity": "sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/signature-v4": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.0.1.tgz",
- "integrity": "sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.4.tgz",
+ "integrity": "sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/is-array-buffer": "^4.0.0",
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/types": "^4.1.0",
- "@smithy/util-hex-encoding": "^4.0.0",
- "@smithy/util-middleware": "^4.0.1",
- "@smithy/util-uri-escape": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/is-array-buffer": "^3.0.0",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-hex-encoding": "^3.0.0",
+ "@smithy/util-middleware": "^3.0.11",
+ "@smithy/util-uri-escape": "^3.0.0",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/signature-v4/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/signature-v4/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/smithy-client": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.2.tgz",
- "integrity": "sha512-0yApeHWBqocelHGK22UivZyShNxFbDNrgREBllGh5Ws0D0rg/yId/CJfeoKKpjbfY2ju8j6WgDUGZHYQmINZ5w==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.7.0.tgz",
+ "integrity": "sha512-9wYrjAZFlqWhgVo3C4y/9kpc68jgiSsKUnsFPzr/MSiRL93+QRDafGTfhhKAb2wsr69Ru87WTiqSfQusSmWipA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.1.1",
- "@smithy/middleware-endpoint": "^4.0.2",
- "@smithy/middleware-stack": "^4.0.1",
- "@smithy/protocol-http": "^5.0.1",
- "@smithy/types": "^4.1.0",
- "@smithy/util-stream": "^4.0.2",
+ "@smithy/core": "^2.5.7",
+ "@smithy/middleware-endpoint": "^3.2.8",
+ "@smithy/middleware-stack": "^3.0.11",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-stream": "^3.3.4",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/smithy-client/node_modules/@smithy/protocol-http": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.0.1.tgz",
- "integrity": "sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/smithy-client/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/types": {
@@ -8542,321 +10510,341 @@
}
},
"node_modules/@smithy/url-parser": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.1.tgz",
- "integrity": "sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.11.tgz",
+ "integrity": "sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/querystring-parser": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/querystring-parser": "^3.0.11",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/url-parser/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-base64": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz",
- "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz",
+ "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/util-buffer-from": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/util-buffer-from": "^3.0.0",
+ "@smithy/util-utf8": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-body-length-browser": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz",
- "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz",
+ "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
}
},
"node_modules/@smithy/util-body-length-node": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz",
- "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz",
+ "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-buffer-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz",
- "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz",
+ "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/is-array-buffer": "^4.0.0",
+ "@smithy/is-array-buffer": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-config-provider": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz",
- "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz",
+ "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.3.tgz",
- "integrity": "sha512-7c5SF1fVK0EOs+2EOf72/qF199zwJflU1d02AevwKbAUPUZyE9RUZiyJxeUmhVxfKDWdUKaaVojNiaDQgnHL9g==",
+ "version": "3.0.34",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.34.tgz",
+ "integrity": "sha512-FumjjF631lR521cX+svMLBj3SwSDh9VdtyynTYDAiBDEf8YPP5xORNXKQ9j0105o5+ARAGnOOP/RqSl40uXddA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/property-provider": "^4.0.1",
- "@smithy/smithy-client": "^4.1.2",
- "@smithy/types": "^4.1.0",
+ "@smithy/property-provider": "^3.1.11",
+ "@smithy/smithy-client": "^3.7.0",
+ "@smithy/types": "^3.7.2",
"bowser": "^2.11.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">= 10.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-browser/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.3.tgz",
- "integrity": "sha512-CVnD42qYD3JKgDlImZ9+On+MqJHzq9uJgPbMdeBE8c2x8VJ2kf2R3XO/yVFx+30ts5lD/GlL0eFIShY3x9ROgQ==",
+ "version": "3.0.34",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.34.tgz",
+ "integrity": "sha512-vN6aHfzW9dVVzkI0wcZoUXvfjkl4CSbM9nE//08lmUMyf00S75uuCpTrqF9uD4bD9eldIXlt53colrlwKAT8Gw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/config-resolver": "^4.0.1",
- "@smithy/credential-provider-imds": "^4.0.1",
- "@smithy/node-config-provider": "^4.0.1",
- "@smithy/property-provider": "^4.0.1",
- "@smithy/smithy-client": "^4.1.2",
- "@smithy/types": "^4.1.0",
+ "@smithy/config-resolver": "^3.0.13",
+ "@smithy/credential-provider-imds": "^3.2.8",
+ "@smithy/node-config-provider": "^3.1.12",
+ "@smithy/property-provider": "^3.1.11",
+ "@smithy/smithy-client": "^3.7.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">= 10.0.0"
}
},
"node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-endpoints": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.1.tgz",
- "integrity": "sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==",
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz",
+ "integrity": "sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/node-config-provider": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/node-config-provider": "^3.1.12",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-endpoints/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-hex-encoding": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz",
- "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz",
+ "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-middleware": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.1.tgz",
- "integrity": "sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.11.tgz",
+ "integrity": "sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/types": "^4.1.0",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-middleware/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-retry": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.1.tgz",
- "integrity": "sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==",
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.11.tgz",
+ "integrity": "sha512-hJUC6W7A3DQgaee3Hp9ZFcOxVDZzmBIRBPlUAk8/fSOEl7pE/aX7Dci0JycNOnm9Mfr0KV2XjIlUOcGWXQUdVQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/service-error-classification": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/service-error-classification": "^3.0.11",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-retry/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-stream": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.2.tgz",
- "integrity": "sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.3.4.tgz",
+ "integrity": "sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/fetch-http-handler": "^4.1.3",
+ "@smithy/node-http-handler": "^3.3.3",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-base64": "^3.0.0",
+ "@smithy/util-buffer-from": "^3.0.0",
+ "@smithy/util-hex-encoding": "^3.0.0",
+ "@smithy/util-utf8": "^3.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@smithy/util-stream/node_modules/@smithy/fetch-http-handler": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.3.tgz",
+ "integrity": "sha512-6SxNltSncI8s689nvnzZQc/dPXcpHQ34KUj6gR/HBroytKOd/isMG3gJF/zBE1TBmTT18TXyzhg3O3SOOqGEhA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/fetch-http-handler": "^5.0.1",
- "@smithy/node-http-handler": "^4.0.2",
- "@smithy/types": "^4.1.0",
- "@smithy/util-base64": "^4.0.0",
- "@smithy/util-buffer-from": "^4.0.0",
- "@smithy/util-hex-encoding": "^4.0.0",
- "@smithy/util-utf8": "^4.0.0",
+ "@smithy/protocol-http": "^4.1.8",
+ "@smithy/querystring-builder": "^3.0.11",
+ "@smithy/types": "^3.7.2",
+ "@smithy/util-base64": "^3.0.0",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/@smithy/util-stream/node_modules/@smithy/protocol-http": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz",
+ "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-stream/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-uri-escape": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz",
- "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz",
+ "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-utf8": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz",
- "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz",
+ "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/util-buffer-from": "^4.0.0",
+ "@smithy/util-buffer-from": "^3.0.0",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-waiter": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.2.tgz",
- "integrity": "sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.2.0.tgz",
+ "integrity": "sha512-PpjSboaDUE6yl+1qlg3Si57++e84oXdWGbuFUSAciXsVfEZJJJupR2Nb0QuXHiunt2vGR+1PTizOMvnUPaG2Qg==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/abort-controller": "^4.0.1",
- "@smithy/types": "^4.1.0",
+ "@smithy/abort-controller": "^3.1.9",
+ "@smithy/types": "^3.7.2",
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@smithy/util-waiter/node_modules/@smithy/types": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz",
- "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==",
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz",
+ "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.6.2"
},
"engines": {
- "node": ">=18.0.0"
+ "node": ">=16.0.0"
}
},
"node_modules/@socket.io/component-emitter": {
@@ -14457,7 +16445,6 @@
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
- "optional": true,
"dependencies": {
"strnum": "^1.0.5"
},
diff --git a/package.json b/package.json
index fa8733efb2..9acdf38385 100644
--- a/package.json
+++ b/package.json
@@ -147,8 +147,8 @@
}
},
"dependencies": {
- "@aws-sdk/client-s3": "^3.731.1",
- "@aws-sdk/lib-storage": "^3.731.1",
+ "@aws-sdk/client-s3": "3.617.0",
+ "@aws-sdk/lib-storage": "3.617.0",
"@feathersjs/adapter-commons": "^5.0.31",
"@feathersjs/authentication": "^5.0.31",
"@feathersjs/authentication-local": "^5.0.31",
From 8c78cd28805a00eb1a5a30878cfec860b664510b Mon Sep 17 00:00:00 2001
From: Majed Mak <132336669+MajedAlaitwniCap@users.noreply.github.com>
Date: Thu, 30 Jan 2025 10:11:48 +0100
Subject: [PATCH 2/6] EW-977 remove redundant title from cards after export and
reimport(#5318)
---
.../import/common-cartridge-import.types.ts | 3 +-
.../common-cartridge-resource-factory.spec.ts | 2 -
.../common-cartridge-resource-factory.ts | 4 +-
.../service/common-cartridge.mapper.spec.ts | 6 +-
.../service/common-cartridge.mapper.ts | 6 +-
.../common-cartridge-import.mapper.spec.ts | 25 ++++---
.../mapper/common-cartridge-import.mapper.ts | 18 ++---
.../common-cartridge-import.service.spec.ts | 67 ++++++-------------
.../common-cartridge-import.service.ts | 37 +++++-----
9 files changed, 67 insertions(+), 101 deletions(-)
diff --git a/apps/server/src/modules/common-cartridge/import/common-cartridge-import.types.ts b/apps/server/src/modules/common-cartridge/import/common-cartridge-import.types.ts
index ce86755bb6..75b3bda8f9 100644
--- a/apps/server/src/modules/common-cartridge/import/common-cartridge-import.types.ts
+++ b/apps/server/src/modules/common-cartridge/import/common-cartridge-import.types.ts
@@ -10,7 +10,7 @@ export type CommonCartridgeFileParserOptions = {
export const DEFAULT_FILE_PARSER_OPTIONS: CommonCartridgeFileParserOptions = {
maxSearchDepth: 5,
pathSeparator: '/',
- inputFormat: InputFormat.RICH_TEXT_CK5,
+ inputFormat: InputFormat.RICH_TEXT_CK4,
};
export type CommonCartridgeOrganizationProps = {
@@ -27,7 +27,6 @@ export type CommonCartridgeOrganizationProps = {
export type CommonCartridgeWebContentResourceProps = {
type: CommonCartridgeResourceTypeV1P1.WEB_CONTENT;
- title: string;
html: string;
};
diff --git a/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.spec.ts b/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.spec.ts
index 6f0d867681..8569df2a2b 100644
--- a/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.spec.ts
+++ b/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.spec.ts
@@ -168,7 +168,6 @@ describe('CommonCartridgeResourceFactory', () => {
expect(result).toStrictEqual({
type: CommonCartridgeResourceTypeV1P1.WEB_CONTENT,
- title: organizationProps.title,
html: '
Content
',
});
});
@@ -191,7 +190,6 @@ describe('CommonCartridgeResourceFactory', () => {
expect(result).toStrictEqual({
type: CommonCartridgeResourceTypeV1P1.WEB_CONTENT,
- title: organizationProps.title,
html: '',
});
});
diff --git a/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.ts b/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.ts
index b80b9a80f3..a12842f2b9 100644
--- a/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.ts
+++ b/apps/server/src/modules/common-cartridge/import/common-cartridge-resource-factory.ts
@@ -28,7 +28,7 @@ export class CommonCartridgeResourceFactory {
case CommonCartridgeResourceTypeV1P1.WEB_LINK:
return this.createWebLinkResource(content, title);
case CommonCartridgeResourceTypeV1P1.WEB_CONTENT:
- return this.createWebContentResource(content, title, inputFormat);
+ return this.createWebContentResource(content, inputFormat);
default:
return undefined;
}
@@ -59,7 +59,6 @@ export class CommonCartridgeResourceFactory {
private createWebContentResource(
content: string,
- title: string,
inputFormat: InputFormat
): CommonCartridgeWebContentResourceProps | undefined {
const document = this.tryCreateDocument(content, 'text/html');
@@ -72,7 +71,6 @@ export class CommonCartridgeResourceFactory {
return {
type: CommonCartridgeResourceTypeV1P1.WEB_CONTENT,
- title,
html,
};
}
diff --git a/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.spec.ts b/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.spec.ts
index aea5740c1f..6d042b975e 100644
--- a/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.spec.ts
+++ b/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.spec.ts
@@ -237,7 +237,7 @@ describe('CommonCartridgeExportMapper', () => {
expect(result).toEqual({
identifier: `i${task.id}`,
title: task.name,
- html: `${task.name}
${task.description ?? ''}
`,
+ html: `${task.description ?? ''}
`,
intendedUse: CommonCartridgeIntendedUseType.UNSPECIFIED,
type: CommonCartridgeResourceType.WEB_CONTENT,
});
@@ -252,7 +252,7 @@ describe('CommonCartridgeExportMapper', () => {
expect(result).toEqual({
identifier: `i${task.id}`,
title: task.name,
- html: `${task.name}
${task.description ?? ''}
`,
+ html: `${task.description ?? ''}
`,
intendedUse: CommonCartridgeIntendedUseType.ASSIGNMENT,
type: CommonCartridgeResourceType.WEB_CONTENT,
});
@@ -267,7 +267,7 @@ describe('CommonCartridgeExportMapper', () => {
expect(result).toEqual({
identifier: `i${task.id}`,
title: task.name,
- html: `${task.name}
${task.description ?? ''}
`,
+ html: `${task.description ?? ''}
`,
intendedUse: CommonCartridgeIntendedUseType.UNSPECIFIED,
type: CommonCartridgeResourceType.WEB_CONTENT,
});
diff --git a/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.ts b/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.ts
index 08bf79be0e..c5c793a8c5 100644
--- a/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.ts
+++ b/apps/server/src/modules/common-cartridge/service/common-cartridge.mapper.ts
@@ -64,9 +64,7 @@ export class CommonCartridgeExportMapper {
type: CommonCartridgeResourceType.WEB_CONTENT,
identifier: createIdentifier(lessonContent.id),
title: lessonContent.title,
- html: `${lessonContent.title ?? ''}
${
- (lessonContent.content as ComponentTextPropsDto).text ?? ''
- }
`,
+ html: `${(lessonContent.content as ComponentTextPropsDto).text ?? ''}
`,
intendedUse: CommonCartridgeIntendedUseType.UNSPECIFIED,
};
case LessonContentDtoComponentValues.GEO_GEBRA:
@@ -146,7 +144,7 @@ export class CommonCartridgeExportMapper {
type: CommonCartridgeResourceType.WEB_CONTENT,
identifier: createIdentifier(task.id),
title: task.name,
- html: `${task.name}
${task.description ?? ''}
`,
+ html: `${task.description ?? ''}
`,
intendedUse,
};
}
diff --git a/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.spec.ts b/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.spec.ts
index a2515c4d36..bce1e3668f 100644
--- a/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.spec.ts
+++ b/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.spec.ts
@@ -60,34 +60,34 @@ describe('CommonCartridgeImportMapper', () => {
});
});
});
- });
- describe('mapOrganizationToCard', () => {
- describe('when organization is provided', () => {
+ describe('when organization is provided and withTitle is false', () => {
const setup = () => setupOrganization();
- it('should map organization to card', () => {
+ it('should set the title to an empty string', () => {
const { organization } = setup();
- const result = sut.mapOrganizationToCard(organization);
+ const result = sut.mapOrganizationToCard(organization, false);
expect(result).toEqual({
- title: organization.title,
+ title: '',
height: 150,
});
});
});
+ });
- describe('when organization is provided and withTitle is false', () => {
+ describe('mapOrganizationToCard', () => {
+ describe('when organization is provided', () => {
const setup = () => setupOrganization();
- it('should set the title to an empty string', () => {
+ it('should map organization to card', () => {
const { organization } = setup();
- const result = sut.mapOrganizationToCard(organization, false);
+ const result = sut.mapOrganizationToCard(organization);
expect(result).toEqual({
- title: '',
+ title: organization.title,
height: 150,
});
});
@@ -105,7 +105,7 @@ describe('CommonCartridgeImportMapper', () => {
const result = sut.mapOrganizationToTextElement(organization);
expect(result).toBeInstanceOf(RichTextContentBody);
- expect(result).toEqual({
+ expect(result).toEqual({
text: `${organization.title}`,
inputFormat: InputFormat.RICH_TEXT_CK5_SIMPLE,
});
@@ -156,7 +156,6 @@ describe('CommonCartridgeImportMapper', () => {
it('should return rich text content element body', () => {
const resource: CommonCartridgeImportResourceProps = {
type: CommonCartridgeResourceTypeV1P1.WEB_CONTENT,
- title: faker.lorem.words(3),
html: faker.lorem.paragraph(),
};
@@ -164,8 +163,8 @@ describe('CommonCartridgeImportMapper', () => {
expect(result).toBeInstanceOf(RichTextContentBody);
expect(result).toEqual({
+ inputFormat: InputFormat.RICH_TEXT_CK4,
text: resource.html,
- inputFormat: InputFormat.RICH_TEXT_CK5_SIMPLE,
});
});
});
diff --git a/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.ts b/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.ts
index 826186cd4e..ac6d6ea27e 100644
--- a/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.ts
+++ b/apps/server/src/modules/learnroom/mapper/common-cartridge-import.mapper.ts
@@ -1,4 +1,5 @@
import { AnyElementContentBody, ContentElementType, LinkContentBody, RichTextContentBody } from '@modules/board';
+import { CardProps, ColumnProps } from '@modules/board/domain';
import {
CommonCartridgeImportResourceProps,
CommonCartridgeImportWebContentResourceProps,
@@ -11,17 +12,18 @@ import { InputFormat } from '@shared/domain/types';
@Injectable()
export class CommonCartridgeImportMapper {
- public mapOrganizationToColumn(organization: CommonCartridgeOrganizationProps) {
- return {
+ public mapOrganizationToColumn(organization: CommonCartridgeOrganizationProps): Partial {
+ const column = {
title: organization.title,
};
+
+ return column;
}
- public mapOrganizationToCard(organization: CommonCartridgeOrganizationProps, withTitle = true) {
- return {
- title: withTitle ? organization.title : '',
- height: 150,
- };
+ public mapOrganizationToCard(organization: CommonCartridgeOrganizationProps, withTitle = true): Partial {
+ const card = { title: withTitle ? organization.title : '', height: 150 };
+
+ return card;
}
public mapOrganizationToTextElement(organization: CommonCartridgeOrganizationProps): AnyElementContentBody {
@@ -69,7 +71,7 @@ export class CommonCartridgeImportMapper {
const body = new RichTextContentBody();
body.text = resource.html;
- body.inputFormat = InputFormat.RICH_TEXT_CK5_SIMPLE;
+ body.inputFormat = InputFormat.RICH_TEXT_CK4;
return body;
}
diff --git a/apps/server/src/modules/learnroom/service/common-cartridge-import.service.spec.ts b/apps/server/src/modules/learnroom/service/common-cartridge-import.service.spec.ts
index 39b1c20ad6..8d05a62cb8 100644
--- a/apps/server/src/modules/learnroom/service/common-cartridge-import.service.spec.ts
+++ b/apps/server/src/modules/learnroom/service/common-cartridge-import.service.spec.ts
@@ -25,19 +25,14 @@ describe('CommonCartridgeImportService', () => {
const board2Title = '';
const board3Title = 'Spaltenboard 1';
- const column1ofBoard1Title = 'Test Text';
- const column1ofBoard2Title = 'Test Aufgabe';
- const column1ofBoard3Title = 'Spalte 1';
- const column2ofBoard3Title = 'Spalte 2';
- const column3ofBoard3Title = 'Spalte 3';
- const column4ofBoard3Title = 'Spalte 4';
-
- const emptyCardTitle = '';
const card1Title = 'Karte 1';
const card2Title = 'Karte 2';
const card3Title = 'Karte 3';
const card4Title = 'Karte 4';
+ const columnPlaceholderTitle1 = '1';
+ const columnPlaceholderTitle2 = '2';
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
const objectContainingTitle = (title: string) => expect.objectContaining({ title });
@@ -122,27 +117,15 @@ describe('CommonCartridgeImportService', () => {
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
objectContainingTitle(board1Title),
- objectContainingTitle(column1ofBoard1Title)
+ objectContainingTitle(columnPlaceholderTitle1)
);
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
objectContainingTitle(board2Title),
- objectContainingTitle(column1ofBoard2Title)
- );
- expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(board3Title),
- objectContainingTitle(column1ofBoard3Title)
+ objectContainingTitle(columnPlaceholderTitle1)
);
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
objectContainingTitle(board3Title),
- objectContainingTitle(column2ofBoard3Title)
- );
- expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(board3Title),
- objectContainingTitle(column3ofBoard3Title)
- );
- expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(board3Title),
- objectContainingTitle(column4ofBoard3Title)
+ objectContainingTitle(columnPlaceholderTitle1)
);
});
@@ -154,28 +137,20 @@ describe('CommonCartridgeImportService', () => {
expect(spyBuildCard).toHaveBeenCalledTimes(6);
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(column1ofBoard1Title),
- objectContainingTitle(emptyCardTitle)
- );
- expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(column1ofBoard2Title),
- objectContainingTitle(emptyCardTitle)
- );
- expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(column1ofBoard3Title),
- objectContainingTitle(card1Title)
+ objectContainingTitle(board1Title),
+ objectContainingTitle(columnPlaceholderTitle1)
);
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(column2ofBoard3Title),
- objectContainingTitle(card2Title)
+ objectContainingTitle(board2Title),
+ objectContainingTitle(columnPlaceholderTitle1)
);
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(column3ofBoard3Title),
- objectContainingTitle(card3Title)
+ objectContainingTitle(board3Title),
+ objectContainingTitle(columnPlaceholderTitle1)
);
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(column4ofBoard3Title),
- objectContainingTitle(card4Title)
+ objectContainingTitle(board3Title),
+ objectContainingTitle(columnPlaceholderTitle2)
);
});
@@ -186,10 +161,6 @@ describe('CommonCartridgeImportService', () => {
expect(spyBuildContentElement).toHaveBeenCalledTimes(6);
- expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
- objectContainingTitle(emptyCardTitle),
- expect.any(RichTextElement)
- );
expect(boardNodeServiceMock.addToParent).toHaveBeenCalledWith(
objectContainingTitle(card1Title),
expect.any(RichTextElement)
@@ -209,16 +180,16 @@ describe('CommonCartridgeImportService', () => {
expect(boardNodeServiceMock.updateContent).toHaveBeenCalledTimes(6);
expect(boardNodeServiceMock.updateContent).toHaveBeenCalledWith(expect.any(RichTextElement), {
- text: 'Test TextDies ist ein Textinhalt.
',
- inputFormat: InputFormat.RICH_TEXT_CK5_SIMPLE,
+ text: 'Test Text
Dies ist ein Textinhalt.
',
+ inputFormat: InputFormat.RICH_TEXT_CK4,
});
expect(boardNodeServiceMock.updateContent).toHaveBeenCalledWith(expect.any(RichTextElement), {
- text: 'Test Aufgabe',
- inputFormat: InputFormat.RICH_TEXT_CK5_SIMPLE,
+ text: 'Test Aufgabe
',
+ inputFormat: InputFormat.RICH_TEXT_CK4,
});
expect(boardNodeServiceMock.updateContent).toHaveBeenCalledWith(expect.any(RichTextElement), {
text: 'Karteninhalt von Karte 1
',
- inputFormat: InputFormat.RICH_TEXT_CK5_SIMPLE,
+ inputFormat: InputFormat.RICH_TEXT_CK4,
});
expect(boardNodeServiceMock.updateContent).toHaveBeenCalledWith(expect.any(LinkElement), {
title: 'Example Domain',
diff --git a/apps/server/src/modules/learnroom/service/common-cartridge-import.service.ts b/apps/server/src/modules/learnroom/service/common-cartridge-import.service.ts
index b73e90a5e9..c5b2ce786c 100644
--- a/apps/server/src/modules/learnroom/service/common-cartridge-import.service.ts
+++ b/apps/server/src/modules/learnroom/service/common-cartridge-import.service.ts
@@ -50,6 +50,7 @@ export class CommonCartridgeImportService {
boardProps: CommonCartridgeImportOrganizationProps,
organizations: CommonCartridgeImportOrganizationProps[]
): Promise {
+ const columnsTitleCounter = 0;
const columnBoard = this.boardNodeFactory.buildColumnBoard({
context: {
type: BoardExternalReferenceType.Course,
@@ -60,14 +61,15 @@ export class CommonCartridgeImportService {
});
await this.boardNodeService.addRoot(columnBoard);
- await this.createColumns(parser, columnBoard, boardProps, organizations);
+ await this.createColumns(parser, columnBoard, boardProps, organizations, columnsTitleCounter);
}
private async createColumns(
parser: CommonCartridgeFileParser,
columnBoard: ColumnBoard,
boardProps: CommonCartridgeImportOrganizationProps,
- organizations: CommonCartridgeImportOrganizationProps[]
+ organizations: CommonCartridgeImportOrganizationProps[],
+ counter: number
): Promise {
const columnsWithResource = organizations.filter(
(organization) =>
@@ -75,7 +77,8 @@ export class CommonCartridgeImportService {
);
for await (const columnWithResource of columnsWithResource) {
- await this.createColumnWithResource(parser, columnBoard, columnWithResource);
+ counter += 1;
+ await this.createColumnWithResource(parser, columnBoard, columnWithResource, counter);
}
const columnsWithoutResource = organizations.filter(
@@ -84,32 +87,33 @@ export class CommonCartridgeImportService {
);
for await (const columnWithoutResource of columnsWithoutResource) {
- await this.createColumn(parser, columnBoard, columnWithoutResource, organizations);
+ counter += 1;
+ await this.createColumn(parser, columnBoard, columnWithoutResource, organizations, counter);
}
}
private async createColumnWithResource(
parser: CommonCartridgeFileParser,
columnBoard: ColumnBoard,
- columnProps: CommonCartridgeImportOrganizationProps
+ columnProps: CommonCartridgeImportOrganizationProps,
+ counter: number
): Promise {
const column = this.boardNodeFactory.buildColumn();
- const { title } = this.mapper.mapOrganizationToColumn(columnProps);
- column.title = title;
+ column.title = `${counter}`;
await this.boardNodeService.addToParent(columnBoard, column);
- await this.createCardWithElement(parser, column, columnProps, false);
+ await this.createCardWithElement(parser, column, columnProps);
}
private async createColumn(
parser: CommonCartridgeFileParser,
columnBoard: ColumnBoard,
columnProps: CommonCartridgeImportOrganizationProps,
- organizations: CommonCartridgeImportOrganizationProps[]
+ organizations: CommonCartridgeImportOrganizationProps[],
+ counter: number
): Promise {
const column = this.boardNodeFactory.buildColumn();
- const { title } = this.mapper.mapOrganizationToColumn(columnProps);
- column.title = title;
await this.boardNodeService.addToParent(columnBoard, column);
+ column.title = `${counter}`;
const cards = organizations.filter(
(organization) => organization.pathDepth === 2 && organization.path.startsWith(columnProps.path)
@@ -118,7 +122,7 @@ export class CommonCartridgeImportService {
const cardsWithResource = cards.filter((card) => card.isResource);
for await (const card of cardsWithResource) {
- await this.createCardWithElement(parser, column, card, true);
+ await this.createCardWithElement(parser, column, card);
}
const cardsWithoutResource = cards.filter((card) => !card.isResource);
@@ -131,13 +135,11 @@ export class CommonCartridgeImportService {
private async createCardWithElement(
parser: CommonCartridgeFileParser,
column: Column,
- cardProps: CommonCartridgeImportOrganizationProps,
- withTitle = true
+ cardProps: CommonCartridgeImportOrganizationProps
): Promise {
const card = this.boardNodeFactory.buildCard();
- const { title, height } = this.mapper.mapOrganizationToCard(cardProps, withTitle);
+ const { title } = this.mapper.mapOrganizationToCard(cardProps);
card.title = title;
- card.height = height;
await this.boardNodeService.addToParent(column, card);
const resource = parser.getResource(cardProps);
const contentElementType = this.mapper.mapResourceTypeToContentElementType(resource?.type);
@@ -158,9 +160,8 @@ export class CommonCartridgeImportService {
organizations: CommonCartridgeImportOrganizationProps[]
): Promise {
const card = this.boardNodeFactory.buildCard();
- const { title, height } = this.mapper.mapOrganizationToCard(cardProps, true);
+ const { title } = this.mapper.mapOrganizationToCard(cardProps);
card.title = title;
- card.height = height;
await this.boardNodeService.addToParent(column, card);
const cardElements = organizations.filter(
From 8f410ce977c69d78f37e9f811cda7bea7a1d2a0b Mon Sep 17 00:00:00 2001
From: mamutmk5 <3045922+mamutmk5@users.noreply.github.com>
Date: Thu, 30 Jan 2025 15:06:28 +0100
Subject: [PATCH 3/6] BC-8876 - set os filed for POD Templates from
Deployments, CronJobs and Jobs (#5475)
---
ansible/roles/common-cartridge/templates/deployment.yml.j2 | 2 ++
.../templates/api-h5p-library-management-cronjob.yml.j2 | 2 ++
.../roles/media-licenses/templates/vidis-sync-cronjob.yml.j2 | 2 ++
.../templates/media-metadata-sync-cronjob.yml.j2 | 2 ++
.../moin-schule-users-deletion-queueing-cronjob.yml.j2 | 2 ++
.../templates/moin-schule-users-sync-cronjob.yml.j2 | 2 ++
.../templates/admin-api-server-deployment.yml.j2 | 2 ++
.../templates/amqp-files-deployment.yml.j2 | 2 ++
.../templates/api-files-deployment.yml.j2 | 2 ++
.../schulcloud-server-core/templates/api-fwu-deployment.yml.j2 | 2 ++
.../templates/board-collaboration-deployment.yml.j2 | 2 ++
.../templates/data-deletion-trigger-cronjob.yml.j2 | 2 ++
.../roles/schulcloud-server-core/templates/migration-job.yml.j2 | 2 ++
.../templates/preview-generator-deployment.yml.j2 | 2 ++
.../schulcloud-server-h5p/templates/api-h5p-deployment.yml.j2 | 2 ++
ansible/roles/schulcloud-server-init/templates/job_init.yml.j2 | 2 ++
.../templates/management-deployment.yml.j2 | 2 ++
.../templates/api-ldap-sync-full-cronjob.yml.j2 | 2 ++
.../templates/api-ldap-worker-deployment.yml.j2 | 2 ++
.../templates/deployment.yml.j2 | 2 ++
.../templates/api-tsp-sync-base-cronjob.yml.j2 | 2 ++
.../templates/api-tsp-sync-cronjob.yml.j2 | 2 ++
.../templates/api-tsp-sync-deployment.yml.j2 | 2 ++
.../templates/api-tsp-sync-init.yml.j2 | 2 ++
.../templates/api-tsp-sync-school-cronjob.yml.j2 | 2 ++
25 files changed, 50 insertions(+)
diff --git a/ansible/roles/common-cartridge/templates/deployment.yml.j2 b/ansible/roles/common-cartridge/templates/deployment.yml.j2
index ff840ebd95..d9500a94d7 100644
--- a/ansible/roles/common-cartridge/templates/deployment.yml.j2
+++ b/ansible/roles/common-cartridge/templates/deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: common-cartridge
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/h5p-library-management/templates/api-h5p-library-management-cronjob.yml.j2 b/ansible/roles/h5p-library-management/templates/api-h5p-library-management-cronjob.yml.j2
index 4dc31a8418..bc987d63d7 100644
--- a/ansible/roles/h5p-library-management/templates/api-h5p-library-management-cronjob.yml.j2
+++ b/ansible/roles/h5p-library-management/templates/api-h5p-library-management-cronjob.yml.j2
@@ -35,6 +35,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
volumes:
- name: libraries-list
configMap:
diff --git a/ansible/roles/media-licenses/templates/vidis-sync-cronjob.yml.j2 b/ansible/roles/media-licenses/templates/vidis-sync-cronjob.yml.j2
index 855bc85a85..ab338b8728 100644
--- a/ansible/roles/media-licenses/templates/vidis-sync-cronjob.yml.j2
+++ b/ansible/roles/media-licenses/templates/vidis-sync-cronjob.yml.j2
@@ -29,6 +29,8 @@ spec:
git.branch: {{ SCHULCLOUD_SERVER_BRANCH_NAME }}
git.repo: {{ SCHULCLOUD_SERVER_REPO_NAME }}
spec:
+ os:
+ name: linux
containers:
- name: vidis-sync-cronjob
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/media-metadata-sync/templates/media-metadata-sync-cronjob.yml.j2 b/ansible/roles/media-metadata-sync/templates/media-metadata-sync-cronjob.yml.j2
index 99a5108779..b225b30c63 100644
--- a/ansible/roles/media-metadata-sync/templates/media-metadata-sync-cronjob.yml.j2
+++ b/ansible/roles/media-metadata-sync/templates/media-metadata-sync-cronjob.yml.j2
@@ -29,6 +29,8 @@ spec:
git.branch: {{ SCHULCLOUD_SERVER_BRANCH_NAME }}
git.repo: {{ SCHULCLOUD_SERVER_REPO_NAME }}
spec:
+ os:
+ name: linux
containers:
- name: media-metadata-sync-cronjob
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/moin-schule-sync/templates/moin-schule-users-deletion-queueing-cronjob.yml.j2 b/ansible/roles/moin-schule-sync/templates/moin-schule-users-deletion-queueing-cronjob.yml.j2
index a336774e33..be9477f8f8 100644
--- a/ansible/roles/moin-schule-sync/templates/moin-schule-users-deletion-queueing-cronjob.yml.j2
+++ b/ansible/roles/moin-schule-sync/templates/moin-schule-users-deletion-queueing-cronjob.yml.j2
@@ -19,6 +19,8 @@ spec:
spec:
template:
spec:
+ os:
+ name: linux
containers:
- name: moin-schule-users-deletion-queueing-cronjob
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/moin-schule-sync/templates/moin-schule-users-sync-cronjob.yml.j2 b/ansible/roles/moin-schule-sync/templates/moin-schule-users-sync-cronjob.yml.j2
index 30f78d5769..b8728902aa 100644
--- a/ansible/roles/moin-schule-sync/templates/moin-schule-users-sync-cronjob.yml.j2
+++ b/ansible/roles/moin-schule-sync/templates/moin-schule-users-sync-cronjob.yml.j2
@@ -19,6 +19,8 @@ spec:
spec:
template:
spec:
+ os:
+ name: linux
containers:
- name: moin-schule-users-sync-cronjob
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/admin-api-server-deployment.yml.j2 b/ansible/roles/schulcloud-server-core/templates/admin-api-server-deployment.yml.j2
index ae0ebe2fb6..5b770ad035 100644
--- a/ansible/roles/schulcloud-server-core/templates/admin-api-server-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/admin-api-server-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-admin
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/amqp-files-deployment.yml.j2 b/ansible/roles/schulcloud-server-core/templates/amqp-files-deployment.yml.j2
index 89bfe8d61c..8e357c0d26 100644
--- a/ansible/roles/schulcloud-server-core/templates/amqp-files-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/amqp-files-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: amqp-files
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/api-files-deployment.yml.j2 b/ansible/roles/schulcloud-server-core/templates/api-files-deployment.yml.j2
index d42d0af45b..acf98a0921 100644
--- a/ansible/roles/schulcloud-server-core/templates/api-files-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/api-files-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-files
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/api-fwu-deployment.yml.j2 b/ansible/roles/schulcloud-server-core/templates/api-fwu-deployment.yml.j2
index 340c939d0f..57d30efcde 100644
--- a/ansible/roles/schulcloud-server-core/templates/api-fwu-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/api-fwu-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-fwu
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/board-collaboration-deployment.yml.j2 b/ansible/roles/schulcloud-server-core/templates/board-collaboration-deployment.yml.j2
index dc0e0483c1..80da95e77d 100644
--- a/ansible/roles/schulcloud-server-core/templates/board-collaboration-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/board-collaboration-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: board-collaboration
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/data-deletion-trigger-cronjob.yml.j2 b/ansible/roles/schulcloud-server-core/templates/data-deletion-trigger-cronjob.yml.j2
index b8f4b9a9db..702793cb8e 100644
--- a/ansible/roles/schulcloud-server-core/templates/data-deletion-trigger-cronjob.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/data-deletion-trigger-cronjob.yml.j2
@@ -34,6 +34,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: data-deletion-trigger-cronjob
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/migration-job.yml.j2 b/ansible/roles/schulcloud-server-core/templates/migration-job.yml.j2
index 262aca5d07..3e4187176d 100644
--- a/ansible/roles/schulcloud-server-core/templates/migration-job.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/migration-job.yml.j2
@@ -16,6 +16,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-migration-job
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-core/templates/preview-generator-deployment.yml.j2 b/ansible/roles/schulcloud-server-core/templates/preview-generator-deployment.yml.j2
index 4fdb651aa0..3bbbfa3982 100644
--- a/ansible/roles/schulcloud-server-core/templates/preview-generator-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-core/templates/preview-generator-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: preview-generator
image: {{ SCHULCLOUD_SERVER_IMAGE }}:file-preview-{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-h5p/templates/api-h5p-deployment.yml.j2 b/ansible/roles/schulcloud-server-h5p/templates/api-h5p-deployment.yml.j2
index 0e52c547a1..a66cadd6cd 100644
--- a/ansible/roles/schulcloud-server-h5p/templates/api-h5p-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-h5p/templates/api-h5p-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-h5p
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-init/templates/job_init.yml.j2 b/ansible/roles/schulcloud-server-init/templates/job_init.yml.j2
index ffd8bc98ae..5ce8cf1ef9 100644
--- a/ansible/roles/schulcloud-server-init/templates/job_init.yml.j2
+++ b/ansible/roles/schulcloud-server-init/templates/job_init.yml.j2
@@ -7,6 +7,8 @@ metadata:
spec:
template:
spec:
+ os:
+ name: linux
containers:
- name: api-init
image: quay.io/schulcloudverbund/infra-tools:latest
diff --git a/ansible/roles/schulcloud-server-init/templates/management-deployment.yml.j2 b/ansible/roles/schulcloud-server-init/templates/management-deployment.yml.j2
index 2b66bfe55a..6fafb3babb 100644
--- a/ansible/roles/schulcloud-server-init/templates/management-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-init/templates/management-deployment.yml.j2
@@ -46,6 +46,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-sync-full-cronjob.yml.j2 b/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-sync-full-cronjob.yml.j2
index 51195209d2..9e882c0332 100644
--- a/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-sync-full-cronjob.yml.j2
+++ b/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-sync-full-cronjob.yml.j2
@@ -20,6 +20,8 @@ spec:
activeDeadlineSeconds: {{ SERVER_LDAP_SYNC_FULL_CRONJOB_TIMEOUT|default("39600", true) }}
template:
spec:
+ os:
+ name: linux
containers:
- name: api-ldapsync-cronjob
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-worker-deployment.yml.j2 b/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-worker-deployment.yml.j2
index 541310806f..8a87bbe8fe 100644
--- a/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-worker-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-ldapsync/templates/api-ldap-worker-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-worker
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-migration-system/templates/deployment.yml.j2 b/ansible/roles/schulcloud-server-migration-system/templates/deployment.yml.j2
index 6fefdfebfc..44283ec97d 100644
--- a/ansible/roles/schulcloud-server-migration-system/templates/deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-migration-system/templates/deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-migration-systems
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-base-cronjob.yml.j2 b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-base-cronjob.yml.j2
index 9626aaaf4f..87d65f701d 100644
--- a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-base-cronjob.yml.j2
+++ b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-base-cronjob.yml.j2
@@ -19,6 +19,8 @@ spec:
spec:
template:
spec:
+ os:
+ name: linux
containers:
- name: api-tsp-sync-base-cronjob
image: quay.io/schulcloudverbund/infra-tools:latest
diff --git a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-cronjob.yml.j2 b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-cronjob.yml.j2
index 86d5d13eaa..0edcf8e47a 100644
--- a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-cronjob.yml.j2
+++ b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-cronjob.yml.j2
@@ -44,6 +44,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-tsp-sync-cronjob
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-deployment.yml.j2 b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-deployment.yml.j2
index f2ccf1a49c..05a3da0265 100644
--- a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-deployment.yml.j2
+++ b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-deployment.yml.j2
@@ -47,6 +47,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-tsp-sync
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-init.yml.j2 b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-init.yml.j2
index bac80cc915..7d3d51580c 100644
--- a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-init.yml.j2
+++ b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-init.yml.j2
@@ -30,6 +30,8 @@ spec:
runAsGroup: 1000
fsGroup: 1000
runAsNonRoot: true
+ os:
+ name: linux
containers:
- name: api-tsp-sync-init
image: {{ SCHULCLOUD_SERVER_IMAGE }}:{{ SCHULCLOUD_SERVER_IMAGE_TAG }}
diff --git a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-school-cronjob.yml.j2 b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-school-cronjob.yml.j2
index 83fafbdc40..3d1b162ccf 100644
--- a/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-school-cronjob.yml.j2
+++ b/ansible/roles/schulcloud-server-tspsync/templates/api-tsp-sync-school-cronjob.yml.j2
@@ -19,6 +19,8 @@ spec:
spec:
template:
spec:
+ os:
+ name: linux
containers:
- name: api-tsp-sync-school-cronjob
image: quay.io/schulcloudverbund/infra-tools:latest
From 48d0001172a0db0e2ae66d3ec05051d9445986e7 Mon Sep 17 00:00:00 2001
From: Phillip
Date: Fri, 31 Jan 2025 10:52:07 +0100
Subject: [PATCH 4/6] BC-8877 change bbb checksum to sha512 (#5476)
---
.../src/modules/video-conference/bbb/bbb.service.spec.ts | 4 ++--
apps/server/src/modules/video-conference/bbb/bbb.service.ts | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/apps/server/src/modules/video-conference/bbb/bbb.service.spec.ts b/apps/server/src/modules/video-conference/bbb/bbb.service.spec.ts
index 98e6e1947e..fbfc9c96e1 100644
--- a/apps/server/src/modules/video-conference/bbb/bbb.service.spec.ts
+++ b/apps/server/src/modules/video-conference/bbb/bbb.service.spec.ts
@@ -399,13 +399,13 @@ describe(BBBService.name, () => {
const { callName, createConfig, createHashMock } = setup();
const urlSearchParams = service.superToParams(createConfig);
const queryString = urlSearchParams.toString();
- const sha = crypto.createHash('sha1');
+ const sha = crypto.createHash('sha512');
const expectedChecksum = sha.update(callName + queryString + service.getSalt()).digest('hex');
const checksum = service.superGenerateChecksum(callName, urlSearchParams);
expect(checksum).toEqual(expectedChecksum);
- expect(createHashMock).toBeCalledWith('sha1');
+ expect(createHashMock).toBeCalledWith('sha512');
});
it('getUrl: should return composed url', () => {
diff --git a/apps/server/src/modules/video-conference/bbb/bbb.service.ts b/apps/server/src/modules/video-conference/bbb/bbb.service.ts
index 5b3ace2f62..8ad48de76b 100644
--- a/apps/server/src/modules/video-conference/bbb/bbb.service.ts
+++ b/apps/server/src/modules/video-conference/bbb/bbb.service.ts
@@ -137,7 +137,7 @@ export class BBBService {
*/
protected generateChecksum(callName: string, queryParams: URLSearchParams): string {
const queryString: string = queryParams.toString();
- const sha = crypto.createHash('sha1');
+ const sha = crypto.createHash('sha512');
sha.update(callName + queryString + this.salt);
const checksum: string = sha.digest('hex');
From 95465aee7bd609735e5f20aa32b2c9ffc319998e Mon Sep 17 00:00:00 2001
From: Patrick Sachmann <20001160+psachmann@users.noreply.github.com>
Date: Fri, 31 Jan 2025 12:47:25 +0100
Subject: [PATCH 5/6] EW-1071 Common Cartridge microservice creates boards
during import (#5435)
* creating new boards client
* updating courses client
* removing old boards client
---
.../boards-client.adapter.spec.ts | 107 +++
.../boards-client/boards-client.adapter.ts | 19 +
.../boards-client/boards-client.config.ts | 3 +
.../boards-client.module.spec.ts | 60 ++
.../boards-client/boards-client.module.ts | 31 +
.../boards-client/generated}/.gitignore | 0
.../boards-client/generated}/.npmignore | 0
.../generated}/.openapi-generator-ignore | 0
.../generated}/.openapi-generator/FILES | 43 +-
.../boards-client/generated}/api.ts | 0
.../boards-client/generated/api/board-api.ts | 244 ++++++
.../boards-client/generated}/base.ts | 2 +-
.../boards-client/generated}/common.ts | 0
.../boards-client/generated}/configuration.ts | 0
.../boards-client/generated}/git_push.sh | 0
.../boards-client/generated}/index.ts | 0
.../generated}/models/board-layout.ts | 0
.../generated}/models/board-parent-type.ts | 1 +
.../generated}/models/board-response.ts | 0
.../models/card-skeleton-response.ts | 0
.../generated}/models/column-response.ts | 0
.../models/create-board-body-params.ts | 0
.../models/create-board-response.ts | 0
.../boards-client/generated}/models/index.ts | 6 -
.../generated}/models/timestamps-response.ts | 0
apps/server/src/infra/boards-client/index.ts | 4 +
.../courses-client/courses-client.adapter.ts | 13 +-
.../generated/.openapi-generator/FILES | 1 +
.../generated/api/courses-api.ts | 8 +-
.../models/create-course-response.ts} | 10 +-
.../courses-client/generated/models/index.ts | 1 +
.../board/controller/board.controller.ts | 21 +-
.../dto/board/create-board.body.params.ts | 8 +-
.../service/column-board.service.spec.ts | 22 +-
.../board/service/column-board.service.ts | 23 +-
.../board-api-client/api/board-api.ts | 772 ------------------
.../models/api-validation-error.ts | 54 --
.../models/board-context-response.ts | 41 -
.../models/board-external-reference-type.ts | 31 -
.../models/copy-api-response.ts | 110 ---
.../models/visibility-body-params.ts | 30 -
.../board-client/board-client.adapter.spec.ts | 103 ---
.../board-client/board-client.adapter.ts | 41 -
.../board-client/board-client.config.ts | 5 -
.../board-client/board-client.module.spec.ts | 28 -
.../board-client/board-client.module.ts | 26 -
.../board-client/dto/board-skeleton.dto.ts | 21 -
.../board-client/dto/card-skeleton.dto.ts | 10 -
.../board-client/dto/column-skeleton.dto.ts | 15 -
.../board-client/dto/index.ts | 3 -
.../board-client/index.ts | 4 -
.../board-skeleton-response.mapper.spec.ts | 65 --
.../mapper/board-skeleton-response.mapper.ts | 29 -
.../board-client/mapper/index.ts | 1 -
.../common-cartridge.module.ts | 6 +-
.../common-cartridge-export.service.spec.ts | 19 +-
.../common-cartridge-export.service.ts | 17 +-
.../common-cartridge-import.service.spec.ts | 37 +-
.../common-cartridge-import.service.ts | 28 +-
.../testing/common-cartridge-dtos.factory.ts | 20 +-
.../learnroom/controller/course.controller.ts | 13 +-
.../controller/dto/create-course.response.ts | 14 +
.../modules/learnroom/controller/dto/index.ts | 1 +
.../learnroom/mapper/course.mapper.spec.ts | 26 +
.../modules/learnroom/mapper/course.mapper.ts | 12 +-
.../learnroom/service/course.service.spec.ts | 21 +-
.../learnroom/service/course.service.ts | 17 +-
.../src/modules/learnroom/uc/course.uc.ts | 5 +-
.../src/shared/repo/course/course.repo.ts | 19 +-
openapitools.json | 36 +-
package.json | 2 +
71 files changed, 791 insertions(+), 1518 deletions(-)
create mode 100644 apps/server/src/infra/boards-client/boards-client.adapter.spec.ts
create mode 100644 apps/server/src/infra/boards-client/boards-client.adapter.ts
create mode 100644 apps/server/src/infra/boards-client/boards-client.config.ts
create mode 100644 apps/server/src/infra/boards-client/boards-client.module.spec.ts
create mode 100644 apps/server/src/infra/boards-client/boards-client.module.ts
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/.gitignore (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/.npmignore (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/.openapi-generator-ignore (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/.openapi-generator/FILES (63%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/api.ts (100%)
create mode 100644 apps/server/src/infra/boards-client/generated/api/board-api.ts
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/base.ts (95%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/common.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/configuration.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/git_push.sh (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/index.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/board-layout.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/board-parent-type.ts (97%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/board-response.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/card-skeleton-response.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/column-response.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/create-board-body-params.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/create-board-response.ts (100%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/index.ts (54%)
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client => infra/boards-client/generated}/models/timestamps-response.ts (100%)
create mode 100644 apps/server/src/infra/boards-client/index.ts
rename apps/server/src/{modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/update-board-title-params.ts => infra/courses-client/generated/models/create-course-response.ts} (72%)
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/api/board-api.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/api-validation-error.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-context-response.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-external-reference-type.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/copy-api-response.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/visibility-body-params.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.spec.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.config.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.spec.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/board-skeleton.dto.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/card-skeleton.dto.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/column-skeleton.dto.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/index.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/index.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.spec.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.ts
delete mode 100644 apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/index.ts
create mode 100644 apps/server/src/modules/learnroom/controller/dto/create-course.response.ts
create mode 100644 apps/server/src/modules/learnroom/mapper/course.mapper.spec.ts
diff --git a/apps/server/src/infra/boards-client/boards-client.adapter.spec.ts b/apps/server/src/infra/boards-client/boards-client.adapter.spec.ts
new file mode 100644
index 0000000000..c5a8230fb8
--- /dev/null
+++ b/apps/server/src/infra/boards-client/boards-client.adapter.spec.ts
@@ -0,0 +1,107 @@
+import { Test, TestingModule } from '@nestjs/testing';
+import { createMock } from '@golevelup/ts-jest';
+import { faker } from '@faker-js/faker';
+import { axiosResponseFactory } from '@testing/factory/axios-response.factory';
+import { BoardsClientAdapter } from './boards-client.adapter';
+import { BoardApi, BoardResponse, CreateBoardBodyParams, CreateBoardResponse } from './generated';
+
+describe(BoardsClientAdapter.name, () => {
+ let module: TestingModule;
+ let sut: BoardsClientAdapter;
+
+ const boardApiMock = createMock();
+
+ beforeAll(async () => {
+ module = await Test.createTestingModule({
+ providers: [
+ BoardsClientAdapter,
+ {
+ provide: BoardApi,
+ useValue: boardApiMock,
+ },
+ ],
+ }).compile();
+ sut = module.get(BoardsClientAdapter);
+ });
+
+ afterAll(async () => {
+ await module.close();
+ });
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should be defined', () => {
+ expect(sut).toBeDefined();
+ });
+
+ describe('createBoard', () => {
+ describe('when creating a board', () => {
+ const setup = () => {
+ const params: CreateBoardBodyParams = {
+ title: faker.lorem.words(),
+ layout: 'columns',
+ parentId: faker.string.uuid(),
+ parentType: 'course',
+ };
+ const responseData: CreateBoardResponse = {
+ id: faker.string.uuid(),
+ };
+
+ boardApiMock.boardControllerCreateBoard.mockResolvedValue(axiosResponseFactory.build({ data: responseData }));
+
+ return {
+ params,
+ responseData,
+ };
+ };
+
+ it('should call boardApi.boardControllerCreateBoard', async () => {
+ const { params, responseData } = setup();
+
+ const response = await sut.createBoard(params);
+
+ expect(response).toEqual(responseData);
+ expect(boardApiMock.boardControllerCreateBoard).toHaveBeenCalledWith(params);
+ });
+ });
+ });
+
+ describe('getBoardSkeletonById', () => {
+ describe('when reading a board', () => {
+ const setup = () => {
+ const boardId = faker.string.uuid();
+ const responseData: BoardResponse = {
+ id: boardId,
+ title: faker.lorem.words(),
+ layout: 'columns',
+ columns: [],
+ isVisible: true,
+ timestamps: {
+ createdAt: faker.date.recent().toISOString(),
+ lastUpdatedAt: faker.date.recent().toISOString(),
+ },
+ };
+
+ boardApiMock.boardControllerGetBoardSkeleton.mockResolvedValue(
+ axiosResponseFactory.build({ data: responseData })
+ );
+
+ return {
+ boardId,
+ responseData,
+ };
+ };
+
+ it('should call boardApi.boardControllerGetBoardSkeleton', async () => {
+ const { boardId, responseData } = setup();
+
+ const response = await sut.getBoardSkeletonById(boardId);
+
+ expect(response).toEqual(responseData);
+ expect(boardApiMock.boardControllerGetBoardSkeleton).toHaveBeenCalledWith(boardId);
+ });
+ });
+ });
+});
diff --git a/apps/server/src/infra/boards-client/boards-client.adapter.ts b/apps/server/src/infra/boards-client/boards-client.adapter.ts
new file mode 100644
index 0000000000..3665f9b0bc
--- /dev/null
+++ b/apps/server/src/infra/boards-client/boards-client.adapter.ts
@@ -0,0 +1,19 @@
+import { Injectable } from '@nestjs/common';
+import { BoardApi, BoardResponse, CreateBoardBodyParams, CreateBoardResponse } from './generated';
+
+@Injectable()
+export class BoardsClientAdapter {
+ constructor(private readonly boardApi: BoardApi) {}
+
+ public async createBoard(params: CreateBoardBodyParams): Promise {
+ const response = await this.boardApi.boardControllerCreateBoard(params);
+
+ return response.data;
+ }
+
+ public async getBoardSkeletonById(boardId: string): Promise {
+ const response = await this.boardApi.boardControllerGetBoardSkeleton(boardId);
+
+ return response.data;
+ }
+}
diff --git a/apps/server/src/infra/boards-client/boards-client.config.ts b/apps/server/src/infra/boards-client/boards-client.config.ts
new file mode 100644
index 0000000000..60de28e988
--- /dev/null
+++ b/apps/server/src/infra/boards-client/boards-client.config.ts
@@ -0,0 +1,3 @@
+export interface BoardsClientConfig {
+ API_HOST: string;
+}
diff --git a/apps/server/src/infra/boards-client/boards-client.module.spec.ts b/apps/server/src/infra/boards-client/boards-client.module.spec.ts
new file mode 100644
index 0000000000..996eda0434
--- /dev/null
+++ b/apps/server/src/infra/boards-client/boards-client.module.spec.ts
@@ -0,0 +1,60 @@
+import { Test, TestingModule } from '@nestjs/testing';
+import { ConfigModule } from '@nestjs/config';
+import { faker } from '@faker-js/faker';
+import { Request } from 'express';
+import { createMock } from '@golevelup/ts-jest';
+import { REQUEST } from '@nestjs/core';
+import { BoardsClientAdapter } from './boards-client.adapter';
+import { BoardsClientConfig } from './boards-client.config';
+import { BoardsClientModule } from './boards-client.module';
+
+describe(BoardsClientModule.name, () => {
+ let module: TestingModule;
+
+ const requestMock = createMock({
+ headers: {
+ authorization: `Bearer ${faker.string.alphanumeric(42)}`,
+ },
+ });
+
+ beforeEach(async () => {
+ module = await Test.createTestingModule({
+ imports: [
+ BoardsClientModule,
+ ConfigModule.forRoot({
+ isGlobal: true,
+ load: [
+ (): BoardsClientConfig => {
+ return {
+ API_HOST: faker.internet.url(),
+ };
+ },
+ ],
+ }),
+ ],
+ })
+ .overrideProvider(REQUEST)
+ .useValue(requestMock)
+ .compile();
+ });
+
+ afterAll(async () => {
+ await module.close();
+ });
+
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should be defined', () => {
+ expect(module).toBeDefined();
+ });
+
+ describe('when resolving dependencies', () => {
+ it('should resolve BoardsClientAdapter', async () => {
+ const adapter = await module.resolve(BoardsClientAdapter);
+
+ expect(adapter).toBeInstanceOf(BoardsClientAdapter);
+ });
+ });
+});
diff --git a/apps/server/src/infra/boards-client/boards-client.module.ts b/apps/server/src/infra/boards-client/boards-client.module.ts
new file mode 100644
index 0000000000..c373b5160f
--- /dev/null
+++ b/apps/server/src/infra/boards-client/boards-client.module.ts
@@ -0,0 +1,31 @@
+import { Module, Scope } from '@nestjs/common';
+import { ConfigService } from '@nestjs/config';
+import { REQUEST } from '@nestjs/core';
+import { Request } from 'express';
+import { JwtExtractor } from '@shared/common/utils';
+import { BoardsClientAdapter } from './boards-client.adapter';
+import { BoardsClientConfig } from './boards-client.config';
+import { Configuration, BoardApi } from './generated';
+
+@Module({
+ providers: [
+ BoardsClientAdapter,
+ {
+ provide: BoardApi,
+ scope: Scope.REQUEST,
+ useFactory: (configService: ConfigService, request: Request): BoardApi => {
+ const basePath = configService.getOrThrow('API_HOST');
+ const accessToken = JwtExtractor.extractJwtFromRequest(request);
+ const configuration = new Configuration({
+ basePath: `${basePath}/v3`,
+ accessToken,
+ });
+
+ return new BoardApi(configuration);
+ },
+ inject: [ConfigService, REQUEST],
+ },
+ ],
+ exports: [BoardsClientAdapter],
+})
+export class BoardsClientModule {}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.gitignore b/apps/server/src/infra/boards-client/generated/.gitignore
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.gitignore
rename to apps/server/src/infra/boards-client/generated/.gitignore
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.npmignore b/apps/server/src/infra/boards-client/generated/.npmignore
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.npmignore
rename to apps/server/src/infra/boards-client/generated/.npmignore
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.openapi-generator-ignore b/apps/server/src/infra/boards-client/generated/.openapi-generator-ignore
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.openapi-generator-ignore
rename to apps/server/src/infra/boards-client/generated/.openapi-generator-ignore
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.openapi-generator/FILES b/apps/server/src/infra/boards-client/generated/.openapi-generator/FILES
similarity index 63%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.openapi-generator/FILES
rename to apps/server/src/infra/boards-client/generated/.openapi-generator/FILES
index dcd8a9a93e..172bae4ab4 100644
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/.openapi-generator/FILES
+++ b/apps/server/src/infra/boards-client/generated/.openapi-generator/FILES
@@ -1,24 +1,19 @@
-.gitignore
-.npmignore
-api.ts
-api/board-api.ts
-base.ts
-common.ts
-configuration.ts
-git_push.sh
-index.ts
-models/api-validation-error.ts
-models/board-context-response.ts
-models/board-external-reference-type.ts
-models/board-layout.ts
-models/board-parent-type.ts
-models/board-response.ts
-models/card-skeleton-response.ts
-models/column-response.ts
-models/copy-api-response.ts
-models/create-board-body-params.ts
-models/create-board-response.ts
-models/index.ts
-models/timestamps-response.ts
-models/update-board-title-params.ts
-models/visibility-body-params.ts
+.gitignore
+.npmignore
+.openapi-generator-ignore
+api.ts
+api/board-api.ts
+base.ts
+common.ts
+configuration.ts
+git_push.sh
+index.ts
+models/board-layout.ts
+models/board-parent-type.ts
+models/board-response.ts
+models/card-skeleton-response.ts
+models/column-response.ts
+models/create-board-body-params.ts
+models/create-board-response.ts
+models/index.ts
+models/timestamps-response.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/api.ts b/apps/server/src/infra/boards-client/generated/api.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/api.ts
rename to apps/server/src/infra/boards-client/generated/api.ts
diff --git a/apps/server/src/infra/boards-client/generated/api/board-api.ts b/apps/server/src/infra/boards-client/generated/api/board-api.ts
new file mode 100644
index 0000000000..68d76b8a45
--- /dev/null
+++ b/apps/server/src/infra/boards-client/generated/api/board-api.ts
@@ -0,0 +1,244 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Schulcloud-Verbund-Software Server API
+ * This is v3 of Schulcloud-Verbund-Software Server. Checkout /docs for v1.
+ *
+ * The version of the OpenAPI document: 3.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from '../configuration';
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '../common';
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
+// @ts-ignore
+import type { ApiValidationError } from '../models';
+// @ts-ignore
+import type { BoardResponse } from '../models';
+// @ts-ignore
+import type { CreateBoardBodyParams } from '../models';
+// @ts-ignore
+import type { CreateBoardResponse } from '../models';
+/**
+ * BoardApi - axios parameter creator
+ * @export
+ */
+export const BoardApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @summary Create a new board.
+ * @param {CreateBoardBodyParams} createBoardBodyParams
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ boardControllerCreateBoard: async (createBoardBodyParams: CreateBoardBodyParams, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'createBoardBodyParams' is not null or undefined
+ assertParamExists('boardControllerCreateBoard', 'createBoardBodyParams', createBoardBodyParams)
+ const localVarPath = `/boards`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(createBoardBodyParams, localVarRequestOptions, configuration)
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @summary Get the skeleton of a a board.
+ * @param {string} boardId The id of the board.
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ boardControllerGetBoardSkeleton: async (boardId: string, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'boardId' is not null or undefined
+ assertParamExists('boardControllerGetBoardSkeleton', 'boardId', boardId)
+ const localVarPath = `/boards/{boardId}`
+ .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication bearer required
+ // http bearer authentication required
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * BoardApi - functional programming interface
+ * @export
+ */
+export const BoardApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = BoardApiAxiosParamCreator(configuration)
+ return {
+ /**
+ *
+ * @summary Create a new board.
+ * @param {CreateBoardBodyParams} createBoardBodyParams
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerCreateBoard(createBoardBodyParams, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerCreateBoard']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ *
+ * @summary Get the skeleton of a a board.
+ * @param {string} boardId The id of the board.
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async boardControllerGetBoardSkeleton(boardId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerGetBoardSkeleton(boardId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerGetBoardSkeleton']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * BoardApi - factory interface
+ * @export
+ */
+export const BoardApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = BoardApiFp(configuration)
+ return {
+ /**
+ *
+ * @summary Create a new board.
+ * @param {CreateBoardBodyParams} createBoardBodyParams
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: any): AxiosPromise {
+ return localVarFp.boardControllerCreateBoard(createBoardBodyParams, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @summary Get the skeleton of a a board.
+ * @param {string} boardId The id of the board.
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ boardControllerGetBoardSkeleton(boardId: string, options?: any): AxiosPromise {
+ return localVarFp.boardControllerGetBoardSkeleton(boardId, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * BoardApi - interface
+ * @export
+ * @interface BoardApi
+ */
+export interface BoardApiInterface {
+ /**
+ *
+ * @summary Create a new board.
+ * @param {CreateBoardBodyParams} createBoardBodyParams
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof BoardApiInterface
+ */
+ boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ *
+ * @summary Get the skeleton of a a board.
+ * @param {string} boardId The id of the board.
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof BoardApiInterface
+ */
+ boardControllerGetBoardSkeleton(boardId: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+}
+
+/**
+ * BoardApi - object-oriented interface
+ * @export
+ * @class BoardApi
+ * @extends {BaseAPI}
+ */
+export class BoardApi extends BaseAPI implements BoardApiInterface {
+ /**
+ *
+ * @summary Create a new board.
+ * @param {CreateBoardBodyParams} createBoardBodyParams
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof BoardApi
+ */
+ public boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: RawAxiosRequestConfig) {
+ return BoardApiFp(this.configuration).boardControllerCreateBoard(createBoardBodyParams, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ *
+ * @summary Get the skeleton of a a board.
+ * @param {string} boardId The id of the board.
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof BoardApi
+ */
+ public boardControllerGetBoardSkeleton(boardId: string, options?: RawAxiosRequestConfig) {
+ return BoardApiFp(this.configuration).boardControllerGetBoardSkeleton(boardId, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/base.ts b/apps/server/src/infra/boards-client/generated/base.ts
similarity index 95%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/base.ts
rename to apps/server/src/infra/boards-client/generated/base.ts
index 82686c7b81..5bcf014a72 100644
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/base.ts
+++ b/apps/server/src/infra/boards-client/generated/base.ts
@@ -19,7 +19,7 @@ import type { Configuration } from './configuration';
import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
import globalAxios from 'axios';
-export const BASE_PATH = "http://localhost/api/v3".replace(/\/+$/, "");
+export const BASE_PATH = "http://localhost:3030/api/v3".replace(/\/+$/, "");
/**
*
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/common.ts b/apps/server/src/infra/boards-client/generated/common.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/common.ts
rename to apps/server/src/infra/boards-client/generated/common.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/configuration.ts b/apps/server/src/infra/boards-client/generated/configuration.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/configuration.ts
rename to apps/server/src/infra/boards-client/generated/configuration.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/git_push.sh b/apps/server/src/infra/boards-client/generated/git_push.sh
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/git_push.sh
rename to apps/server/src/infra/boards-client/generated/git_push.sh
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/index.ts b/apps/server/src/infra/boards-client/generated/index.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/index.ts
rename to apps/server/src/infra/boards-client/generated/index.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-layout.ts b/apps/server/src/infra/boards-client/generated/models/board-layout.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-layout.ts
rename to apps/server/src/infra/boards-client/generated/models/board-layout.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-parent-type.ts b/apps/server/src/infra/boards-client/generated/models/board-parent-type.ts
similarity index 97%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-parent-type.ts
rename to apps/server/src/infra/boards-client/generated/models/board-parent-type.ts
index 3c8d64356b..6193dd4737 100644
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-parent-type.ts
+++ b/apps/server/src/infra/boards-client/generated/models/board-parent-type.ts
@@ -22,6 +22,7 @@
export const BoardParentType = {
COURSE: 'course',
+ ROOM: 'room',
USER: 'user'
} as const;
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-response.ts b/apps/server/src/infra/boards-client/generated/models/board-response.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-response.ts
rename to apps/server/src/infra/boards-client/generated/models/board-response.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/card-skeleton-response.ts b/apps/server/src/infra/boards-client/generated/models/card-skeleton-response.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/card-skeleton-response.ts
rename to apps/server/src/infra/boards-client/generated/models/card-skeleton-response.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/column-response.ts b/apps/server/src/infra/boards-client/generated/models/column-response.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/column-response.ts
rename to apps/server/src/infra/boards-client/generated/models/column-response.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/create-board-body-params.ts b/apps/server/src/infra/boards-client/generated/models/create-board-body-params.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/create-board-body-params.ts
rename to apps/server/src/infra/boards-client/generated/models/create-board-body-params.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/create-board-response.ts b/apps/server/src/infra/boards-client/generated/models/create-board-response.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/create-board-response.ts
rename to apps/server/src/infra/boards-client/generated/models/create-board-response.ts
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/index.ts b/apps/server/src/infra/boards-client/generated/models/index.ts
similarity index 54%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/index.ts
rename to apps/server/src/infra/boards-client/generated/models/index.ts
index 32513649ae..0354f94654 100644
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/index.ts
+++ b/apps/server/src/infra/boards-client/generated/models/index.ts
@@ -1,14 +1,8 @@
-export * from './api-validation-error';
-export * from './board-context-response';
-export * from './board-external-reference-type';
export * from './board-layout';
export * from './board-parent-type';
export * from './board-response';
export * from './card-skeleton-response';
export * from './column-response';
-export * from './copy-api-response';
export * from './create-board-body-params';
export * from './create-board-response';
export * from './timestamps-response';
-export * from './update-board-title-params';
-export * from './visibility-body-params';
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/timestamps-response.ts b/apps/server/src/infra/boards-client/generated/models/timestamps-response.ts
similarity index 100%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/timestamps-response.ts
rename to apps/server/src/infra/boards-client/generated/models/timestamps-response.ts
diff --git a/apps/server/src/infra/boards-client/index.ts b/apps/server/src/infra/boards-client/index.ts
new file mode 100644
index 0000000000..d98df00e1e
--- /dev/null
+++ b/apps/server/src/infra/boards-client/index.ts
@@ -0,0 +1,4 @@
+export { BoardsClientAdapter } from './boards-client.adapter';
+export { BoardsClientConfig } from './boards-client.config';
+export { BoardsClientModule } from './boards-client.module';
+export type * from './generated/models';
diff --git a/apps/server/src/infra/courses-client/courses-client.adapter.ts b/apps/server/src/infra/courses-client/courses-client.adapter.ts
index 4628d93f2d..b862675fa7 100644
--- a/apps/server/src/infra/courses-client/courses-client.adapter.ts
+++ b/apps/server/src/infra/courses-client/courses-client.adapter.ts
@@ -1,5 +1,10 @@
import { Injectable } from '@nestjs/common';
-import { CourseCommonCartridgeMetadataResponse, CoursesApi, CreateCourseBodyParams } from './generated';
+import {
+ CourseCommonCartridgeMetadataResponse,
+ CoursesApi,
+ CreateCourseBodyParams,
+ CreateCourseResponse,
+} from './generated';
@Injectable()
export class CoursesClientAdapter {
@@ -11,7 +16,9 @@ export class CoursesClientAdapter {
return response.data;
}
- public async createCourse(params: CreateCourseBodyParams): Promise {
- await this.coursesApi.courseControllerCreateCourse(params);
+ public async createCourse(params: CreateCourseBodyParams): Promise {
+ const response = await this.coursesApi.courseControllerCreateCourse(params);
+
+ return response.data;
}
}
diff --git a/apps/server/src/infra/courses-client/generated/.openapi-generator/FILES b/apps/server/src/infra/courses-client/generated/.openapi-generator/FILES
index e10dec0e56..6d8aa5a56d 100644
--- a/apps/server/src/infra/courses-client/generated/.openapi-generator/FILES
+++ b/apps/server/src/infra/courses-client/generated/.openapi-generator/FILES
@@ -10,4 +10,5 @@ git_push.sh
index.ts
models/course-common-cartridge-metadata-response.ts
models/create-course-body-params.ts
+models/create-course-response.ts
models/index.ts
diff --git a/apps/server/src/infra/courses-client/generated/api/courses-api.ts b/apps/server/src/infra/courses-client/generated/api/courses-api.ts
index 9be58d522b..50ca3d7637 100644
--- a/apps/server/src/infra/courses-client/generated/api/courses-api.ts
+++ b/apps/server/src/infra/courses-client/generated/api/courses-api.ts
@@ -25,6 +25,8 @@ import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError
import type { CourseCommonCartridgeMetadataResponse } from '../models';
// @ts-ignore
import type { CreateCourseBodyParams } from '../models';
+// @ts-ignore
+import type { CreateCourseResponse } from '../models';
/**
* CoursesApi - axios parameter creator
* @export
@@ -126,7 +128,7 @@ export const CoursesApiFp = function(configuration?: Configuration) {
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- async courseControllerCreateCourse(createCourseBodyParams: CreateCourseBodyParams, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ async courseControllerCreateCourse(createCourseBodyParams: CreateCourseBodyParams, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
const localVarAxiosArgs = await localVarAxiosParamCreator.courseControllerCreateCourse(createCourseBodyParams, options);
const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
const localVarOperationServerBasePath = operationServerMap['CoursesApi.courseControllerCreateCourse']?.[localVarOperationServerIndex]?.url;
@@ -162,7 +164,7 @@ export const CoursesApiFactory = function (configuration?: Configuration, basePa
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
- courseControllerCreateCourse(createCourseBodyParams: CreateCourseBodyParams, options?: any): AxiosPromise {
+ courseControllerCreateCourse(createCourseBodyParams: CreateCourseBodyParams, options?: any): AxiosPromise {
return localVarFp.courseControllerCreateCourse(createCourseBodyParams, options).then((request) => request(axios, basePath));
},
/**
@@ -192,7 +194,7 @@ export interface CoursesApiInterface {
* @throws {RequiredError}
* @memberof CoursesApiInterface
*/
- courseControllerCreateCourse(createCourseBodyParams: CreateCourseBodyParams, options?: RawAxiosRequestConfig): AxiosPromise;
+ courseControllerCreateCourse(createCourseBodyParams: CreateCourseBodyParams, options?: RawAxiosRequestConfig): AxiosPromise;
/**
*
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/update-board-title-params.ts b/apps/server/src/infra/courses-client/generated/models/create-course-response.ts
similarity index 72%
rename from apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/update-board-title-params.ts
rename to apps/server/src/infra/courses-client/generated/models/create-course-response.ts
index d5d90955c3..bbffda3237 100644
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/update-board-title-params.ts
+++ b/apps/server/src/infra/courses-client/generated/models/create-course-response.ts
@@ -17,14 +17,14 @@
/**
*
* @export
- * @interface UpdateBoardTitleParams
+ * @interface CreateCourseResponse
*/
-export interface UpdateBoardTitleParams {
+export interface CreateCourseResponse {
/**
- *
+ * The id of the created course
* @type {string}
- * @memberof UpdateBoardTitleParams
+ * @memberof CreateCourseResponse
*/
- 'title': string;
+ 'courseId': string;
}
diff --git a/apps/server/src/infra/courses-client/generated/models/index.ts b/apps/server/src/infra/courses-client/generated/models/index.ts
index 3a4d2661a7..0cc02a2c36 100644
--- a/apps/server/src/infra/courses-client/generated/models/index.ts
+++ b/apps/server/src/infra/courses-client/generated/models/index.ts
@@ -1,2 +1,3 @@
export * from './course-common-cartridge-metadata-response';
export * from './create-course-body-params';
+export * from './create-course-response';
diff --git a/apps/server/src/modules/board/controller/board.controller.ts b/apps/server/src/modules/board/controller/board.controller.ts
index 8b40226a40..3ed6fdf9c8 100644
--- a/apps/server/src/modules/board/controller/board.controller.ts
+++ b/apps/server/src/modules/board/controller/board.controller.ts
@@ -41,7 +41,7 @@ export class BoardController {
@ApiResponse({ status: 403, type: ForbiddenException })
@ApiResponse({ status: 404, type: NotFoundException })
@Post()
- async createBoard(
+ public async createBoard(
@Body() bodyParams: CreateBoardBodyParams,
@CurrentUser() currentUser: ICurrentUser
): Promise {
@@ -58,7 +58,7 @@ export class BoardController {
@ApiResponse({ status: 403, type: ForbiddenException })
@ApiResponse({ status: 404, type: NotFoundException })
@Get(':boardId')
- async getBoardSkeleton(
+ public async getBoardSkeleton(
@Param() urlParams: BoardUrlParams,
@CurrentUser() currentUser: ICurrentUser
): Promise {
@@ -75,7 +75,7 @@ export class BoardController {
@ApiResponse({ status: 403, type: ForbiddenException })
@ApiResponse({ status: 404, type: NotFoundException })
@Get(':boardId/context')
- async getBoardContext(
+ public async getBoardContext(
@Param() urlParams: BoardUrlParams,
@CurrentUser() currentUser: ICurrentUser
): Promise {
@@ -93,7 +93,7 @@ export class BoardController {
@ApiResponse({ status: 404, type: NotFoundException })
@HttpCode(204)
@Patch(':boardId/title')
- async updateBoardTitle(
+ public async updateBoardTitle(
@Param() urlParams: BoardUrlParams,
@Body() bodyParams: UpdateBoardTitleParams,
@CurrentUser() currentUser: ICurrentUser
@@ -108,7 +108,10 @@ export class BoardController {
@ApiResponse({ status: 404, type: NotFoundException })
@HttpCode(204)
@Delete(':boardId')
- async deleteBoard(@Param() urlParams: BoardUrlParams, @CurrentUser() currentUser: ICurrentUser): Promise {
+ public async deleteBoard(
+ @Param() urlParams: BoardUrlParams,
+ @CurrentUser() currentUser: ICurrentUser
+ ): Promise {
await this.boardUc.deleteBoard(currentUser.userId, urlParams.boardId);
}
@@ -118,7 +121,7 @@ export class BoardController {
@ApiResponse({ status: 403, type: ForbiddenException })
@ApiResponse({ status: 404, type: NotFoundException })
@Post(':boardId/columns')
- async createColumn(
+ public async createColumn(
@Param() urlParams: BoardUrlParams,
@CurrentUser() currentUser: ICurrentUser
): Promise {
@@ -136,7 +139,7 @@ export class BoardController {
@ApiResponse({ status: 404, type: NotFoundException })
@Post(':boardId/copy')
@RequestTimeout('INCOMING_REQUEST_TIMEOUT_COPY_API')
- async copyBoard(
+ public async copyBoard(
@Param() urlParams: BoardUrlParams,
@CurrentUser() currentUser: ICurrentUser
): Promise {
@@ -152,11 +155,11 @@ export class BoardController {
@ApiResponse({ status: 404, type: NotFoundException })
@HttpCode(204)
@Patch(':boardId/visibility')
- async updateVisibility(
+ public async updateVisibility(
@Param() urlParams: BoardUrlParams,
@Body() bodyParams: VisibilityBodyParams,
@CurrentUser() currentUser: ICurrentUser
- ) {
+ ): Promise {
await this.boardUc.updateVisibility(currentUser.userId, urlParams.boardId, bodyParams.isVisible);
}
diff --git a/apps/server/src/modules/board/controller/dto/board/create-board.body.params.ts b/apps/server/src/modules/board/controller/dto/board/create-board.body.params.ts
index 8c59f934c4..546e69a64f 100644
--- a/apps/server/src/modules/board/controller/dto/board/create-board.body.params.ts
+++ b/apps/server/src/modules/board/controller/dto/board/create-board.body.params.ts
@@ -11,14 +11,14 @@ export class CreateBoardBodyParams {
@MinLength(1)
@MaxLength(100)
@SanitizeHtml()
- title!: string;
+ public title!: string;
@IsMongoId()
@ApiProperty({
description: 'The id of the parent',
required: true,
})
- parentId!: string;
+ public parentId!: string;
@ApiProperty({
description: 'The type of the parent',
@@ -27,7 +27,7 @@ export class CreateBoardBodyParams {
enumName: 'BoardParentType',
})
@IsEnum(BoardExternalReferenceType)
- parentType!: BoardExternalReferenceType;
+ public parentType!: BoardExternalReferenceType;
@ApiProperty({
description: 'The layout of the board',
@@ -37,5 +37,5 @@ export class CreateBoardBodyParams {
})
@IsEnum(BoardLayout, {})
@NotEquals(BoardLayout[BoardLayout.GRID])
- layout!: BoardLayout;
+ public layout!: BoardLayout;
}
diff --git a/apps/server/src/modules/board/service/column-board.service.spec.ts b/apps/server/src/modules/board/service/column-board.service.spec.ts
index 64d59057a7..5a7e49021c 100644
--- a/apps/server/src/modules/board/service/column-board.service.spec.ts
+++ b/apps/server/src/modules/board/service/column-board.service.spec.ts
@@ -4,7 +4,7 @@ import { StorageLocation } from '@modules/files-storage/interface';
import { Test, TestingModule } from '@nestjs/testing';
import { EntityId } from '@shared/domain/types';
import { CopyElementType, CopyStatus, CopyStatusEnum } from '../../copy-helper';
-import { BoardExternalReference, BoardExternalReferenceType, ColumnBoard } from '../domain';
+import { BoardExternalReference, BoardExternalReferenceType, ColumnBoard, ColumnBoardProps } from '../domain';
import { BoardNodeRepo } from '../repo';
import { columnBoardFactory } from '../testing';
import { BoardNodeService } from './board-node.service';
@@ -131,4 +131,24 @@ describe('ColumnBoardService', () => {
expect(result).toEqual(columnBoard);
});
+
+ describe('createColumnBoard', () => {
+ describe('when creating new ColumnBoard', () => {
+ const setup = () => {
+ const columnBoard = columnBoardFactory.build() as unknown as ColumnBoardProps;
+
+ repo.save.mockResolvedValue();
+
+ return { columnBoard };
+ };
+
+ it('should call BoardNodeRepo', async () => {
+ const { columnBoard } = setup();
+
+ await service.createColumnBoard(columnBoard);
+
+ expect(repo.save).toHaveBeenCalledTimes(1);
+ });
+ });
+ });
});
diff --git a/apps/server/src/modules/board/service/column-board.service.ts b/apps/server/src/modules/board/service/column-board.service.ts
index d468adf595..18803c5151 100644
--- a/apps/server/src/modules/board/service/column-board.service.ts
+++ b/apps/server/src/modules/board/service/column-board.service.ts
@@ -6,6 +6,7 @@ import {
BoardExternalReference,
BoardExternalReferenceType,
ColumnBoard,
+ ColumnBoardProps,
isColumnBoard,
} from '../domain';
import { BoardNodeRepo } from '../repo';
@@ -21,13 +22,13 @@ export class ColumnBoardService {
private readonly columnBoardLinkService: ColumnBoardLinkService
) {}
- async findById(id: EntityId, depth?: number): Promise {
- const columnBoard = this.boardNodeService.findByClassAndId(ColumnBoard, id, depth);
+ public async findById(id: EntityId, depth?: number): Promise {
+ const columnBoard = await this.boardNodeService.findByClassAndId(ColumnBoard, id, depth);
return columnBoard;
}
- async findByExternalReference(reference: BoardExternalReference, depth?: number): Promise {
+ public async findByExternalReference(reference: BoardExternalReference, depth?: number): Promise {
const boardNodes: AnyBoardNode[] = await this.boardNodeRepo.findByExternalReference(reference, depth);
const boards: ColumnBoard[] = boardNodes.filter((bn: AnyBoardNode): bn is ColumnBoard => isColumnBoard(bn));
@@ -35,13 +36,13 @@ export class ColumnBoardService {
return boards;
}
- async updateVisibility(columnBoard: ColumnBoard, visibility: boolean): Promise {
+ public async updateVisibility(columnBoard: ColumnBoard, visibility: boolean): Promise {
await this.boardNodeService.updateVisibility(columnBoard, visibility);
}
// called from feathers
// TODO remove when not needed anymore
- async deleteByCourseId(courseId: EntityId): Promise {
+ public async deleteByCourseId(courseId: EntityId): Promise {
const boardNodes = await this.findByExternalReference({
type: BoardExternalReferenceType.Course,
id: courseId,
@@ -50,15 +51,23 @@ export class ColumnBoardService {
await this.boardNodeRepo.delete(boardNodes);
}
- async copyColumnBoard(params: CopyColumnBoardParams): Promise {
+ public async copyColumnBoard(params: CopyColumnBoardParams): Promise {
const copyStatus = await this.columnBoardCopyService.copyColumnBoard(params);
return copyStatus;
}
- async swapLinkedIds(boardId: EntityId, idMap: Map): Promise {
+ public async swapLinkedIds(boardId: EntityId, idMap: Map): Promise {
const board = await this.columnBoardLinkService.swapLinkedIds(boardId, idMap);
return board;
}
+
+ public async createColumnBoard(props: ColumnBoardProps): Promise {
+ const columnBoard = new ColumnBoard(props);
+
+ await this.boardNodeRepo.save(columnBoard);
+
+ return columnBoard;
+ }
}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/api/board-api.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/api/board-api.ts
deleted file mode 100644
index 72900986b5..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/api/board-api.ts
+++ /dev/null
@@ -1,772 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Schulcloud-Verbund-Software Server API
- * This is v3 of Schulcloud-Verbund-Software Server. Checkout /docs for v1.
- *
- * The version of the OpenAPI document: 3.0
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-
-import type { Configuration } from '../configuration';
-import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
-import globalAxios from 'axios';
-// Some imports not used depending on template conditions
-// @ts-ignore
-import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '../common';
-// @ts-ignore
-import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
-// @ts-ignore
-import type { ApiValidationError } from '../models';
-// @ts-ignore
-import type { BoardContextResponse } from '../models';
-// @ts-ignore
-import type { BoardResponse } from '../models';
-// @ts-ignore
-import type { ColumnResponse } from '../models';
-// @ts-ignore
-import type { CopyApiResponse } from '../models';
-// @ts-ignore
-import type { CreateBoardBodyParams } from '../models';
-// @ts-ignore
-import type { CreateBoardResponse } from '../models';
-// @ts-ignore
-import type { UpdateBoardTitleParams } from '../models';
-// @ts-ignore
-import type { VisibilityBodyParams } from '../models';
-/**
- * BoardApi - axios parameter creator
- * @export
- */
-export const BoardApiAxiosParamCreator = function (configuration?: Configuration) {
- return {
- /**
- *
- * @summary Create a board copy.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerCopyBoard: async (boardId: string, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'boardId' is not null or undefined
- assertParamExists('boardControllerCopyBoard', 'boardId', boardId)
- const localVarPath = `/boards/{boardId}/copy`
- .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- /**
- *
- * @summary Create a new board.
- * @param {CreateBoardBodyParams} createBoardBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerCreateBoard: async (createBoardBodyParams: CreateBoardBodyParams, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'createBoardBodyParams' is not null or undefined
- assertParamExists('boardControllerCreateBoard', 'createBoardBodyParams', createBoardBodyParams)
- const localVarPath = `/boards`;
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- localVarHeaderParameter['Content-Type'] = 'application/json';
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
- localVarRequestOptions.data = serializeDataIfNeeded(createBoardBodyParams, localVarRequestOptions, configuration)
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- /**
- *
- * @summary Create a new column on a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerCreateColumn: async (boardId: string, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'boardId' is not null or undefined
- assertParamExists('boardControllerCreateColumn', 'boardId', boardId)
- const localVarPath = `/boards/{boardId}/columns`
- .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- /**
- *
- * @summary Delete a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerDeleteBoard: async (boardId: string, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'boardId' is not null or undefined
- assertParamExists('boardControllerDeleteBoard', 'boardId', boardId)
- const localVarPath = `/boards/{boardId}`
- .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- /**
- *
- * @summary Get the context of a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerGetBoardContext: async (boardId: string, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'boardId' is not null or undefined
- assertParamExists('boardControllerGetBoardContext', 'boardId', boardId)
- const localVarPath = `/boards/{boardId}/context`
- .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- /**
- *
- * @summary Get the skeleton of a a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerGetBoardSkeleton: async (boardId: string, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'boardId' is not null or undefined
- assertParamExists('boardControllerGetBoardSkeleton', 'boardId', boardId)
- const localVarPath = `/boards/{boardId}`
- .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- /**
- *
- * @summary Update the title of a board.
- * @param {string} boardId The id of the board.
- * @param {UpdateBoardTitleParams} updateBoardTitleParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerUpdateBoardTitle: async (boardId: string, updateBoardTitleParams: UpdateBoardTitleParams, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'boardId' is not null or undefined
- assertParamExists('boardControllerUpdateBoardTitle', 'boardId', boardId)
- // verify required parameter 'updateBoardTitleParams' is not null or undefined
- assertParamExists('boardControllerUpdateBoardTitle', 'updateBoardTitleParams', updateBoardTitleParams)
- const localVarPath = `/boards/{boardId}/title`
- .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- localVarHeaderParameter['Content-Type'] = 'application/json';
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
- localVarRequestOptions.data = serializeDataIfNeeded(updateBoardTitleParams, localVarRequestOptions, configuration)
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- /**
- *
- * @summary Update the visibility of a board.
- * @param {string} boardId The id of the board.
- * @param {VisibilityBodyParams} visibilityBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerUpdateVisibility: async (boardId: string, visibilityBodyParams: VisibilityBodyParams, options: RawAxiosRequestConfig = {}): Promise => {
- // verify required parameter 'boardId' is not null or undefined
- assertParamExists('boardControllerUpdateVisibility', 'boardId', boardId)
- // verify required parameter 'visibilityBodyParams' is not null or undefined
- assertParamExists('boardControllerUpdateVisibility', 'visibilityBodyParams', visibilityBodyParams)
- const localVarPath = `/boards/{boardId}/visibility`
- .replace(`{${"boardId"}}`, encodeURIComponent(String(boardId)));
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
- let baseOptions;
- if (configuration) {
- baseOptions = configuration.baseOptions;
- }
-
- const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options};
- const localVarHeaderParameter = {} as any;
- const localVarQueryParameter = {} as any;
-
- // authentication bearer required
- // http bearer authentication required
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
-
-
-
- localVarHeaderParameter['Content-Type'] = 'application/json';
-
- setSearchParams(localVarUrlObj, localVarQueryParameter);
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
- localVarRequestOptions.data = serializeDataIfNeeded(visibilityBodyParams, localVarRequestOptions, configuration)
-
- return {
- url: toPathString(localVarUrlObj),
- options: localVarRequestOptions,
- };
- },
- }
-};
-
-/**
- * BoardApi - functional programming interface
- * @export
- */
-export const BoardApiFp = function(configuration?: Configuration) {
- const localVarAxiosParamCreator = BoardApiAxiosParamCreator(configuration)
- return {
- /**
- *
- * @summary Create a board copy.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerCopyBoard(boardId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerCopyBoard(boardId, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerCopyBoard']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- /**
- *
- * @summary Create a new board.
- * @param {CreateBoardBodyParams} createBoardBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerCreateBoard(createBoardBodyParams, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerCreateBoard']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- /**
- *
- * @summary Create a new column on a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerCreateColumn(boardId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerCreateColumn(boardId, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerCreateColumn']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- /**
- *
- * @summary Delete a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerDeleteBoard(boardId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerDeleteBoard(boardId, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerDeleteBoard']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- /**
- *
- * @summary Get the context of a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerGetBoardContext(boardId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerGetBoardContext(boardId, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerGetBoardContext']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- /**
- *
- * @summary Get the skeleton of a a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerGetBoardSkeleton(boardId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerGetBoardSkeleton(boardId, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerGetBoardSkeleton']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- /**
- *
- * @summary Update the title of a board.
- * @param {string} boardId The id of the board.
- * @param {UpdateBoardTitleParams} updateBoardTitleParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerUpdateBoardTitle(boardId: string, updateBoardTitleParams: UpdateBoardTitleParams, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerUpdateBoardTitle(boardId, updateBoardTitleParams, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerUpdateBoardTitle']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- /**
- *
- * @summary Update the visibility of a board.
- * @param {string} boardId The id of the board.
- * @param {VisibilityBodyParams} visibilityBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- async boardControllerUpdateVisibility(boardId: string, visibilityBodyParams: VisibilityBodyParams, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
- const localVarAxiosArgs = await localVarAxiosParamCreator.boardControllerUpdateVisibility(boardId, visibilityBodyParams, options);
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
- const localVarOperationServerBasePath = operationServerMap['BoardApi.boardControllerUpdateVisibility']?.[localVarOperationServerIndex]?.url;
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
- },
- }
-};
-
-/**
- * BoardApi - factory interface
- * @export
- */
-export const BoardApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
- const localVarFp = BoardApiFp(configuration)
- return {
- /**
- *
- * @summary Create a board copy.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerCopyBoard(boardId: string, options?: any): AxiosPromise {
- return localVarFp.boardControllerCopyBoard(boardId, options).then((request) => request(axios, basePath));
- },
- /**
- *
- * @summary Create a new board.
- * @param {CreateBoardBodyParams} createBoardBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: any): AxiosPromise {
- return localVarFp.boardControllerCreateBoard(createBoardBodyParams, options).then((request) => request(axios, basePath));
- },
- /**
- *
- * @summary Create a new column on a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerCreateColumn(boardId: string, options?: any): AxiosPromise {
- return localVarFp.boardControllerCreateColumn(boardId, options).then((request) => request(axios, basePath));
- },
- /**
- *
- * @summary Delete a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerDeleteBoard(boardId: string, options?: any): AxiosPromise {
- return localVarFp.boardControllerDeleteBoard(boardId, options).then((request) => request(axios, basePath));
- },
- /**
- *
- * @summary Get the context of a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerGetBoardContext(boardId: string, options?: any): AxiosPromise {
- return localVarFp.boardControllerGetBoardContext(boardId, options).then((request) => request(axios, basePath));
- },
- /**
- *
- * @summary Get the skeleton of a a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerGetBoardSkeleton(boardId: string, options?: any): AxiosPromise {
- return localVarFp.boardControllerGetBoardSkeleton(boardId, options).then((request) => request(axios, basePath));
- },
- /**
- *
- * @summary Update the title of a board.
- * @param {string} boardId The id of the board.
- * @param {UpdateBoardTitleParams} updateBoardTitleParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerUpdateBoardTitle(boardId: string, updateBoardTitleParams: UpdateBoardTitleParams, options?: any): AxiosPromise {
- return localVarFp.boardControllerUpdateBoardTitle(boardId, updateBoardTitleParams, options).then((request) => request(axios, basePath));
- },
- /**
- *
- * @summary Update the visibility of a board.
- * @param {string} boardId The id of the board.
- * @param {VisibilityBodyParams} visibilityBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- */
- boardControllerUpdateVisibility(boardId: string, visibilityBodyParams: VisibilityBodyParams, options?: any): AxiosPromise {
- return localVarFp.boardControllerUpdateVisibility(boardId, visibilityBodyParams, options).then((request) => request(axios, basePath));
- },
- };
-};
-
-/**
- * BoardApi - interface
- * @export
- * @interface BoardApi
- */
-export interface BoardApiInterface {
- /**
- *
- * @summary Create a board copy.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerCopyBoard(boardId: string, options?: RawAxiosRequestConfig): AxiosPromise;
-
- /**
- *
- * @summary Create a new board.
- * @param {CreateBoardBodyParams} createBoardBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: RawAxiosRequestConfig): AxiosPromise;
-
- /**
- *
- * @summary Create a new column on a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerCreateColumn(boardId: string, options?: RawAxiosRequestConfig): AxiosPromise;
-
- /**
- *
- * @summary Delete a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerDeleteBoard(boardId: string, options?: RawAxiosRequestConfig): AxiosPromise;
-
- /**
- *
- * @summary Get the context of a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerGetBoardContext(boardId: string, options?: RawAxiosRequestConfig): AxiosPromise;
-
- /**
- *
- * @summary Get the skeleton of a a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerGetBoardSkeleton(boardId: string, options?: RawAxiosRequestConfig): AxiosPromise;
-
- /**
- *
- * @summary Update the title of a board.
- * @param {string} boardId The id of the board.
- * @param {UpdateBoardTitleParams} updateBoardTitleParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerUpdateBoardTitle(boardId: string, updateBoardTitleParams: UpdateBoardTitleParams, options?: RawAxiosRequestConfig): AxiosPromise;
-
- /**
- *
- * @summary Update the visibility of a board.
- * @param {string} boardId The id of the board.
- * @param {VisibilityBodyParams} visibilityBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApiInterface
- */
- boardControllerUpdateVisibility(boardId: string, visibilityBodyParams: VisibilityBodyParams, options?: RawAxiosRequestConfig): AxiosPromise;
-
-}
-
-/**
- * BoardApi - object-oriented interface
- * @export
- * @class BoardApi
- * @extends {BaseAPI}
- */
-export class BoardApi extends BaseAPI implements BoardApiInterface {
- /**
- *
- * @summary Create a board copy.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerCopyBoard(boardId: string, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerCopyBoard(boardId, options).then((request) => request(this.axios, this.basePath));
- }
-
- /**
- *
- * @summary Create a new board.
- * @param {CreateBoardBodyParams} createBoardBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerCreateBoard(createBoardBodyParams: CreateBoardBodyParams, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerCreateBoard(createBoardBodyParams, options).then((request) => request(this.axios, this.basePath));
- }
-
- /**
- *
- * @summary Create a new column on a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerCreateColumn(boardId: string, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerCreateColumn(boardId, options).then((request) => request(this.axios, this.basePath));
- }
-
- /**
- *
- * @summary Delete a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerDeleteBoard(boardId: string, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerDeleteBoard(boardId, options).then((request) => request(this.axios, this.basePath));
- }
-
- /**
- *
- * @summary Get the context of a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerGetBoardContext(boardId: string, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerGetBoardContext(boardId, options).then((request) => request(this.axios, this.basePath));
- }
-
- /**
- *
- * @summary Get the skeleton of a a board.
- * @param {string} boardId The id of the board.
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerGetBoardSkeleton(boardId: string, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerGetBoardSkeleton(boardId, options).then((request) => request(this.axios, this.basePath));
- }
-
- /**
- *
- * @summary Update the title of a board.
- * @param {string} boardId The id of the board.
- * @param {UpdateBoardTitleParams} updateBoardTitleParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerUpdateBoardTitle(boardId: string, updateBoardTitleParams: UpdateBoardTitleParams, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerUpdateBoardTitle(boardId, updateBoardTitleParams, options).then((request) => request(this.axios, this.basePath));
- }
-
- /**
- *
- * @summary Update the visibility of a board.
- * @param {string} boardId The id of the board.
- * @param {VisibilityBodyParams} visibilityBodyParams
- * @param {*} [options] Override http request option.
- * @throws {RequiredError}
- * @memberof BoardApi
- */
- public boardControllerUpdateVisibility(boardId: string, visibilityBodyParams: VisibilityBodyParams, options?: RawAxiosRequestConfig) {
- return BoardApiFp(this.configuration).boardControllerUpdateVisibility(boardId, visibilityBodyParams, options).then((request) => request(this.axios, this.basePath));
- }
-}
-
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/api-validation-error.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/api-validation-error.ts
deleted file mode 100644
index 3f49cf86f0..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/api-validation-error.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Schulcloud-Verbund-Software Server API
- * This is v3 of Schulcloud-Verbund-Software Server. Checkout /docs for v1.
- *
- * The version of the OpenAPI document: 3.0
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-
-
-/**
- *
- * @export
- * @interface ApiValidationError
- */
-export interface ApiValidationError {
- /**
- * The response status code.
- * @type {number}
- * @memberof ApiValidationError
- */
- 'code': number;
- /**
- * The error type.
- * @type {string}
- * @memberof ApiValidationError
- */
- 'type': string;
- /**
- * The error title.
- * @type {string}
- * @memberof ApiValidationError
- */
- 'title': string;
- /**
- * The error message.
- * @type {string}
- * @memberof ApiValidationError
- */
- 'message': string;
- /**
- * The error details.
- * @type {object}
- * @memberof ApiValidationError
- */
- 'details'?: object;
-}
-
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-context-response.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-context-response.ts
deleted file mode 100644
index e2c9b1b0a1..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-context-response.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Schulcloud-Verbund-Software Server API
- * This is v3 of Schulcloud-Verbund-Software Server. Checkout /docs for v1.
- *
- * The version of the OpenAPI document: 3.0
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-
-// May contain unused imports in some cases
-// @ts-ignore
-import type { BoardExternalReferenceType } from './board-external-reference-type';
-
-/**
- *
- * @export
- * @interface BoardContextResponse
- */
-export interface BoardContextResponse {
- /**
- *
- * @type {string}
- * @memberof BoardContextResponse
- */
- 'id': string;
- /**
- *
- * @type {BoardExternalReferenceType}
- * @memberof BoardContextResponse
- */
- 'type': BoardExternalReferenceType;
-}
-
-
-
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-external-reference-type.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-external-reference-type.ts
deleted file mode 100644
index 5510db52c1..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/board-external-reference-type.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Schulcloud-Verbund-Software Server API
- * This is v3 of Schulcloud-Verbund-Software Server. Checkout /docs for v1.
- *
- * The version of the OpenAPI document: 3.0
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-
-
-/**
- *
- * @export
- * @enum {string}
- */
-
-export const BoardExternalReferenceType = {
- COURSE: 'course',
- USER: 'user'
-} as const;
-
-export type BoardExternalReferenceType = typeof BoardExternalReferenceType[keyof typeof BoardExternalReferenceType];
-
-
-
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/copy-api-response.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/copy-api-response.ts
deleted file mode 100644
index 3c78d846ed..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/copy-api-response.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Schulcloud-Verbund-Software Server API
- * This is v3 of Schulcloud-Verbund-Software Server. Checkout /docs for v1.
- *
- * The version of the OpenAPI document: 3.0
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-/**
- *
- * @export
- * @interface CopyApiResponse
- */
-export interface CopyApiResponse {
- /**
- * Id of copied element
- * @type {string}
- * @memberof CopyApiResponse
- */
- id?: string;
- /**
- * Title of copied element
- * @type {string}
- * @memberof CopyApiResponse
- */
- title?: string;
- /**
- * Type of copied element
- * @type {string}
- * @memberof CopyApiResponse
- */
- type: CopyApiResponseType;
- /**
- * Id of destination parent reference
- * @type {string}
- * @memberof CopyApiResponse
- */
- destinationId?: string;
- /**
- * Copy progress status of copied element
- * @type {string}
- * @memberof CopyApiResponse
- */
- status: CopyApiResponseStatus;
- /**
- * List of included sub elements with recursive type structure
- * @type {Array}
- * @memberof CopyApiResponse
- */
- elements?: Array;
-}
-
-export const CopyApiResponseType = {
- BOARD: 'BOARD',
- CARD: 'CARD',
- COLLABORATIVE_TEXT_EDITOR_ELEMENT: 'COLLABORATIVE_TEXT_EDITOR_ELEMENT',
- COLUMN: 'COLUMN',
- COLUMNBOARD: 'COLUMNBOARD',
- CONTENT: 'CONTENT',
- COURSE: 'COURSE',
- COURSEGROUP_GROUP: 'COURSEGROUP_GROUP',
- EXTERNAL_TOOL: 'EXTERNAL_TOOL',
- EXTERNAL_TOOL_ELEMENT: 'EXTERNAL_TOOL_ELEMENT',
- FILE: 'FILE',
- FILE_ELEMENT: 'FILE_ELEMENT',
- DRAWING_ELEMENT: 'DRAWING_ELEMENT',
- FILE_GROUP: 'FILE_GROUP',
- LEAF: 'LEAF',
- LESSON: 'LESSON',
- LESSON_CONTENT_ETHERPAD: 'LESSON_CONTENT_ETHERPAD',
- LESSON_CONTENT_GEOGEBRA: 'LESSON_CONTENT_GEOGEBRA',
- LESSON_CONTENT_GROUP: 'LESSON_CONTENT_GROUP',
- LESSON_CONTENT_LERNSTORE: 'LESSON_CONTENT_LERNSTORE',
- LESSON_CONTENT_NEXBOARD: 'LESSON_CONTENT_NEXBOARD',
- LESSON_CONTENT_TASK: 'LESSON_CONTENT_TASK',
- LESSON_CONTENT_TEXT: 'LESSON_CONTENT_TEXT',
- LERNSTORE_MATERIAL: 'LERNSTORE_MATERIAL',
- LERNSTORE_MATERIAL_GROUP: 'LERNSTORE_MATERIAL_GROUP',
- LINK_ELEMENT: 'LINK_ELEMENT',
- LTITOOL_GROUP: 'LTITOOL_GROUP',
- MEDIA_BOARD: 'MEDIA_BOARD',
- MEDIA_LINE: 'MEDIA_LINE',
- MEDIA_EXTERNAL_TOOL_ELEMENT: 'MEDIA_EXTERNAL_TOOL_ELEMENT',
- METADATA: 'METADATA',
- RICHTEXT_ELEMENT: 'RICHTEXT_ELEMENT',
- SUBMISSION_CONTAINER_ELEMENT: 'SUBMISSION_CONTAINER_ELEMENT',
- SUBMISSION_ITEM: 'SUBMISSION_ITEM',
- SUBMISSION_GROUP: 'SUBMISSION_GROUP',
- TASK: 'TASK',
- TASK_GROUP: 'TASK_GROUP',
- TIME_GROUP: 'TIME_GROUP',
- USER_GROUP: 'USER_GROUP',
-} as const;
-
-export type CopyApiResponseType = typeof CopyApiResponseType[keyof typeof CopyApiResponseType];
-export const CopyApiResponseStatus = {
- SUCCESS: 'success',
- FAILURE: 'failure',
- NOT_DOING: 'not-doing',
- NOT_IMPLEMENTED: 'not-implemented',
- PARTIAL: 'partial',
-} as const;
-
-export type CopyApiResponseStatus = typeof CopyApiResponseStatus[keyof typeof CopyApiResponseStatus];
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/visibility-body-params.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/visibility-body-params.ts
deleted file mode 100644
index 46cf830623..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-api-client/models/visibility-body-params.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/* tslint:disable */
-/* eslint-disable */
-/**
- * Schulcloud-Verbund-Software Server API
- * This is v3 of Schulcloud-Verbund-Software Server. Checkout /docs for v1.
- *
- * The version of the OpenAPI document: 3.0
- *
- *
- * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
- * https://openapi-generator.tech
- * Do not edit the class manually.
- */
-
-
-
-/**
- *
- * @export
- * @interface VisibilityBodyParams
- */
-export interface VisibilityBodyParams {
- /**
- *
- * @type {boolean}
- * @memberof VisibilityBodyParams
- */
- 'isVisible': boolean;
-}
-
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.spec.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.spec.ts
deleted file mode 100644
index 8dacf504e4..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.spec.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-import { faker } from '@faker-js/faker';
-import { createMock, DeepMocked } from '@golevelup/ts-jest';
-import { UnauthorizedException } from '@nestjs/common';
-import { REQUEST } from '@nestjs/core';
-import { Test, TestingModule } from '@nestjs/testing';
-import { AxiosResponse } from 'axios';
-import { Request } from 'express';
-import { BoardApi, BoardResponse } from './board-api-client';
-import { BoardClientAdapter } from './board-client.adapter';
-
-const jwtToken = 'someJwtToken';
-
-describe(BoardClientAdapter.name, () => {
- let module: TestingModule;
- let sut: BoardClientAdapter;
- let boardApiMock: DeepMocked;
-
- beforeAll(async () => {
- module = await Test.createTestingModule({
- providers: [
- BoardClientAdapter,
- {
- provide: BoardApi,
- useValue: createMock(),
- },
- {
- provide: REQUEST,
- useValue: createMock({
- headers: {
- authorization: `Bearer ${jwtToken}`,
- },
- }),
- },
- ],
- }).compile();
-
- sut = module.get(BoardClientAdapter);
- boardApiMock = module.get(BoardApi);
- });
-
- afterAll(async () => {
- await module.close();
- });
-
- afterEach(() => {
- jest.resetAllMocks();
- });
-
- it('should be defined', () => {
- expect(sut).toBeDefined();
- });
-
- describe('getBoardSkeletonById', () => {
- describe('When getBoardSkeletonById is called', () => {
- const setup = () => {
- const response = createMock>({
- data: {
- id: faker.string.uuid(),
- title: faker.lorem.sentence(),
- columns: [],
- isVisible: true,
- layout: 'layout',
- timestamps: {
- createdAt: faker.date.past().toString(),
- lastUpdatedAt: faker.date.recent().toString(),
- },
- },
- });
-
- boardApiMock.boardControllerGetBoardSkeleton.mockResolvedValue(response);
-
- return { boardId: response.data.id };
- };
-
- it('it should return a board skeleton dto', async () => {
- const { boardId } = setup();
-
- await sut.getBoardSkeletonById(boardId);
-
- expect(boardApiMock.boardControllerGetBoardSkeleton).toHaveBeenCalled();
- });
- });
-
- describe('When no JWT token is found', () => {
- const setup = () => {
- const boardId = faker.string.uuid();
- const request = createMock({
- headers: {},
- });
-
- const adapter: BoardClientAdapter = new BoardClientAdapter(boardApiMock, request);
-
- return { boardId, adapter };
- };
-
- it('should throw an UnauthorizedError', async () => {
- const { boardId, adapter } = setup();
-
- await expect(adapter.getBoardSkeletonById(boardId)).rejects.toThrowError(UnauthorizedException);
- });
- });
- });
-});
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.ts
deleted file mode 100644
index b2b48e2d33..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.adapter.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Inject, Injectable, UnauthorizedException } from '@nestjs/common';
-import { REQUEST } from '@nestjs/core';
-import { extractJwtFromHeader } from '@shared/common/utils';
-import { RawAxiosRequestConfig } from 'axios';
-import { Request } from 'express';
-import { BoardApi } from './board-api-client';
-import { BoardSkeletonDto } from './dto';
-import { BoardSkeletonDtoMapper } from './mapper';
-
-@Injectable()
-export class BoardClientAdapter {
- constructor(private readonly boardApi: BoardApi, @Inject(REQUEST) private request: Request) {}
-
- public async getBoardSkeletonById(boardId: string): Promise {
- const options = this.createOptionParams();
- const boardResponse = await this.boardApi
- .boardControllerGetBoardSkeleton(boardId, options)
- .then((response) => response.data);
-
- const boardSkeletonDto = BoardSkeletonDtoMapper.mapToBoardSkeletonDto(boardResponse);
-
- return boardSkeletonDto;
- }
-
- private createOptionParams(): RawAxiosRequestConfig {
- const jwt = this.getJwt();
- const options: RawAxiosRequestConfig = { headers: { authorization: `Bearer ${jwt}` } };
-
- return options;
- }
-
- private getJwt(): string {
- const jwt = extractJwtFromHeader(this.request) ?? this.request.headers.authorization;
-
- if (!jwt) {
- throw new UnauthorizedException('No JWT found in request');
- }
-
- return jwt;
- }
-}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.config.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.config.ts
deleted file mode 100644
index ba6d1e4ad5..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.config.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { ConfigurationParameters } from './board-api-client';
-
-export interface BoardClientConfig extends ConfigurationParameters {
- basePath: string;
-}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.spec.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.spec.ts
deleted file mode 100644
index b46d574e0f..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.spec.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { Test, TestingModule } from '@nestjs/testing';
-import { BoardClientModule } from './board-client.module';
-import { BoardClientAdapter } from './board-client.adapter';
-
-describe('BoardClientModule', () => {
- let module: TestingModule;
-
- beforeAll(async () => {
- module = await Test.createTestingModule({
- imports: [
- BoardClientModule.register({
- basePath: 'http://localhost:3030/api/v3',
- }),
- ],
- }).compile();
- });
-
- afterAll(async () => {
- await module.close();
- });
-
- describe('when module is initialized', () => {
- it('should have the BoardClientAdapter defined', () => {
- const boardClientAdapter = module.get(BoardClientAdapter);
- expect(boardClientAdapter).toBeDefined();
- });
- });
-});
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.ts
deleted file mode 100644
index 3ad0125843..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/board-client.module.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { DynamicModule, Module } from '@nestjs/common';
-import { BoardClientAdapter } from './board-client.adapter';
-import { BoardApi, Configuration } from './board-api-client';
-import { BoardClientConfig } from './board-client.config';
-
-@Module({})
-export class BoardClientModule {
- static register(config: BoardClientConfig): DynamicModule {
- const providers = [
- BoardClientAdapter,
- {
- provide: BoardApi,
- useFactory: () => {
- const configuration = new Configuration(config);
- return new BoardApi(configuration);
- },
- },
- ];
-
- return {
- module: BoardClientModule,
- providers,
- exports: [BoardClientAdapter],
- };
- }
-}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/board-skeleton.dto.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/board-skeleton.dto.ts
deleted file mode 100644
index 144ac8e478..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/board-skeleton.dto.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ColumnSkeletonDto } from './column-skeleton.dto';
-
-export class BoardSkeletonDto {
- boardId: string;
-
- title: string;
-
- columns: ColumnSkeletonDto[];
-
- isVisible: boolean;
-
- layout: string;
-
- constructor(props: BoardSkeletonDto) {
- this.boardId = props.boardId;
- this.title = props.title;
- this.columns = props.columns;
- this.isVisible = props.isVisible;
- this.layout = props.layout;
- }
-}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/card-skeleton.dto.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/card-skeleton.dto.ts
deleted file mode 100644
index fe50f01386..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/card-skeleton.dto.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-export class CardSkeletonDto {
- cardId: string;
-
- height: number;
-
- constructor(props: CardSkeletonDto) {
- this.cardId = props.cardId;
- this.height = props.height;
- }
-}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/column-skeleton.dto.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/column-skeleton.dto.ts
deleted file mode 100644
index 01aeb8a9d2..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/column-skeleton.dto.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { CardSkeletonDto } from './card-skeleton.dto';
-
-export class ColumnSkeletonDto {
- public columnId: string;
-
- public title: string;
-
- public cards: CardSkeletonDto[];
-
- constructor(props: ColumnSkeletonDto) {
- this.columnId = props.columnId;
- this.title = props.title;
- this.cards = props.cards;
- }
-}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/index.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/index.ts
deleted file mode 100644
index 58a91c50d6..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/dto/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { BoardSkeletonDto } from './board-skeleton.dto';
-export { ColumnSkeletonDto } from './column-skeleton.dto';
-export { CardSkeletonDto } from './card-skeleton.dto';
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/index.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/index.ts
deleted file mode 100644
index 4347b12992..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { BoardClientModule } from './board-client.module';
-export { BoardClientConfig } from './board-client.config';
-export { BoardClientAdapter } from './board-client.adapter';
-export * from './dto';
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.spec.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.spec.ts
deleted file mode 100644
index ee1d26fa58..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.spec.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { faker } from '@faker-js/faker';
-import { BoardResponse, CardSkeletonResponse, ColumnResponse } from '../board-api-client';
-import { BoardSkeletonDtoMapper } from './board-skeleton-response.mapper';
-
-describe('BoardSkeletonDtoMapper', () => {
- describe('mapToBoardSkeletonDto', () => {
- describe('when mapping to BoardResponse', () => {
- const setup = () => {
- const cardResponse: CardSkeletonResponse = {
- cardId: faker.string.uuid(),
- height: faker.number.int(),
- };
-
- const columnResponse: ColumnResponse = {
- id: faker.string.uuid(),
- title: faker.lorem.sentence(),
- cards: [cardResponse],
- timestamps: {
- createdAt: faker.date.past().toString(),
- lastUpdatedAt: faker.date.recent().toString(),
- },
- };
-
- const boardResponse: BoardResponse = {
- id: faker.string.uuid(),
- title: faker.lorem.sentence(),
- columns: [columnResponse],
- isVisible: true,
- layout: 'layout',
- timestamps: {
- createdAt: faker.date.past().toString(),
- lastUpdatedAt: faker.date.recent().toString(),
- },
- };
-
- return { boardResponse };
- };
- it('should return BoardSkeletonDto', () => {
- const { boardResponse } = setup();
-
- const result = BoardSkeletonDtoMapper.mapToBoardSkeletonDto(boardResponse);
-
- expect(result).toEqual({
- // AI next 16 lines
- boardId: boardResponse.id,
- title: boardResponse.title,
- isVisible: boardResponse.isVisible,
- layout: boardResponse.layout,
- columns: [
- {
- columnId: boardResponse.columns[0].id,
- title: boardResponse.columns[0].title,
- cards: [
- {
- cardId: boardResponse.columns[0].cards[0].cardId,
- height: boardResponse.columns[0].cards[0].height,
- },
- ],
- },
- ],
- });
- });
- });
- });
-});
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.ts
deleted file mode 100644
index 15e12d3b2a..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/board-skeleton-response.mapper.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { BoardResponse, ColumnResponse, CardSkeletonResponse } from '../board-api-client';
-import { BoardSkeletonDto, ColumnSkeletonDto, CardSkeletonDto } from '../dto';
-
-export class BoardSkeletonDtoMapper {
- public static mapToBoardSkeletonDto(boardResponse: BoardResponse): BoardSkeletonDto {
- return new BoardSkeletonDto({
- boardId: boardResponse.id,
- title: boardResponse.title,
- columns: boardResponse.columns.map((column) => this.mapToColumnSkeletonDto(column)),
- isVisible: boardResponse.isVisible,
- layout: boardResponse.layout,
- });
- }
-
- private static mapToColumnSkeletonDto(columnResponse: ColumnResponse): ColumnSkeletonDto {
- return new ColumnSkeletonDto({
- columnId: columnResponse.id,
- title: columnResponse.title,
- cards: columnResponse.cards.map((card) => this.mapToCardSkeletonDto(card)),
- });
- }
-
- private static mapToCardSkeletonDto(cardResponse: CardSkeletonResponse): CardSkeletonDto {
- return new CardSkeletonDto({
- cardId: cardResponse.cardId,
- height: cardResponse.height,
- });
- }
-}
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/index.ts b/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/index.ts
deleted file mode 100644
index 0213105c0d..0000000000
--- a/apps/server/src/modules/common-cartridge/common-cartridge-client/board-client/mapper/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { BoardSkeletonDtoMapper } from './board-skeleton-response.mapper';
diff --git a/apps/server/src/modules/common-cartridge/common-cartridge.module.ts b/apps/server/src/modules/common-cartridge/common-cartridge.module.ts
index 676972ac54..dab66351de 100644
--- a/apps/server/src/modules/common-cartridge/common-cartridge.module.ts
+++ b/apps/server/src/modules/common-cartridge/common-cartridge.module.ts
@@ -8,7 +8,7 @@ import { Module } from '@nestjs/common';
import { defaultMikroOrmOptions } from '@shared/common/defaultMikroOrmOptions';
import { ALL_ENTITIES } from '@shared/domain/entity';
import { LoggerModule } from '@core/logger';
-import { BoardClientModule } from './common-cartridge-client/board-client';
+import { BoardsClientModule } from '@infra/boards-client';
import { CardClientModule } from './common-cartridge-client/card-client/card-client.module';
import { LessonClientModule } from './common-cartridge-client/lesson-client/lesson-client.module';
import { CourseRoomsModule } from './common-cartridge-client/room-client';
@@ -24,6 +24,7 @@ import { CommonCartridgeUc } from './uc/common-cartridge.uc';
FilesStorageClientModule,
LoggerModule,
CoursesClientModule,
+ BoardsClientModule,
MikroOrmModule.forRoot({
...defaultMikroOrmOptions,
type: 'mongo',
@@ -32,9 +33,6 @@ import { CommonCartridgeUc } from './uc/common-cartridge.uc';
user: DB_USERNAME,
entities: ALL_ENTITIES,
}),
- BoardClientModule.register({
- basePath: `${Configuration.get('API_HOST') as string}/v3/`,
- }),
CourseRoomsModule.register({
basePath: `${Configuration.get('API_HOST') as string}/v3/`,
}),
diff --git a/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.spec.ts b/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.spec.ts
index 1aca822b17..d185576c01 100644
--- a/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.spec.ts
+++ b/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.spec.ts
@@ -2,12 +2,13 @@ import { DeepMocked, createMock } from '@golevelup/ts-jest';
import { FileDto, FilesStorageClientAdapterService } from '@modules/files-storage-client';
import { Test, TestingModule } from '@nestjs/testing';
import AdmZip from 'adm-zip';
+import { BoardsClientAdapter, BoardResponse } from '@infra/boards-client';
import { CoursesClientAdapter } from '@infra/courses-client';
-import { CourseCommonCartridgeMetadataDto } from '@infra/courses-client/dto';
import { FilesStorageClientAdapter } from '@infra/files-storage-client';
import { faker } from '@faker-js/faker';
import { FileRecordParentType } from '@modules/files-storage/interface';
-import { BoardClientAdapter, BoardSkeletonDto } from '../common-cartridge-client/board-client';
+import { CourseRoomsClientAdapter } from '../common-cartridge-client/room-client';
+import { CommonCartridgeExportService } from './common-cartridge-export.service';
import { CardClientAdapter } from '../common-cartridge-client/card-client/card-client.adapter';
import {
CardListResponseDto,
@@ -15,7 +16,6 @@ import {
RichTextElementContentDto,
} from '../common-cartridge-client/card-client/dto';
import { LessonClientAdapter } from '../common-cartridge-client/lesson-client/lesson-client.adapter';
-import { CourseRoomsClientAdapter } from '../common-cartridge-client/room-client';
import {
BoardColumnBoardDto,
BoardLessonDto,
@@ -33,7 +33,6 @@ import {
listOfCardResponseFactory,
roomFactory,
} from '../testing/common-cartridge-dtos.factory';
-import { CommonCartridgeExportService } from './common-cartridge-export.service';
import { CommonCartridgeExportMapper } from './common-cartridge.mapper';
describe('CommonCartridgeExportService', () => {
@@ -42,7 +41,7 @@ describe('CommonCartridgeExportService', () => {
let coursesClientAdapterMock: DeepMocked;
let courseRoomsClientAdapterMock: DeepMocked;
let cardClientAdapterMock: DeepMocked;
- let boardClientAdapterMock: DeepMocked;
+ let boardClientAdapterMock: DeepMocked;
let lessonClientAdapterMock: DeepMocked;
let filesMetadataClientAdapterMock: DeepMocked;
let filesStorageClientAdapterMock: DeepMocked;
@@ -57,12 +56,12 @@ describe('CommonCartridgeExportService', () => {
exportTasks: boolean,
exportColumnBoards: boolean
) => {
- const courseMetadata: CourseCommonCartridgeMetadataDto = courseMetadataFactory.build();
+ const courseMetadata = courseMetadataFactory.build();
const lessons = lessonFactory.buildList(2);
const [lesson] = lessons;
lesson.courseId = courseMetadata.id;
- const boardSkeleton: BoardSkeletonDto = columnBoardFactory.build();
+ const boardSkeleton: BoardResponse = columnBoardFactory.build();
const listOfCardsResponse: CardListResponseDto = listOfCardResponseFactory.build();
const boardTask: BoardTaskDto = boardTaskFactory.build();
boardTask.courseName = courseMetadata.title;
@@ -133,8 +132,8 @@ describe('CommonCartridgeExportService', () => {
useValue: createMock(),
},
{
- provide: BoardClientAdapter,
- useValue: createMock(),
+ provide: BoardsClientAdapter,
+ useValue: createMock(),
},
{
provide: CoursesClientAdapter,
@@ -167,7 +166,7 @@ describe('CommonCartridgeExportService', () => {
coursesClientAdapterMock = module.get(CoursesClientAdapter);
courseRoomsClientAdapterMock = module.get(CourseRoomsClientAdapter);
cardClientAdapterMock = module.get(CardClientAdapter);
- boardClientAdapterMock = module.get(BoardClientAdapter);
+ boardClientAdapterMock = module.get(BoardsClientAdapter);
lessonClientAdapterMock = module.get(LessonClientAdapter);
filesMetadataClientAdapterMock = module.get(FilesStorageClientAdapterService);
filesStorageClientAdapterMock = module.get(FilesStorageClientAdapter);
diff --git a/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.ts b/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.ts
index d87b0cda93..68e811fe68 100644
--- a/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.ts
+++ b/apps/server/src/modules/common-cartridge/service/common-cartridge-export.service.ts
@@ -1,9 +1,8 @@
import { Injectable } from '@nestjs/common';
import { CoursesClientAdapter } from '@infra/courses-client';
-import { CourseCommonCartridgeMetadataDto } from '@infra/courses-client/dto';
import { FilesStorageClientAdapter } from '@infra/files-storage-client';
import { FilesStorageClientAdapterService } from '@modules/files-storage-client';
-import { BoardClientAdapter, BoardSkeletonDto, ColumnSkeletonDto } from '../common-cartridge-client/board-client';
+import { BoardResponse, BoardsClientAdapter, ColumnResponse } from '@infra/boards-client';
import { CardClientAdapter } from '../common-cartridge-client/card-client';
import { CourseRoomsClientAdapter } from '../common-cartridge-client/room-client';
import { LessonClientAdapter } from '../common-cartridge-client/lesson-client';
@@ -32,7 +31,7 @@ import {
@Injectable()
export class CommonCartridgeExportService {
constructor(
- private readonly boardClientAdapter: BoardClientAdapter,
+ private readonly boardClientAdapter: BoardsClientAdapter,
private readonly cardClientAdapter: CardClientAdapter,
private readonly coursesClientAdapter: CoursesClientAdapter,
private readonly courseRoomsClientAdapter: CourseRoomsClientAdapter,
@@ -51,8 +50,7 @@ export class CommonCartridgeExportService {
): Promise {
const builder = new CommonCartridgeFileBuilder(this.mapper.mapCourseToManifest(version, courseId));
- const courseCommonCartridgeMetadata: CourseCommonCartridgeMetadataDto =
- await this.coursesClientAdapter.getCourseCommonCartridgeMetadata(courseId);
+ const courseCommonCartridgeMetadata = await this.coursesClientAdapter.getCourseCommonCartridgeMetadata(courseId);
builder.addMetadata(this.mapper.mapCourseToMetadata(courseCommonCartridgeMetadata));
@@ -160,7 +158,7 @@ export class CommonCartridgeExportService {
const columnBoardsIds = columnBoards
.filter((columnBoard) => exportedColumnBoards.includes(columnBoard.id))
.map((columBoard) => columBoard.columnBoardId);
- const boardSkeletons: BoardSkeletonDto[] = await Promise.all(
+ const boardSkeletons: BoardResponse[] = await Promise.all(
columnBoardsIds.map((columnBoardId) => this.boardClientAdapter.getBoardSkeletonById(columnBoardId))
);
@@ -168,7 +166,7 @@ export class CommonCartridgeExportService {
boardSkeletons.map(async (boardSkeleton) => {
const columnBoardOrganization = builder.createOrganization({
title: boardSkeleton.title,
- identifier: createIdentifier(boardSkeleton.boardId),
+ identifier: createIdentifier(boardSkeleton.id),
});
await Promise.all(
@@ -179,13 +177,12 @@ export class CommonCartridgeExportService {
}
private async addColumnToOrganization(
- column: ColumnSkeletonDto,
+ column: ColumnResponse,
columnBoardOrganization: CommonCartridgeOrganizationNode
): Promise {
- const { columnId } = column;
const columnOrganization = columnBoardOrganization.createChild({
title: column.title ?? '',
- identifier: createIdentifier(columnId),
+ identifier: createIdentifier(column.id),
});
if (column.cards.length) {
diff --git a/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.spec.ts b/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.spec.ts
index fb771065cc..144199a70c 100644
--- a/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.spec.ts
+++ b/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.spec.ts
@@ -2,6 +2,7 @@ import { faker } from '@faker-js/faker';
import { createMock, DeepMocked } from '@golevelup/ts-jest';
import { CoursesClientAdapter } from '@infra/courses-client';
import { Test, TestingModule } from '@nestjs/testing';
+import { BoardsClientAdapter } from '@infra/boards-client';
import type { CommonCartridgeFileParser } from '../import/common-cartridge-file-parser';
import { CommonCartridgeImportService } from './common-cartridge-import.service';
@@ -9,6 +10,18 @@ jest.mock('../import/common-cartridge-file-parser', () => {
const fileParserMock = createMock();
fileParserMock.getTitle.mockReturnValue(faker.lorem.words());
+ fileParserMock.getOrganizations.mockReturnValue([
+ {
+ pathDepth: 0,
+ title: faker.lorem.words(),
+ path: faker.system.filePath(),
+ identifier: faker.string.uuid(),
+ isInlined: true,
+ isResource: false,
+ resourcePath: faker.system.filePath(),
+ resourceType: faker.lorem.word(),
+ },
+ ]);
return {
CommonCartridgeFileParser: jest.fn(() => fileParserMock),
@@ -19,6 +32,7 @@ describe(CommonCartridgeImportService.name, () => {
let module: TestingModule;
let sut: CommonCartridgeImportService;
let coursesClientAdapterMock: DeepMocked;
+ let boardsClientAdapterMock: DeepMocked;
beforeEach(async () => {
module = await Test.createTestingModule({
@@ -28,11 +42,16 @@ describe(CommonCartridgeImportService.name, () => {
provide: CoursesClientAdapter,
useValue: createMock(),
},
+ {
+ provide: BoardsClientAdapter,
+ useValue: createMock(),
+ },
],
}).compile();
sut = module.get(CommonCartridgeImportService);
coursesClientAdapterMock = module.get(CoursesClientAdapter);
+ boardsClientAdapterMock = module.get(BoardsClientAdapter);
});
afterEach(async () => {
@@ -49,11 +68,27 @@ describe(CommonCartridgeImportService.name, () => {
describe('importFile', () => {
describe('when importing a file', () => {
+ const setup = () => {
+ const file = Buffer.from('');
+
+ return { file };
+ };
+
it('should create a course', async () => {
- await sut.importFile(Buffer.from(''));
+ const { file } = setup();
+
+ await sut.importFile(file);
expect(coursesClientAdapterMock.createCourse).toHaveBeenCalledWith({ title: expect.any(String) });
});
+
+ it('should create boards', async () => {
+ const { file } = setup();
+
+ await sut.importFile(file);
+
+ expect(boardsClientAdapterMock.createBoard).toHaveBeenCalledTimes(1);
+ });
});
});
});
diff --git a/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.ts b/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.ts
index 0580f260cb..6d51255348 100644
--- a/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.ts
+++ b/apps/server/src/modules/common-cartridge/service/common-cartridge-import.service.ts
@@ -1,11 +1,12 @@
import { CoursesClientAdapter } from '@infra/courses-client';
import { Injectable } from '@nestjs/common';
+import { BoardsClientAdapter } from '@infra/boards-client';
import { CommonCartridgeFileParser } from '../import/common-cartridge-file-parser';
import { DEFAULT_FILE_PARSER_OPTIONS } from '../import/common-cartridge-import.types';
@Injectable()
export class CommonCartridgeImportService {
- constructor(private readonly coursesClient: CoursesClientAdapter) {}
+ constructor(private readonly coursesClient: CoursesClientAdapter, private boardsClient: BoardsClientAdapter) {}
public async importFile(file: Buffer): Promise {
const parser = new CommonCartridgeFileParser(file, DEFAULT_FILE_PARSER_OPTIONS);
@@ -16,6 +17,29 @@ export class CommonCartridgeImportService {
private async createCourse(parser: CommonCartridgeFileParser): Promise {
const courseName = parser.getTitle() ?? 'Untitled Course';
- await this.coursesClient.createCourse({ title: courseName });
+ const course = await this.coursesClient.createCourse({ title: courseName });
+
+ await this.createBoards(course.courseId, parser);
+ }
+
+ private async createBoards(parentId: string, parser: CommonCartridgeFileParser): Promise {
+ const titles = parser
+ .getOrganizations()
+ .filter((organization) => organization.pathDepth === 0)
+ .map((organization) => organization.title);
+ const ids = new Array();
+
+ for await (const title of titles) {
+ const response = await this.boardsClient.createBoard({
+ title,
+ layout: 'columns',
+ parentId,
+ parentType: 'course',
+ });
+
+ ids.push(response.id);
+ }
+
+ return ids;
}
}
diff --git a/apps/server/src/modules/common-cartridge/testing/common-cartridge-dtos.factory.ts b/apps/server/src/modules/common-cartridge/testing/common-cartridge-dtos.factory.ts
index c08ee658be..2f16371a96 100644
--- a/apps/server/src/modules/common-cartridge/testing/common-cartridge-dtos.factory.ts
+++ b/apps/server/src/modules/common-cartridge/testing/common-cartridge-dtos.factory.ts
@@ -1,8 +1,8 @@
import { faker } from '@faker-js/faker';
import { Factory } from 'fishery';
import { CourseCommonCartridgeMetadataDto } from '@infra/courses-client/dto';
+import { BoardResponse, ColumnResponse, CardSkeletonResponse } from '@infra/boards-client';
import { LessonContentDto, LessonDto, LessonLinkedTaskDto } from '../common-cartridge-client/lesson-client/dto';
-import { BoardSkeletonDto, CardSkeletonDto, ColumnSkeletonDto } from '../common-cartridge-client/board-client';
import { CardListResponseDto } from '../common-cartridge-client/card-client/dto/card-list-response.dto';
import { CardResponseDto } from '../common-cartridge-client/card-client/dto/card-response.dto';
import {
@@ -27,28 +27,36 @@ export const courseMetadataFactory = Factory.define(({ sequence }) => {
+export const cardFactory = Factory.define(({ sequence }) => {
return {
cardId: sequence.toString(),
height: faker.number.int(),
};
});
-export const columnFactory = Factory.define(({ sequence }) => {
+export const columnFactory = Factory.define(({ sequence }) => {
return {
- columnId: sequence.toString(),
+ id: sequence.toString(),
title: faker.lorem.sentence(),
cards: [cardFactory.build(), cardFactory.build()],
+ timestamps: {
+ createdAt: faker.date.recent().toISOString(),
+ lastUpdatedAt: faker.date.recent().toISOString(),
+ },
};
});
-export const columnBoardFactory = Factory.define(({ sequence }) => {
+export const columnBoardFactory = Factory.define(({ sequence }) => {
return {
- boardId: sequence.toString(),
+ id: sequence.toString(),
title: faker.lorem.sentence(),
columns: [columnFactory.build(), columnFactory.build()],
isVisible: faker.datatype.boolean(),
layout: faker.lorem.word(),
+ timestamps: {
+ createdAt: faker.date.recent().toISOString(),
+ lastUpdatedAt: faker.date.recent().toISOString(),
+ },
};
});
diff --git a/apps/server/src/modules/learnroom/controller/course.controller.ts b/apps/server/src/modules/learnroom/controller/course.controller.ts
index 488cc69108..ddd49dd315 100644
--- a/apps/server/src/modules/learnroom/controller/course.controller.ts
+++ b/apps/server/src/modules/learnroom/controller/course.controller.ts
@@ -34,6 +34,7 @@ import {
CourseSyncBodyParams,
CourseUrlParams,
CreateCourseBodyParams,
+ CreateCourseResponse,
} from './dto';
import { CourseCommonCartridgeMetadataResponse } from './dto/course-cc-metadata.response';
@@ -64,11 +65,17 @@ export class CourseController {
@ApiOperation({ summary: 'Create a new course.' })
@ApiConsumes('application/json')
@ApiProduces('application/json')
- @ApiCreatedResponse({ description: 'Course was successfully created.' })
+ @ApiCreatedResponse({ description: 'Course was successfully created.', type: CreateCourseResponse })
@ApiBadRequestResponse({ description: 'Request data has invalid format.' })
@ApiInternalServerErrorResponse({ description: 'Internal server error.' })
- public async createCourse(@CurrentUser() user: ICurrentUser, @Body() body: CreateCourseBodyParams): Promise {
- await this.courseUc.createCourse(user, body.title);
+ public async createCourse(
+ @CurrentUser() user: ICurrentUser,
+ @Body() body: CreateCourseBodyParams
+ ): Promise {
+ const course = await this.courseUc.createCourse(user, body.title);
+ const response = CourseMapper.mapToCreateCourseResponse(course);
+
+ return response;
}
@Post('import')
diff --git a/apps/server/src/modules/learnroom/controller/dto/create-course.response.ts b/apps/server/src/modules/learnroom/controller/dto/create-course.response.ts
new file mode 100644
index 0000000000..97a04d3902
--- /dev/null
+++ b/apps/server/src/modules/learnroom/controller/dto/create-course.response.ts
@@ -0,0 +1,14 @@
+import { ApiProperty } from '@nestjs/swagger';
+
+export class CreateCourseResponse {
+ @ApiProperty({
+ description: 'The id of the created course',
+ type: () => String,
+ readOnly: true,
+ })
+ public courseId: string;
+
+ constructor(props: Readonly) {
+ this.courseId = props.courseId;
+ }
+}
diff --git a/apps/server/src/modules/learnroom/controller/dto/index.ts b/apps/server/src/modules/learnroom/controller/dto/index.ts
index 79a0302dde..da750e75e4 100644
--- a/apps/server/src/modules/learnroom/controller/dto/index.ts
+++ b/apps/server/src/modules/learnroom/controller/dto/index.ts
@@ -21,3 +21,4 @@ export {
BoardTaskStatusResponse,
SingleColumnBoardResponse,
} from './single-column-board';
+export { CreateCourseResponse } from './create-course.response';
diff --git a/apps/server/src/modules/learnroom/mapper/course.mapper.spec.ts b/apps/server/src/modules/learnroom/mapper/course.mapper.spec.ts
new file mode 100644
index 0000000000..b6b7a7354f
--- /dev/null
+++ b/apps/server/src/modules/learnroom/mapper/course.mapper.spec.ts
@@ -0,0 +1,26 @@
+import { courseFactory } from '@testing/factory/course.factory';
+import { setupEntities } from '@testing/setup-entities';
+import { CourseMapper } from './course.mapper';
+import { CreateCourseResponse } from '../controller/dto';
+
+describe(CourseMapper.name, () => {
+ beforeAll(async () => {
+ await setupEntities();
+ });
+
+ describe('mapToCreateCourseResponse', () => {
+ const setup = () => {
+ const course = courseFactory.build();
+
+ return { course };
+ };
+
+ it('should return CreateCourseResponse', () => {
+ const { course } = setup();
+
+ const result = CourseMapper.mapToCreateCourseResponse(course);
+
+ expect(result).toEqual(new CreateCourseResponse({ courseId: course.id }));
+ });
+ });
+});
diff --git a/apps/server/src/modules/learnroom/mapper/course.mapper.ts b/apps/server/src/modules/learnroom/mapper/course.mapper.ts
index b87bcbff71..4f9992e998 100644
--- a/apps/server/src/modules/learnroom/mapper/course.mapper.ts
+++ b/apps/server/src/modules/learnroom/mapper/course.mapper.ts
@@ -1,9 +1,9 @@
import { Course } from '@shared/domain/entity';
-import { CourseMetadataResponse } from '../controller/dto';
+import { CourseMetadataResponse, CreateCourseResponse } from '../controller/dto';
import { CourseCommonCartridgeMetadataResponse } from '../controller/dto/course-cc-metadata.response';
export class CourseMapper {
- static mapToMetadataResponse(course: Course): CourseMetadataResponse {
+ public static mapToMetadataResponse(course: Course): CourseMetadataResponse {
const courseMetadata = course.getMetadata();
const dto = new CourseMetadataResponse(
courseMetadata.id,
@@ -17,7 +17,7 @@ export class CourseMapper {
return dto;
}
- static mapToCommonCartridgeMetadataResponse(course: Course): CourseCommonCartridgeMetadataResponse {
+ public static mapToCommonCartridgeMetadataResponse(course: Course): CourseCommonCartridgeMetadataResponse {
const courseMetadata = course.getMetadata();
const teachers = course.teachers.toArray().map((teacher) => `${teacher.firstName} ${teacher.lastName}`);
const courseCCMetadataResopne: CourseCommonCartridgeMetadataResponse = new CourseCommonCartridgeMetadataResponse(
@@ -29,4 +29,10 @@ export class CourseMapper {
return courseCCMetadataResopne;
}
+
+ public static mapToCreateCourseResponse(course: Course): CreateCourseResponse {
+ const response = new CreateCourseResponse({ courseId: course.id });
+
+ return response;
+ }
}
diff --git a/apps/server/src/modules/learnroom/service/course.service.spec.ts b/apps/server/src/modules/learnroom/service/course.service.spec.ts
index e7d71d0d95..8962d78131 100644
--- a/apps/server/src/modules/learnroom/service/course.service.spec.ts
+++ b/apps/server/src/modules/learnroom/service/course.service.spec.ts
@@ -177,19 +177,22 @@ describe('CourseService', () => {
});
describe('create', () => {
- const setup = () => {
- const course = courseFactory.buildWithId();
- legacyCourseRepo.createCourse.mockResolvedValueOnce();
+ describe('when creating new Course', () => {
+ const setup = () => {
+ const course = courseFactory.buildWithId();
- return { course };
- };
+ legacyCourseRepo.createCourse.mockResolvedValueOnce(course);
- it('should call createCourse from course repository', async () => {
- const { course } = setup();
+ return { course };
+ };
+
+ it('should call createCourse from course repository', async () => {
+ const { course } = setup();
- await expect(courseService.create(course)).resolves.not.toThrow();
+ await expect(courseService.create(course)).resolves.not.toThrow();
- expect(legacyCourseRepo.createCourse).toBeCalledWith(course);
+ expect(legacyCourseRepo.createCourse).toBeCalledWith(course);
+ });
});
});
diff --git a/apps/server/src/modules/learnroom/service/course.service.ts b/apps/server/src/modules/learnroom/service/course.service.ts
index b298849131..550b04b136 100644
--- a/apps/server/src/modules/learnroom/service/course.service.ts
+++ b/apps/server/src/modules/learnroom/service/course.service.ts
@@ -36,8 +36,10 @@ export class CourseService implements DeletionService, IEventHandler {
- return this.repo.findById(courseId);
+ public findById(courseId: EntityId): Promise {
+ const course = this.repo.findById(courseId);
+
+ return course;
}
public async findAllCoursesByUserId(userId: EntityId): Promise> {
@@ -79,22 +81,25 @@ export class CourseService implements DeletionService, IEventHandler {
+ public async findAllByUserId(userId: EntityId): Promise {
const [courses] = await this.repo.findAllByUserId(userId);
return courses;
}
- async create(course: CourseEntity): Promise {
- await this.repo.createCourse(course);
+ public async create(course: CourseEntity): Promise {
+ const result = await this.repo.createCourse(course);
+
+ return result;
}
private getCoursesId(courses: CourseEntity[]): EntityId[] {
return courses.map((course) => course.id);
}
- async findOneForUser(courseId: EntityId, userId: EntityId): Promise {
+ public async findOneForUser(courseId: EntityId, userId: EntityId): Promise {
const course = await this.repo.findOne(courseId, userId);
+
return course;
}
}
diff --git a/apps/server/src/modules/learnroom/uc/course.uc.ts b/apps/server/src/modules/learnroom/uc/course.uc.ts
index 8547261576..71df5cfd8e 100644
--- a/apps/server/src/modules/learnroom/uc/course.uc.ts
+++ b/apps/server/src/modules/learnroom/uc/course.uc.ts
@@ -38,13 +38,14 @@ export class CourseUc {
return course;
}
- public async createCourse(currentUser: ICurrentUser, name: string): Promise {
+ public async createCourse(currentUser: ICurrentUser, name: string): Promise {
const user = await this.authService.getUserWithPermissions(currentUser.userId);
this.authService.checkAllPermissions(user, [Permission.COURSE_CREATE]);
const course = new Course({ teachers: [user], school: user.school, name });
+ const savedCourse = await this.courseService.create(course);
- await this.courseService.create(course);
+ return savedCourse;
}
}
diff --git a/apps/server/src/shared/repo/course/course.repo.ts b/apps/server/src/shared/repo/course/course.repo.ts
index ebe1074db0..a62a2c4411 100644
--- a/apps/server/src/shared/repo/course/course.repo.ts
+++ b/apps/server/src/shared/repo/course/course.repo.ts
@@ -1,6 +1,5 @@
import { QueryOrderMap } from '@mikro-orm/core';
import { Injectable } from '@nestjs/common';
-
import { Course } from '@shared/domain/entity';
import { IFindOptions } from '@shared/domain/interface';
import { Counted, EntityId } from '@shared/domain/types';
@@ -9,15 +8,17 @@ import { CourseScope } from './course.scope';
@Injectable()
export class CourseRepo extends BaseRepo {
- get entityName() {
+ get entityName(): typeof Course {
return Course;
}
- async createCourse(course: Course): Promise {
- return this.save(this.create(course));
+ public async createCourse(course: Course): Promise {
+ await this.save(this.create(course));
+
+ return course;
}
- async findById(id: EntityId, populate = true): Promise {
+ public async findById(id: EntityId, populate = true): Promise {
const course = await super.findById(id);
if (populate) {
await this._em.populate(course, ['courseGroups', 'teachers', 'substitutionTeachers', 'students']);
@@ -25,7 +26,7 @@ export class CourseRepo extends BaseRepo {
return course;
}
- async findAllByUserId(
+ public async findAllByUserId(
userId: EntityId,
filters?: { onlyActiveCourses?: boolean },
options?: IFindOptions
@@ -49,7 +50,7 @@ export class CourseRepo extends BaseRepo {
return [courses, count];
}
- async findAllForTeacher(
+ public async findAllForTeacher(
userId: EntityId,
filters?: { onlyActiveCourses?: boolean },
options?: IFindOptions
@@ -74,7 +75,7 @@ export class CourseRepo extends BaseRepo {
}
// not tested in repo.integration.spec
- async findAllForTeacherOrSubstituteTeacher(userId: EntityId): Promise> {
+ public async findAllForTeacherOrSubstituteTeacher(userId: EntityId): Promise> {
const scope = new CourseScope();
scope.forTeacherOrSubstituteTeacher(userId);
@@ -83,7 +84,7 @@ export class CourseRepo extends BaseRepo {
return [courses, count];
}
- async findOne(courseId: EntityId, userId?: EntityId): Promise {
+ public async findOne(courseId: EntityId, userId?: EntityId): Promise {
const scope = new CourseScope();
scope.forCourseId(courseId);
if (userId) scope.forAllGroupTypes(userId);
diff --git a/openapitools.json b/openapitools.json
index 194e1096fa..d55223b9aa 100644
--- a/openapitools.json
+++ b/openapitools.json
@@ -28,6 +28,31 @@
"withSeparateModelsAndApi": true
}
},
+ "boards-api": {
+ "generatorName": "typescript-axios",
+ "inputSpec": "http://localhost:3030/api/v3/docs-json",
+ "output": "./apps/server/src/infra/boards-client/generated",
+ "skipValidateSpec": true,
+ "enablePostProcessFile": true,
+ "openapiNormalizer": {
+ "FILTER": "operationId:BoardController_createBoard|BoardController_getBoardSkeleton"
+ },
+ "globalProperty": {
+ "models": "CreateBoardBodyParams:CreateBoardResponse:BoardParentType:BoardLayout:BoardResponse:ColumnResponse:CardSkeletonResponse:TimestampsResponse",
+
+ "apis": "",
+ "supportingFiles": ""
+ },
+ "additionalProperties": {
+ "apiPackage": "api",
+ "enumNameSuffix": "",
+ "enumPropertyNaming": "UPPERCASE",
+ "modelPackage": "models",
+ "supportsES6": true,
+ "withInterfaces": true,
+ "withSeparateModelsAndApi": true
+ }
+ },
"files-storage-api": {
"generatorName": "typescript-axios",
"inputSpec": "http://localhost:4444/api/v3/docs-json",
@@ -62,9 +87,18 @@
"FILTER": "operationId:CourseController_getCourseCcMetadataById|CourseController_createCourse"
},
"globalProperty": {
- "models": "CourseCommonCartridgeMetadataResponse:CreateCourseBodyParams",
+ "models": "CourseCommonCartridgeMetadataResponse:CreateCourseBodyParams:CreateCourseResponse",
"apis": "",
"supportingFiles": ""
+ },
+ "additionalProperties": {
+ "apiPackage": "api",
+ "enumNameSuffix": "",
+ "enumPropertyNaming": "UPPERCASE",
+ "modelPackage": "models",
+ "supportsES6": true,
+ "withInterfaces": true,
+ "withSeparateModelsAndApi": true
}
},
"svs-lesson-api": {
diff --git a/package.json b/package.json
index 9acdf38385..fadfb01bef 100644
--- a/package.json
+++ b/package.json
@@ -136,6 +136,8 @@
"generate-client:courses-api": "openapi-generator-cli generate -c ./openapitools.json --generator-key courses-api",
"pregenerate-client:tldraw-api": "rimraf ./apps/server/src/infra/tldraw-client/generated",
"generate-client:tldraw-api": "openapi-generator-cli generate -c ./openapitools.json --generator-key tldraw-api",
+ "pregenerate-client:boards-api": "rimraf ./apps/server/src/infra/boards-client/generated",
+ "generate-client:boards-api": "openapi-generator-cli generate -c ./openapitools.json --generator-key boards-api",
"generate-client:vidis-api": "openapi-generator-cli generate -c ./openapitools.json --generator-key vidis-api"
},
"overrides": {
From f8f3e1ea42dfa599a482973c4e2e709d23596388 Mon Sep 17 00:00:00 2001
From: mrikallab <93978883+mrikallab@users.noreply.github.com>
Date: Fri, 31 Jan 2025 13:32:48 +0100
Subject: [PATCH 6/6] N21-2058 Admin updates school licenses from VIDIS (#5451)
---
.../generated/.openapi-generator/FILES | 2 +
.../src/infra/vidis-client/generated/api.ts | 2 +
.../vidis-client/generated/api/default-api.ts | 142 ++++
.../generated/api/education-provider-api.ts | 676 ++++++++++++++++++
.../generated/api/idmbetreiber-api.ts | 176 +++++
.../mikro-orm/Migration20250121203707.ts | 37 +
.../api/api-test/school-license.api.spec.ts | 182 +++++
.../api/school-license.controller.ts | 19 +
...dia-school-license-failed.loggable.spec.ts | 23 +
...ld-media-school-license-failed.loggable.ts | 9 +
...chool-not-found.loggable-exception.spec.ts | 27 +
...-of-school-not-found.loggable-exception.ts | 18 +
.../modules/school-license/loggable/index.ts | 4 +
...ource-not-found.loggable-exception.spec.ts | 26 +
...dia-source-not-found.loggable-exception.ts | 17 +
...umber-not-found.loggable-exception.spec.ts | 26 +
...ool-number-not-found.loggable-exception.ts | 17 +
.../media-school-license-repo.interface.ts | 2 +
...ia-school-license.repo.integration.spec.ts | 34 +
.../mikro-orm/media-school-license.repo.ts | 9 +
.../school-license-api.module.ts | 12 +
.../school-license/school-license.module.ts | 14 +-
.../modules/school-license/service/index.ts | 2 +
...media-school-license-fetch.service.spec.ts | 243 +++++++
.../media-school-license-fetch.service.ts | 48 ++
.../media-school-license.service.spec.ts | 314 +++++++-
.../service/media-school-license.service.ts | 99 ++-
.../modules/school-license/testing/index.ts | 1 +
.../testing/vidis-offer.factory.ts | 12 +
.../src/modules/school-license/uc/index.ts | 1 +
.../uc/media-school-license.uc.spec.ts | 98 +++
.../uc/media-school-license.uc.ts | 22 +
.../modules/school/domain/do/federal-state.ts | 6 +-
.../src/modules/school/domain/do/school.ts | 4 +
.../src/modules/server/server.app.module.ts | 4 +-
.../domain/interface/permission.enum.ts | 1 +
backup/setup/migrations.json | 9 +
backup/setup/roles.json | 3 +-
openapitools.json | 2 +-
39 files changed, 2330 insertions(+), 13 deletions(-)
create mode 100644 apps/server/src/infra/vidis-client/generated/api/default-api.ts
create mode 100644 apps/server/src/infra/vidis-client/generated/api/education-provider-api.ts
create mode 100644 apps/server/src/migrations/mikro-orm/Migration20250121203707.ts
create mode 100644 apps/server/src/modules/school-license/api/api-test/school-license.api.spec.ts
create mode 100644 apps/server/src/modules/school-license/api/school-license.controller.ts
create mode 100644 apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.spec.ts
create mode 100644 apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.ts
create mode 100644 apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.spec.ts
create mode 100644 apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.ts
create mode 100644 apps/server/src/modules/school-license/loggable/index.ts
create mode 100644 apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.spec.ts
create mode 100644 apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.ts
create mode 100644 apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.spec.ts
create mode 100644 apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.ts
create mode 100644 apps/server/src/modules/school-license/school-license-api.module.ts
create mode 100644 apps/server/src/modules/school-license/service/index.ts
create mode 100644 apps/server/src/modules/school-license/service/media-school-license-fetch.service.spec.ts
create mode 100644 apps/server/src/modules/school-license/service/media-school-license-fetch.service.ts
create mode 100644 apps/server/src/modules/school-license/testing/vidis-offer.factory.ts
create mode 100644 apps/server/src/modules/school-license/uc/index.ts
create mode 100644 apps/server/src/modules/school-license/uc/media-school-license.uc.spec.ts
create mode 100644 apps/server/src/modules/school-license/uc/media-school-license.uc.ts
diff --git a/apps/server/src/infra/vidis-client/generated/.openapi-generator/FILES b/apps/server/src/infra/vidis-client/generated/.openapi-generator/FILES
index d1183e6e2b..3d1040f30c 100644
--- a/apps/server/src/infra/vidis-client/generated/.openapi-generator/FILES
+++ b/apps/server/src/infra/vidis-client/generated/.openapi-generator/FILES
@@ -1,6 +1,8 @@
.gitignore
.npmignore
api.ts
+api/default-api.ts
+api/education-provider-api.ts
api/idmbetreiber-api.ts
base.ts
common.ts
diff --git a/apps/server/src/infra/vidis-client/generated/api.ts b/apps/server/src/infra/vidis-client/generated/api.ts
index 72a37fe6fe..cb84e88496 100644
--- a/apps/server/src/infra/vidis-client/generated/api.ts
+++ b/apps/server/src/infra/vidis-client/generated/api.ts
@@ -14,5 +14,7 @@
+export * from './api/default-api';
+export * from './api/education-provider-api';
export * from './api/idmbetreiber-api';
diff --git a/apps/server/src/infra/vidis-client/generated/api/default-api.ts b/apps/server/src/infra/vidis-client/generated/api/default-api.ts
new file mode 100644
index 0000000000..ad8d41cb9b
--- /dev/null
+++ b/apps/server/src/infra/vidis-client/generated/api/default-api.ts
@@ -0,0 +1,142 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Vidis REST
+ * Vidis REST API
+ *
+ * The version of the OpenAPI document: v1.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from '../configuration';
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '../common';
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
+/**
+ * DefaultApi - axios parameter creator
+ * @export
+ */
+export const DefaultApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @param {string} type
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getOpenAPI: async (type: string, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'type' is not null or undefined
+ assertParamExists('getOpenAPI', 'type', type)
+ const localVarPath = `/v1.0/openapi.{type}`
+ .replace(`{${"type"}}`, encodeURIComponent(String(type)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * DefaultApi - functional programming interface
+ * @export
+ */
+export const DefaultApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = DefaultApiAxiosParamCreator(configuration)
+ return {
+ /**
+ *
+ * @param {string} type
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getOpenAPI(type: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getOpenAPI(type, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['DefaultApi.getOpenAPI']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * DefaultApi - factory interface
+ * @export
+ */
+export const DefaultApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = DefaultApiFp(configuration)
+ return {
+ /**
+ *
+ * @param {string} type
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getOpenAPI(type: string, options?: any): AxiosPromise {
+ return localVarFp.getOpenAPI(type, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * DefaultApi - interface
+ * @export
+ * @interface DefaultApi
+ */
+export interface DefaultApiInterface {
+ /**
+ *
+ * @param {string} type
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof DefaultApiInterface
+ */
+ getOpenAPI(type: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+}
+
+/**
+ * DefaultApi - object-oriented interface
+ * @export
+ * @class DefaultApi
+ * @extends {BaseAPI}
+ */
+export class DefaultApi extends BaseAPI implements DefaultApiInterface {
+ /**
+ *
+ * @param {string} type
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof DefaultApi
+ */
+ public getOpenAPI(type: string, options?: RawAxiosRequestConfig) {
+ return DefaultApiFp(this.configuration).getOpenAPI(type, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
diff --git a/apps/server/src/infra/vidis-client/generated/api/education-provider-api.ts b/apps/server/src/infra/vidis-client/generated/api/education-provider-api.ts
new file mode 100644
index 0000000000..e1d5c94cd4
--- /dev/null
+++ b/apps/server/src/infra/vidis-client/generated/api/education-provider-api.ts
@@ -0,0 +1,676 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Vidis REST
+ * Vidis REST API
+ *
+ * The version of the OpenAPI document: v1.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+import type { Configuration } from '../configuration';
+import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
+import globalAxios from 'axios';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '../common';
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base';
+// @ts-ignore
+import type { ActivationDTO } from '../models';
+// @ts-ignore
+import type { PageActivationDTO } from '../models';
+// @ts-ignore
+import type { PageOfferDTO } from '../models';
+// @ts-ignore
+import type { PageSchoolDTO } from '../models';
+/**
+ * EducationProviderApi - axios parameter creator
+ * @export
+ */
+export const EducationProviderApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ * List the activation details for a selected owned offer, that has activated by the selected school.
+ * @param {string} offerId
+ * @param {string} organizationId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivationByOfferAndSchool: async (offerId: string, organizationId: string, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'offerId' is not null or undefined
+ assertParamExists('getActivationByOfferAndSchool', 'offerId', offerId)
+ // verify required parameter 'organizationId' is not null or undefined
+ assertParamExists('getActivationByOfferAndSchool', 'organizationId', organizationId)
+ const localVarPath = `/v1.0/activation/offers/{offerId}/schools/{organizationId}/details`
+ .replace(`{${"offerId"}}`, encodeURIComponent(String(offerId)))
+ .replace(`{${"organizationId"}}`, encodeURIComponent(String(organizationId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List the activation details for a selected school, that has activated the selected owned offer.
+ * @param {string} organizationId
+ * @param {string} offerId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivationBySchoolAndOffer: async (organizationId: string, offerId: string, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'organizationId' is not null or undefined
+ assertParamExists('getActivationBySchoolAndOffer', 'organizationId', organizationId)
+ // verify required parameter 'offerId' is not null or undefined
+ assertParamExists('getActivationBySchoolAndOffer', 'offerId', offerId)
+ const localVarPath = `/v1.0/activation/schools/{organizationId}/offers/{offerId}/details`
+ .replace(`{${"organizationId"}}`, encodeURIComponent(String(organizationId)))
+ .replace(`{${"offerId"}}`, encodeURIComponent(String(offerId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List all the activation details for all owned offer.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivations: async (page?: string, pageSize?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/v1.0/activation/details`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (pageSize !== undefined) {
+ localVarQueryParameter['pageSize'] = pageSize;
+ }
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List all owned offers, that has activated by any schools.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getOffers: async (page?: string, pageSize?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/v1.0/activation/offers`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (pageSize !== undefined) {
+ localVarQueryParameter['pageSize'] = pageSize;
+ }
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List all owned offers, that has activated by the selected school.
+ * @param {string} organizationId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getOffersBySchool: async (organizationId: string, page?: string, pageSize?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'organizationId' is not null or undefined
+ assertParamExists('getOffersBySchool', 'organizationId', organizationId)
+ const localVarPath = `/v1.0/activation/schools/{organizationId}/offers`
+ .replace(`{${"organizationId"}}`, encodeURIComponent(String(organizationId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (pageSize !== undefined) {
+ localVarQueryParameter['pageSize'] = pageSize;
+ }
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List all schools, that has activated any of the owned offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getSchools: async (page?: string, pageSize?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/v1.0/activation/schools`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (pageSize !== undefined) {
+ localVarQueryParameter['pageSize'] = pageSize;
+ }
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List all schools, that has activated the selected owned offer.
+ * @param {string} offerId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getSchoolsByOffer: async (offerId: string, page?: string, pageSize?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'offerId' is not null or undefined
+ assertParamExists('getSchoolsByOffer', 'offerId', offerId)
+ const localVarPath = `/v1.0/activation/offers/{offerId}/schools`
+ .replace(`{${"offerId"}}`, encodeURIComponent(String(offerId)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (pageSize !== undefined) {
+ localVarQueryParameter['pageSize'] = pageSize;
+ }
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * EducationProviderApi - functional programming interface
+ * @export
+ */
+export const EducationProviderApiFp = function(configuration?: Configuration) {
+ const localVarAxiosParamCreator = EducationProviderApiAxiosParamCreator(configuration)
+ return {
+ /**
+ * List the activation details for a selected owned offer, that has activated by the selected school.
+ * @param {string} offerId
+ * @param {string} organizationId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getActivationByOfferAndSchool(offerId: string, organizationId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getActivationByOfferAndSchool(offerId, organizationId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EducationProviderApi.getActivationByOfferAndSchool']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * List the activation details for a selected school, that has activated the selected owned offer.
+ * @param {string} organizationId
+ * @param {string} offerId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getActivationBySchoolAndOffer(organizationId: string, offerId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getActivationBySchoolAndOffer(organizationId, offerId, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EducationProviderApi.getActivationBySchoolAndOffer']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * List all the activation details for all owned offer.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getActivations(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getActivations(page, pageSize, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EducationProviderApi.getActivations']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * List all owned offers, that has activated by any schools.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getOffers(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getOffers(page, pageSize, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EducationProviderApi.getOffers']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * List all owned offers, that has activated by the selected school.
+ * @param {string} organizationId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getOffersBySchool(organizationId: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getOffersBySchool(organizationId, page, pageSize, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EducationProviderApi.getOffersBySchool']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * List all schools, that has activated any of the owned offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getSchools(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getSchools(page, pageSize, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EducationProviderApi.getSchools']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * List all schools, that has activated the selected owned offer.
+ * @param {string} offerId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getSchoolsByOffer(offerId: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getSchoolsByOffer(offerId, page, pageSize, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['EducationProviderApi.getSchoolsByOffer']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ }
+};
+
+/**
+ * EducationProviderApi - factory interface
+ * @export
+ */
+export const EducationProviderApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ const localVarFp = EducationProviderApiFp(configuration)
+ return {
+ /**
+ * List the activation details for a selected owned offer, that has activated by the selected school.
+ * @param {string} offerId
+ * @param {string} organizationId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivationByOfferAndSchool(offerId: string, organizationId: string, options?: any): AxiosPromise {
+ return localVarFp.getActivationByOfferAndSchool(offerId, organizationId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * List the activation details for a selected school, that has activated the selected owned offer.
+ * @param {string} organizationId
+ * @param {string} offerId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivationBySchoolAndOffer(organizationId: string, offerId: string, options?: any): AxiosPromise {
+ return localVarFp.getActivationBySchoolAndOffer(organizationId, offerId, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * List all the activation details for all owned offer.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivations(page?: string, pageSize?: string, options?: any): AxiosPromise {
+ return localVarFp.getActivations(page, pageSize, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * List all owned offers, that has activated by any schools.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getOffers(page?: string, pageSize?: string, options?: any): AxiosPromise {
+ return localVarFp.getOffers(page, pageSize, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * List all owned offers, that has activated by the selected school.
+ * @param {string} organizationId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getOffersBySchool(organizationId: string, page?: string, pageSize?: string, options?: any): AxiosPromise {
+ return localVarFp.getOffersBySchool(organizationId, page, pageSize, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * List all schools, that has activated any of the owned offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getSchools(page?: string, pageSize?: string, options?: any): AxiosPromise {
+ return localVarFp.getSchools(page, pageSize, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * List all schools, that has activated the selected owned offer.
+ * @param {string} offerId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getSchoolsByOffer(offerId: string, page?: string, pageSize?: string, options?: any): AxiosPromise {
+ return localVarFp.getSchoolsByOffer(offerId, page, pageSize, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * EducationProviderApi - interface
+ * @export
+ * @interface EducationProviderApi
+ */
+export interface EducationProviderApiInterface {
+ /**
+ * List the activation details for a selected owned offer, that has activated by the selected school.
+ * @param {string} offerId
+ * @param {string} organizationId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApiInterface
+ */
+ getActivationByOfferAndSchool(offerId: string, organizationId: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ * List the activation details for a selected school, that has activated the selected owned offer.
+ * @param {string} organizationId
+ * @param {string} offerId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApiInterface
+ */
+ getActivationBySchoolAndOffer(organizationId: string, offerId: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ * List all the activation details for all owned offer.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApiInterface
+ */
+ getActivations(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ * List all owned offers, that has activated by any schools.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApiInterface
+ */
+ getOffers(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ * List all owned offers, that has activated by the selected school.
+ * @param {string} organizationId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApiInterface
+ */
+ getOffersBySchool(organizationId: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ * List all schools, that has activated any of the owned offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApiInterface
+ */
+ getSchools(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ * List all schools, that has activated the selected owned offer.
+ * @param {string} offerId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApiInterface
+ */
+ getSchoolsByOffer(offerId: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+}
+
+/**
+ * EducationProviderApi - object-oriented interface
+ * @export
+ * @class EducationProviderApi
+ * @extends {BaseAPI}
+ */
+export class EducationProviderApi extends BaseAPI implements EducationProviderApiInterface {
+ /**
+ * List the activation details for a selected owned offer, that has activated by the selected school.
+ * @param {string} offerId
+ * @param {string} organizationId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApi
+ */
+ public getActivationByOfferAndSchool(offerId: string, organizationId: string, options?: RawAxiosRequestConfig) {
+ return EducationProviderApiFp(this.configuration).getActivationByOfferAndSchool(offerId, organizationId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * List the activation details for a selected school, that has activated the selected owned offer.
+ * @param {string} organizationId
+ * @param {string} offerId
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApi
+ */
+ public getActivationBySchoolAndOffer(organizationId: string, offerId: string, options?: RawAxiosRequestConfig) {
+ return EducationProviderApiFp(this.configuration).getActivationBySchoolAndOffer(organizationId, offerId, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * List all the activation details for all owned offer.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApi
+ */
+ public getActivations(page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
+ return EducationProviderApiFp(this.configuration).getActivations(page, pageSize, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * List all owned offers, that has activated by any schools.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApi
+ */
+ public getOffers(page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
+ return EducationProviderApiFp(this.configuration).getOffers(page, pageSize, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * List all owned offers, that has activated by the selected school.
+ * @param {string} organizationId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApi
+ */
+ public getOffersBySchool(organizationId: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
+ return EducationProviderApiFp(this.configuration).getOffersBySchool(organizationId, page, pageSize, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * List all schools, that has activated any of the owned offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApi
+ */
+ public getSchools(page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
+ return EducationProviderApiFp(this.configuration).getSchools(page, pageSize, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * List all schools, that has activated the selected owned offer.
+ * @param {string} offerId
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof EducationProviderApi
+ */
+ public getSchoolsByOffer(offerId: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
+ return EducationProviderApiFp(this.configuration).getSchoolsByOffer(offerId, page, pageSize, options).then((request) => request(this.axios, this.basePath));
+ }
+}
+
diff --git a/apps/server/src/infra/vidis-client/generated/api/idmbetreiber-api.ts b/apps/server/src/infra/vidis-client/generated/api/idmbetreiber-api.ts
index 5b95bd1390..f41affcfc5 100644
--- a/apps/server/src/infra/vidis-client/generated/api/idmbetreiber-api.ts
+++ b/apps/server/src/infra/vidis-client/generated/api/idmbetreiber-api.ts
@@ -63,6 +63,88 @@ export const IDMBetreiberApiAxiosParamCreator = function (configuration?: Config
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List all offers, that has activated by the selected school.
+ * @param {string} schoolName
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivatedOffersBySchool: async (schoolName: string, page?: string, pageSize?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'schoolName' is not null or undefined
+ assertParamExists('getActivatedOffersBySchool', 'schoolName', schoolName)
+ const localVarPath = `/v1.0/offers/activated/by-school/{schoolName}`
+ .replace(`{${"schoolName"}}`, encodeURIComponent(String(schoolName)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (pageSize !== undefined) {
+ localVarQueryParameter['pageSize'] = pageSize;
+ }
+
+
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * List all offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getAllOffers: async (page?: string, pageSize?: string, options: RawAxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/v1.0/offers/all`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ if (page !== undefined) {
+ localVarQueryParameter['page'] = page;
+ }
+
+ if (pageSize !== undefined) {
+ localVarQueryParameter['pageSize'] = pageSize;
+ }
+
+
+
setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
@@ -96,6 +178,33 @@ export const IDMBetreiberApiFp = function(configuration?: Configuration) {
const localVarOperationServerBasePath = operationServerMap['IDMBetreiberApi.getActivatedOffersByRegion']?.[localVarOperationServerIndex]?.url;
return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
},
+ /**
+ * List all offers, that has activated by the selected school.
+ * @param {string} schoolName
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getActivatedOffersBySchool(schoolName: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getActivatedOffersBySchool(schoolName, page, pageSize, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['IDMBetreiberApi.getActivatedOffersBySchool']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
+ /**
+ * List all offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getAllOffers(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.getAllOffers(page, pageSize, options);
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
+ const localVarOperationServerBasePath = operationServerMap['IDMBetreiberApi.getAllOffers']?.[localVarOperationServerIndex]?.url;
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
+ },
}
};
@@ -117,6 +226,27 @@ export const IDMBetreiberApiFactory = function (configuration?: Configuration, b
getActivatedOffersByRegion(regionName: string, page?: string, pageSize?: string, options?: any): AxiosPromise {
return localVarFp.getActivatedOffersByRegion(regionName, page, pageSize, options).then((request) => request(axios, basePath));
},
+ /**
+ * List all offers, that has activated by the selected school.
+ * @param {string} schoolName
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getActivatedOffersBySchool(schoolName: string, page?: string, pageSize?: string, options?: any): AxiosPromise {
+ return localVarFp.getActivatedOffersBySchool(schoolName, page, pageSize, options).then((request) => request(axios, basePath));
+ },
+ /**
+ * List all offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getAllOffers(page?: string, pageSize?: string, options?: any): AxiosPromise {
+ return localVarFp.getAllOffers(page, pageSize, options).then((request) => request(axios, basePath));
+ },
};
};
@@ -137,6 +267,27 @@ export interface IDMBetreiberApiInterface {
*/
getActivatedOffersByRegion(regionName: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+ /**
+ * List all offers, that has activated by the selected school.
+ * @param {string} schoolName
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof IDMBetreiberApiInterface
+ */
+ getActivatedOffersBySchool(schoolName: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
+ /**
+ * List all offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof IDMBetreiberApiInterface
+ */
+ getAllOffers(page?: string, pageSize?: string, options?: RawAxiosRequestConfig): AxiosPromise;
+
}
/**
@@ -158,5 +309,30 @@ export class IDMBetreiberApi extends BaseAPI implements IDMBetreiberApiInterface
public getActivatedOffersByRegion(regionName: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
return IDMBetreiberApiFp(this.configuration).getActivatedOffersByRegion(regionName, page, pageSize, options).then((request) => request(this.axios, this.basePath));
}
+
+ /**
+ * List all offers, that has activated by the selected school.
+ * @param {string} schoolName
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof IDMBetreiberApi
+ */
+ public getActivatedOffersBySchool(schoolName: string, page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
+ return IDMBetreiberApiFp(this.configuration).getActivatedOffersBySchool(schoolName, page, pageSize, options).then((request) => request(this.axios, this.basePath));
+ }
+
+ /**
+ * List all offers.
+ * @param {string} [page]
+ * @param {string} [pageSize]
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof IDMBetreiberApi
+ */
+ public getAllOffers(page?: string, pageSize?: string, options?: RawAxiosRequestConfig) {
+ return IDMBetreiberApiFp(this.configuration).getAllOffers(page, pageSize, options).then((request) => request(this.axios, this.basePath));
+ }
}
diff --git a/apps/server/src/migrations/mikro-orm/Migration20250121203707.ts b/apps/server/src/migrations/mikro-orm/Migration20250121203707.ts
new file mode 100644
index 0000000000..ec65dfa7e2
--- /dev/null
+++ b/apps/server/src/migrations/mikro-orm/Migration20250121203707.ts
@@ -0,0 +1,37 @@
+import { Migration } from '@mikro-orm/migrations-mongodb';
+
+export class Migration20250121203707 extends Migration {
+ async up(): Promise {
+ const adminRoleUpdate = await this.getCollection('roles').updateOne(
+ { name: 'administrator' },
+ {
+ $addToSet: {
+ permissions: {
+ $each: ['MEDIA_SCHOOL_LICENSE_ADMIN'],
+ },
+ },
+ }
+ );
+
+ if (adminRoleUpdate.modifiedCount > 0) {
+ console.info('Permission MEDIA_SCHOOL_LICENSE_ADMIN added to role administrator.');
+ }
+ }
+
+ async down(): Promise {
+ const adminRoleUpdate = await this.getCollection('roles').updateOne(
+ { name: 'administrator' },
+ {
+ $pull: {
+ permissions: {
+ $in: ['MEDIA_SCHOOL_LICENSE_ADMIN'],
+ },
+ },
+ }
+ );
+
+ if (adminRoleUpdate.modifiedCount > 0) {
+ console.info('Rollback: Permission MEDIA_SCHOOL_LICENSE_ADMIN added to role administrator.');
+ }
+ }
+}
diff --git a/apps/server/src/modules/school-license/api/api-test/school-license.api.spec.ts b/apps/server/src/modules/school-license/api/api-test/school-license.api.spec.ts
new file mode 100644
index 0000000000..b948936616
--- /dev/null
+++ b/apps/server/src/modules/school-license/api/api-test/school-license.api.spec.ts
@@ -0,0 +1,182 @@
+import { vidisPageOfferFactory } from '@infra/sync/media-licenses/testing';
+import { PageOfferDTO } from '@infra/vidis-client';
+import { EntityManager } from '@mikro-orm/mongodb';
+import { HttpStatus, INestApplication } from '@nestjs/common';
+import { Test } from '@nestjs/testing';
+import { Permission } from '@shared/domain/interface';
+import { cleanupCollections } from '@testing/cleanup-collections';
+import { schoolEntityFactory } from '@testing/factory/school-entity.factory';
+
+import { UserAndAccountTestFactory } from '@testing/factory/user-and-account.test.factory';
+import { TestApiClient } from '@testing/test-api-client';
+import { ServerTestModule } from '@modules/server';
+import axios from 'axios';
+import MockAdapter from 'axios-mock-adapter';
+import { federalStateFactory } from '@testing/factory/federal-state.factory';
+import { MediaSourceDataFormat } from '@modules/media-source';
+import { mediaSourceEntityFactory } from '@modules/media-source/testing';
+
+describe('SchoolLicenseController (API)', () => {
+ let app: INestApplication;
+ let em: EntityManager;
+ let testApiClient: TestApiClient;
+ let axiosMock: MockAdapter;
+
+ beforeAll(async () => {
+ const moduleFixture = await Test.createTestingModule({
+ imports: [ServerTestModule],
+ }).compile();
+
+ app = moduleFixture.createNestApplication();
+ await app.init();
+ em = app.get(EntityManager);
+
+ axiosMock = new MockAdapter(axios);
+
+ testApiClient = new TestApiClient(app, 'school-licenses');
+ });
+
+ beforeEach(async () => {
+ await cleanupCollections(em);
+ });
+
+ afterAll(async () => {
+ await app.close();
+ });
+
+ describe('POST /school-licenses', () => {
+ describe('when the user is not authenticated', () => {
+ it('should return a 401 error', async () => {
+ const response = await testApiClient.post();
+
+ expect(response.status).toBe(HttpStatus.UNAUTHORIZED);
+ });
+ });
+
+ describe('when update media school licenses was successful', () => {
+ const setup = async () => {
+ const federalState = federalStateFactory.build();
+ const school = schoolEntityFactory.buildWithId({
+ officialSchoolNumber: '00100',
+ federalState,
+ });
+ const mediaSource = mediaSourceEntityFactory.build({ format: MediaSourceDataFormat.VIDIS });
+
+ const { adminUser, adminAccount } = UserAndAccountTestFactory.buildAdmin({ school }, [
+ Permission.MEDIA_SCHOOL_LICENSE_ADMIN,
+ ]);
+ await em.persistAndFlush([adminUser, adminAccount, federalState, school, mediaSource]);
+ em.clear();
+
+ const loggedInClient = await testApiClient.login(adminAccount);
+
+ const pageOfferDTO = vidisPageOfferFactory.build();
+
+ axiosMock.onGet(/\/offers\/activated\/by-school\/[^/]+$/).replyOnce(200, {
+ ...pageOfferDTO,
+ });
+
+ return { loggedInClient };
+ };
+
+ it('should return status created', async () => {
+ const { loggedInClient } = await setup();
+
+ await loggedInClient.post('').send().expect(HttpStatus.CREATED);
+ });
+ });
+
+ describe('when official school number was not found', () => {
+ const setup = async () => {
+ const school = schoolEntityFactory.buildWithId({});
+ const mediaSource = mediaSourceEntityFactory.build({ format: MediaSourceDataFormat.VIDIS });
+
+ const { adminUser, adminAccount } = UserAndAccountTestFactory.buildAdmin({ school }, [
+ Permission.MEDIA_SCHOOL_LICENSE_ADMIN,
+ ]);
+
+ await em.persistAndFlush([adminUser, adminAccount, school, mediaSource]);
+ em.clear();
+
+ const loggedInClient = await testApiClient.login(adminAccount);
+
+ const pageOfferDTO = vidisPageOfferFactory.build();
+
+ axiosMock.onGet(/\/offers\/activated\/by-school\/[^/]+$/).replyOnce(200, {
+ ...pageOfferDTO,
+ });
+
+ return { loggedInClient };
+ };
+
+ it('should return status not found', async () => {
+ const { loggedInClient } = await setup();
+
+ const response = await loggedInClient.post('').send();
+
+ expect(response.status).toBe(HttpStatus.NOT_FOUND);
+ });
+ });
+
+ describe('when media source not found', () => {
+ const setup = async () => {
+ const school = schoolEntityFactory.buildWithId({
+ officialSchoolNumber: '00100',
+ });
+
+ const { adminUser, adminAccount } = UserAndAccountTestFactory.buildAdmin({ school }, [
+ Permission.MEDIA_SCHOOL_LICENSE_ADMIN,
+ ]);
+ await em.persistAndFlush([adminUser, adminAccount, school]);
+ em.clear();
+
+ const loggedInClient = await testApiClient.login(adminAccount);
+
+ const pageOfferDTO = vidisPageOfferFactory.build();
+
+ axiosMock.onGet(/\/offers\/activated\/by-school\/[^/]+$/).replyOnce(200, {
+ ...pageOfferDTO,
+ });
+
+ return { loggedInClient };
+ };
+
+ it('should return status not found', async () => {
+ const { loggedInClient } = await setup();
+
+ const response = await loggedInClient.post('').send();
+
+ expect(response.status).toBe(HttpStatus.NOT_FOUND);
+ });
+ });
+
+ describe('when user has no permission', () => {
+ const setup = async () => {
+ const school = schoolEntityFactory.buildWithId({ officialSchoolNumber: '00100' });
+ const mediaSource = mediaSourceEntityFactory.build({ format: MediaSourceDataFormat.VIDIS });
+
+ const { adminUser, adminAccount } = UserAndAccountTestFactory.buildAdmin({ school });
+ await em.persistAndFlush([adminUser, adminAccount, school, mediaSource]);
+ em.clear();
+
+ const loggedInClient = await testApiClient.login(adminAccount);
+
+ const pageOfferDTO = vidisPageOfferFactory.build();
+
+ axiosMock.onGet(/\/offers\/activated\/by-school\/[^/]+$/).replyOnce(200, {
+ ...pageOfferDTO,
+ });
+
+ return { loggedInClient };
+ };
+
+ it('should return status unauthorized', async () => {
+ const { loggedInClient } = await setup();
+
+ const response = await loggedInClient.post('').send();
+
+ expect(response.status).toBe(HttpStatus.UNAUTHORIZED);
+ });
+ });
+ });
+});
diff --git a/apps/server/src/modules/school-license/api/school-license.controller.ts b/apps/server/src/modules/school-license/api/school-license.controller.ts
new file mode 100644
index 0000000000..b8ce885530
--- /dev/null
+++ b/apps/server/src/modules/school-license/api/school-license.controller.ts
@@ -0,0 +1,19 @@
+import { CurrentUser, ICurrentUser, JwtAuthentication } from '@infra/auth-guard';
+import { Controller, Post } from '@nestjs/common';
+import { ApiCreatedResponse, ApiOperation, ApiTags, ApiUnauthorizedResponse } from '@nestjs/swagger';
+import { MediaSchoolLicenseUc } from '../uc';
+
+@ApiTags('School License')
+@JwtAuthentication()
+@Controller('school-licenses')
+export class SchoolLicenseController {
+ constructor(private readonly mediaSchoolLicenseUc: MediaSchoolLicenseUc) {}
+
+ @ApiOperation({ summary: 'Update media school licenses' })
+ @ApiCreatedResponse()
+ @ApiUnauthorizedResponse()
+ @Post()
+ async updateMediaSchoolLicenses(@CurrentUser() currentUser: ICurrentUser): Promise {
+ await this.mediaSchoolLicenseUc.updateMediaSchoolLicenses(currentUser.userId, currentUser.schoolId);
+ }
+}
diff --git a/apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.spec.ts b/apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.spec.ts
new file mode 100644
index 0000000000..1d51ce1c0d
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.spec.ts
@@ -0,0 +1,23 @@
+import { BuildMediaSchoolLicenseFailedLoggable } from './build-media-school-license-failed.loggable';
+
+describe(BuildMediaSchoolLicenseFailedLoggable.name, () => {
+ describe('getLogMessage', () => {
+ const setup = () => {
+ const loggable = new BuildMediaSchoolLicenseFailedLoggable();
+
+ return {
+ loggable,
+ };
+ };
+
+ it('should return the correct log message', () => {
+ const { loggable } = setup();
+
+ const logMessage = loggable.getLogMessage();
+
+ expect(logMessage).toEqual({
+ message: 'Unable to build media school license, because mediumId is missing.',
+ });
+ });
+ });
+});
diff --git a/apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.ts b/apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.ts
new file mode 100644
index 0000000000..2efd391a6c
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/build-media-school-license-failed.loggable.ts
@@ -0,0 +1,9 @@
+import { ErrorLogMessage, Loggable, LogMessage, ValidationErrorLogMessage } from '@core/logger';
+
+export class BuildMediaSchoolLicenseFailedLoggable implements Loggable {
+ getLogMessage(): LogMessage | ErrorLogMessage | ValidationErrorLogMessage {
+ return {
+ message: 'Unable to build media school license, because mediumId is missing.',
+ };
+ }
+}
diff --git a/apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.spec.ts b/apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.spec.ts
new file mode 100644
index 0000000000..e28b6cbd71
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.spec.ts
@@ -0,0 +1,27 @@
+import { FederalStateAbbreviationOfSchoolNotFoundLoggableException } from './federal-state-abbreviation-of-school-not-found.loggable-exception';
+
+describe(FederalStateAbbreviationOfSchoolNotFoundLoggableException.name, () => {
+ describe('getLogMessage', () => {
+ const setup = () => {
+ const exception = new FederalStateAbbreviationOfSchoolNotFoundLoggableException('testSchoolId');
+
+ return {
+ exception,
+ };
+ };
+
+ it('should return the correct log message', () => {
+ const { exception } = setup();
+
+ const logMessage = exception.getLogMessage();
+
+ expect(logMessage).toEqual({
+ message:
+ 'Unable to fetch media school licenses from media source, because federal state abbreviation of school cannot be found.',
+ data: {
+ schoolId: 'testSchoolId',
+ },
+ });
+ });
+ });
+});
diff --git a/apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.ts b/apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.ts
new file mode 100644
index 0000000000..77c3b01665
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/federal-state-abbreviation-of-school-not-found.loggable-exception.ts
@@ -0,0 +1,18 @@
+import { NotFoundException } from '@nestjs/common';
+import { ErrorLogMessage, LogMessage, ValidationErrorLogMessage } from '@core/logger';
+
+export class FederalStateAbbreviationOfSchoolNotFoundLoggableException extends NotFoundException {
+ constructor(private readonly schoolId: string) {
+ super();
+ }
+
+ public getLogMessage(): LogMessage | ErrorLogMessage | ValidationErrorLogMessage {
+ return {
+ message:
+ 'Unable to fetch media school licenses from media source, because federal state abbreviation of school cannot be found.',
+ data: {
+ schoolId: this.schoolId,
+ },
+ };
+ }
+}
diff --git a/apps/server/src/modules/school-license/loggable/index.ts b/apps/server/src/modules/school-license/loggable/index.ts
new file mode 100644
index 0000000000..a0fc6918d3
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/index.ts
@@ -0,0 +1,4 @@
+export { BuildMediaSchoolLicenseFailedLoggable } from './build-media-school-license-failed.loggable';
+export { SchoolNumberNotFoundLoggableException } from './school-number-not-found.loggable-exception';
+export { MediaSourceNotFoundLoggableException } from './media-source-not-found.loggable-exception';
+export { FederalStateAbbreviationOfSchoolNotFoundLoggableException } from './federal-state-abbreviation-of-school-not-found.loggable-exception';
diff --git a/apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.spec.ts b/apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.spec.ts
new file mode 100644
index 0000000000..8d406a97a1
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.spec.ts
@@ -0,0 +1,26 @@
+import { MediaSourceNotFoundLoggableException } from './media-source-not-found.loggable-exception';
+
+describe(MediaSourceNotFoundLoggableException.name, () => {
+ const setup = () => {
+ const mediaSourceName = 'TestMediaSource';
+ const exception = new MediaSourceNotFoundLoggableException(mediaSourceName);
+
+ return {
+ exception,
+ mediaSourceName,
+ };
+ };
+
+ it('should return the correct log message', () => {
+ const { exception, mediaSourceName } = setup();
+
+ const logMessage = exception.getLogMessage();
+
+ expect(logMessage).toEqual({
+ message: 'Unable to fetch media school licenses, because media source cannot be found.',
+ data: {
+ mediaSourceName,
+ },
+ });
+ });
+});
diff --git a/apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.ts b/apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.ts
new file mode 100644
index 0000000000..b6b0e439cf
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/media-source-not-found.loggable-exception.ts
@@ -0,0 +1,17 @@
+import { NotFoundException } from '@nestjs/common';
+import { ErrorLogMessage, Loggable, LogMessage, ValidationErrorLogMessage } from '@core/logger';
+
+export class MediaSourceNotFoundLoggableException extends NotFoundException implements Loggable {
+ constructor(private readonly mediaSourceName: string) {
+ super();
+ }
+
+ getLogMessage(): LogMessage | ErrorLogMessage | ValidationErrorLogMessage {
+ return {
+ message: 'Unable to fetch media school licenses, because media source cannot be found.',
+ data: {
+ mediaSourceName: this.mediaSourceName,
+ },
+ };
+ }
+}
diff --git a/apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.spec.ts b/apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.spec.ts
new file mode 100644
index 0000000000..7895837b82
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.spec.ts
@@ -0,0 +1,26 @@
+import { SchoolNumberNotFoundLoggableException } from './school-number-not-found.loggable-exception';
+
+describe(SchoolNumberNotFoundLoggableException.name, () => {
+ const setup = () => {
+ const schoolId = 'testSchoolId';
+ const exception = new SchoolNumberNotFoundLoggableException(schoolId);
+
+ return {
+ exception,
+ schoolId,
+ };
+ };
+
+ it('should return the correct log message', () => {
+ const { exception, schoolId } = setup();
+
+ const logMessage = exception.getLogMessage();
+
+ expect(logMessage).toEqual({
+ message: 'Required school number for media school licenses request is missing.',
+ data: {
+ schoolId,
+ },
+ });
+ });
+});
diff --git a/apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.ts b/apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.ts
new file mode 100644
index 0000000000..c70b71f6e7
--- /dev/null
+++ b/apps/server/src/modules/school-license/loggable/school-number-not-found.loggable-exception.ts
@@ -0,0 +1,17 @@
+import { NotFoundException } from '@nestjs/common';
+import { ErrorLogMessage, LogMessage, ValidationErrorLogMessage } from '@core/logger';
+
+export class SchoolNumberNotFoundLoggableException extends NotFoundException {
+ constructor(private readonly schoolId: string) {
+ super();
+ }
+
+ public getLogMessage(): LogMessage | ErrorLogMessage | ValidationErrorLogMessage {
+ return {
+ message: 'Required school number for media school licenses request is missing.',
+ data: {
+ schoolId: this.schoolId,
+ },
+ };
+ }
+}
diff --git a/apps/server/src/modules/school-license/repo/media-school-license-repo.interface.ts b/apps/server/src/modules/school-license/repo/media-school-license-repo.interface.ts
index 98b43ef0f3..99abd920de 100644
--- a/apps/server/src/modules/school-license/repo/media-school-license-repo.interface.ts
+++ b/apps/server/src/modules/school-license/repo/media-school-license-repo.interface.ts
@@ -7,6 +7,8 @@ export interface MediaSchoolLicenseRepo {
deleteAllByMediaSource(mediaSourceId: EntityId): Promise;
findMediaSchoolLicensesBySchoolId(schoolId: string): Promise;
+
+ deleteAllBySchoolAndMediaSource(schoolId: EntityId, mediaSourceId: EntityId): Promise;
}
export const MEDIA_SCHOOL_LICENSE_REPO = 'MEDIA_SCHOOL_LICENSE_REPO';
diff --git a/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.integration.spec.ts b/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.integration.spec.ts
index 87a912ecd4..798288d2f4 100644
--- a/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.integration.spec.ts
+++ b/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.integration.spec.ts
@@ -141,4 +141,38 @@ describe(MediaSchoolLicenseMikroOrmRepo.name, () => {
});
});
});
+
+ describe('deleteAllBySchoolAndMediaSource', () => {
+ describe('when a school id and media source id is provided', () => {
+ const setup = async () => {
+ const school = schoolEntityFactory.buildWithId();
+ const mediaSource = mediaSourceEntityFactory.build();
+ const mediaSchoolLicenseEntities: MediaSchoolLicenseEntity[] = mediaSchoolLicenseEntityFactory.buildList(3, {
+ mediaSource,
+ school,
+ });
+
+ const otherMediaSource = mediaSourceEntityFactory.build();
+ const otherEntity = mediaSchoolLicenseEntityFactory.build({
+ mediaSource: otherMediaSource,
+ school,
+ });
+
+ await em.persistAndFlush([...mediaSchoolLicenseEntities, otherEntity, school]);
+ em.clear();
+
+ return { mediaSource, otherEntity, school };
+ };
+
+ it('should delete the media school license', async () => {
+ const { mediaSource, otherEntity, school } = await setup();
+
+ await repo.deleteAllBySchoolAndMediaSource(school.id, mediaSource.id);
+
+ const savedMediaSchoolLicenses: MediaSchoolLicenseEntity[] = await em.find(MediaSchoolLicenseEntity, {});
+ expect(savedMediaSchoolLicenses.length).toEqual(1);
+ expect(savedMediaSchoolLicenses[0]._id.toHexString()).toEqual(otherEntity._id.toHexString());
+ });
+ });
+ });
});
diff --git a/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.ts b/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.ts
index 81b1be94ef..3031ed65bc 100644
--- a/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.ts
+++ b/apps/server/src/modules/school-license/repo/mikro-orm/media-school-license.repo.ts
@@ -38,6 +38,15 @@ export class MediaSchoolLicenseMikroOrmRepo
return deleteCount;
}
+ public async deleteAllBySchoolAndMediaSource(schoolId: EntityId, mediaSourceId: EntityId): Promise {
+ const deleteCount = await this.em.nativeDelete(this.entityName, {
+ school: new ObjectId(schoolId),
+ mediaSource: new ObjectId(mediaSourceId),
+ });
+
+ return deleteCount;
+ }
+
public async findMediaSchoolLicensesBySchoolId(schoolId: EntityId): Promise {
const scope: MediaSchoolLicenseScope = new MediaSchoolLicenseScope();
scope.bySchoolId(schoolId);
diff --git a/apps/server/src/modules/school-license/school-license-api.module.ts b/apps/server/src/modules/school-license/school-license-api.module.ts
new file mode 100644
index 0000000000..f42cbf51d7
--- /dev/null
+++ b/apps/server/src/modules/school-license/school-license-api.module.ts
@@ -0,0 +1,12 @@
+import { AuthorizationModule } from '@modules/authorization';
+import { Module } from '@nestjs/common';
+import { SchoolLicenseController } from './api/school-license.controller';
+import { SchoolLicenseModule } from './school-license.module';
+import { MediaSchoolLicenseUc } from './uc';
+
+@Module({
+ imports: [SchoolLicenseModule, AuthorizationModule],
+ controllers: [SchoolLicenseController],
+ providers: [MediaSchoolLicenseUc],
+})
+export class SchoolLicenseApiModule {}
diff --git a/apps/server/src/modules/school-license/school-license.module.ts b/apps/server/src/modules/school-license/school-license.module.ts
index 2461c9a5ea..cc1dfb53e9 100644
--- a/apps/server/src/modules/school-license/school-license.module.ts
+++ b/apps/server/src/modules/school-license/school-license.module.ts
@@ -1,16 +1,18 @@
-import { Module } from '@nestjs/common';
import { LoggerModule } from '@core/logger';
-import { MediaSourceModule } from '../media-source/media-source.module';
-import { SchoolModule } from '../school';
+import { EncryptionModule } from '@infra/encryption';
+import { MediaSourceModule } from '@modules/media-source/media-source.module';
+import { SchoolModule } from '@modules/school';
+import { Module } from '@nestjs/common';
import { MEDIA_SCHOOL_LICENSE_REPO } from './repo';
import { MediaSchoolLicenseMikroOrmRepo } from './repo/mikro-orm/media-school-license.repo';
-import { MediaSchoolLicenseService } from './service/media-school-license.service';
+import { MediaSchoolLicenseFetchService, MediaSchoolLicenseService } from './service';
@Module({
- imports: [MediaSourceModule, SchoolModule, LoggerModule],
+ imports: [MediaSourceModule, SchoolModule, LoggerModule, EncryptionModule],
providers: [
- MediaSchoolLicenseService,
{ provide: MEDIA_SCHOOL_LICENSE_REPO, useClass: MediaSchoolLicenseMikroOrmRepo },
+ MediaSchoolLicenseService,
+ MediaSchoolLicenseFetchService,
],
exports: [MediaSchoolLicenseService],
})
diff --git a/apps/server/src/modules/school-license/service/index.ts b/apps/server/src/modules/school-license/service/index.ts
new file mode 100644
index 0000000000..67287a15af
--- /dev/null
+++ b/apps/server/src/modules/school-license/service/index.ts
@@ -0,0 +1,2 @@
+export { MediaSchoolLicenseService } from './media-school-license.service';
+export { MediaSchoolLicenseFetchService } from './media-school-license-fetch.service';
diff --git a/apps/server/src/modules/school-license/service/media-school-license-fetch.service.spec.ts b/apps/server/src/modules/school-license/service/media-school-license-fetch.service.spec.ts
new file mode 100644
index 0000000000..2081040caf
--- /dev/null
+++ b/apps/server/src/modules/school-license/service/media-school-license-fetch.service.spec.ts
@@ -0,0 +1,243 @@
+import { AxiosErrorLoggable } from '@core/error/loggable';
+import { createMock, DeepMocked } from '@golevelup/ts-jest';
+import { DefaultEncryptionService, EncryptionService, SymmetricKeyEncryptionService } from '@infra/encryption';
+import { vidisPageOfferFactory } from '@infra/sync/media-licenses/testing';
+import { Configuration, IDMBetreiberApiFactory, IDMBetreiberApiInterface, PageOfferDTO } from '@infra/vidis-client';
+import { MediaSourceDataFormat } from '@modules/media-source';
+import { mediaSourceFactory } from '@modules/media-source/testing';
+import { Test, TestingModule } from '@nestjs/testing';
+import { axiosErrorFactory } from '@testing/factory/axios-error.factory';
+import { axiosResponseFactory } from '@testing/factory/axios-response.factory';
+import { AxiosResponse, RawAxiosRequestConfig } from 'axios';
+import { MediaSourceVidisConfigNotFoundLoggableException } from '../../media-source/loggable';
+import { MediaSchoolLicenseFetchService } from './media-school-license-fetch.service';
+
+jest.mock('@infra/vidis-client/generated/api');
+
+describe(MediaSchoolLicenseFetchService.name, () => {
+ let module: TestingModule;
+ let service: MediaSchoolLicenseFetchService;
+
+ let encryptionService: DeepMocked;
+
+ let vidisApi: DeepMocked;
+ let apiFactoryMock: jest.Mocked;
+
+ beforeAll(async () => {
+ module = await Test.createTestingModule({
+ providers: [
+ MediaSchoolLicenseFetchService,
+ {
+ provide: DefaultEncryptionService,
+ useValue: createMock(),
+ },
+ ],
+ }).compile();
+
+ service = module.get(MediaSchoolLicenseFetchService);
+ encryptionService = module.get(DefaultEncryptionService);
+
+ vidisApi = createMock();
+ apiFactoryMock = jest.mocked(IDMBetreiberApiFactory).mockReturnValue(vidisApi);
+ });
+
+ afterAll(async () => {
+ await module.close();
+ });
+
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ describe('fetchOffersForSchoolFromVidis', () => {
+ describe('when the media source has basic auth config', () => {
+ describe('when vidis returns the offer items successfully', () => {
+ const setup = () => {
+ const mediaSource = mediaSourceFactory.withVidis().build();
+
+ const axiosResponse = axiosResponseFactory.build({
+ data: vidisPageOfferFactory.build(),
+ }) as AxiosResponse;
+
+ vidisApi.getActivatedOffersBySchool.mockResolvedValueOnce(axiosResponse);
+
+ const decryptedUsername = 'un-decrypted';
+ const decryptedPassword = 'pw-decrypted';
+ encryptionService.decrypt.mockReturnValueOnce(decryptedUsername);
+ encryptionService.decrypt.mockReturnValueOnce(decryptedPassword);
+
+ const schoolName = 'NI_12345';
+
+ return {
+ mediaSource,
+ vidisOfferItems: axiosResponse.data.items,
+ decryptedUsername,
+ decryptedPassword,
+ schoolName,
+ };
+ };
+
+ it('should return the vidis offer items', async () => {
+ const { mediaSource, vidisOfferItems, schoolName } = setup();
+
+ const result = await service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ expect(result).toEqual(vidisOfferItems);
+ });
+
+ it('should decrypt the credentials from basic auth config', async () => {
+ const { mediaSource, schoolName } = setup();
+
+ await service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ expect(encryptionService.decrypt).toBeCalledTimes(2);
+ expect(encryptionService.decrypt).toBeCalledWith(mediaSource.vidisConfig?.username);
+ expect(encryptionService.decrypt).toBeCalledWith(mediaSource.vidisConfig?.password);
+ });
+
+ it('should create a vidis api client', async () => {
+ const { mediaSource, schoolName } = setup();
+
+ await service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ expect(apiFactoryMock).toHaveBeenCalledWith(
+ new Configuration({
+ basePath: mediaSource.vidisConfig?.baseUrl,
+ })
+ );
+ });
+
+ it('should call the vidis endpoint for activated offer items with basic auth', async () => {
+ const { mediaSource, decryptedUsername, decryptedPassword, schoolName } = setup();
+
+ await service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ const encodedBasicAuth = btoa(`${decryptedUsername}:${decryptedPassword}`);
+ const expectedAxiosOptions: RawAxiosRequestConfig = {
+ headers: { Authorization: expect.stringMatching(`Basic ${encodedBasicAuth}`) as string },
+ };
+
+ expect(vidisApi.getActivatedOffersBySchool).toBeCalledWith(
+ 'NI_12345',
+ undefined,
+ undefined,
+ expectedAxiosOptions
+ );
+ });
+ });
+
+ describe('when vidis returns the no offer items', () => {
+ const setup = () => {
+ const mediaSource = mediaSourceFactory.withVidis().build();
+
+ const axiosResponse = axiosResponseFactory.build({
+ data: vidisPageOfferFactory.build({ items: undefined }),
+ }) as AxiosResponse;
+
+ vidisApi.getActivatedOffersBySchool.mockResolvedValueOnce(axiosResponse);
+
+ encryptionService.decrypt.mockReturnValueOnce('un-decrypted');
+ encryptionService.decrypt.mockReturnValueOnce('pw-decrypted');
+
+ const schoolName = 'NI_12345';
+
+ return {
+ mediaSource,
+ schoolName,
+ };
+ };
+
+ it('should return an empty array', async () => {
+ const { mediaSource, schoolName } = setup();
+
+ const result = await service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ expect(result.length).toEqual(0);
+ });
+ });
+
+ describe('when an axios error is thrown', () => {
+ const setup = () => {
+ const mediaSource = mediaSourceFactory.withVidis().build();
+
+ const axiosError = axiosErrorFactory.build();
+
+ vidisApi.getActivatedOffersBySchool.mockRejectedValueOnce(axiosError);
+
+ encryptionService.decrypt.mockReturnValueOnce('un-decrypted');
+ encryptionService.decrypt.mockReturnValueOnce('pw-decrypted');
+
+ const schoolName = 'NI_12345';
+
+ return {
+ mediaSource,
+ axiosError,
+ schoolName,
+ };
+ };
+
+ it('should throw a AxiosErrorLoggable', async () => {
+ const { mediaSource, axiosError, schoolName } = setup();
+
+ const promise = service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ await expect(promise).rejects.toThrow(
+ new AxiosErrorLoggable(axiosError, 'VIDIS_GET_OFFER_ITEMS_FOR_SCHOOL_FAILED')
+ );
+ });
+ });
+
+ describe('when an unknown error is thrown', () => {
+ const setup = () => {
+ const mediaSource = mediaSourceFactory.withVidis().build();
+
+ const unknownError = new Error();
+
+ vidisApi.getActivatedOffersBySchool.mockRejectedValueOnce(unknownError);
+
+ encryptionService.decrypt.mockReturnValueOnce('un-decrypted');
+ encryptionService.decrypt.mockReturnValueOnce('pw-decrypted');
+
+ const schoolName = 'NI_12345';
+
+ return {
+ mediaSource,
+ unknownError,
+ schoolName,
+ };
+ };
+
+ it('should throw the unknown error', async () => {
+ const { mediaSource, unknownError, schoolName } = setup();
+
+ const promise = service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ await expect(promise).rejects.toThrow(unknownError);
+ });
+ });
+ });
+
+ describe('when the media source has no basic auth config ', () => {
+ const setup = () => {
+ const mediaSource = mediaSourceFactory.build({ format: MediaSourceDataFormat.VIDIS, vidisConfig: undefined });
+
+ const schoolName = 'NI_12345';
+
+ return {
+ mediaSource,
+ schoolName,
+ };
+ };
+
+ it('should throw an MediaSourceBasicAuthConfigNotFoundLoggableException', async () => {
+ const { mediaSource, schoolName } = setup();
+
+ const promise = service.fetchOffersForSchoolFromVidis(mediaSource, schoolName);
+
+ await expect(promise).rejects.toThrow(
+ new MediaSourceVidisConfigNotFoundLoggableException(mediaSource.id, MediaSourceDataFormat.VIDIS)
+ );
+ });
+ });
+ });
+});
diff --git a/apps/server/src/modules/school-license/service/media-school-license-fetch.service.ts b/apps/server/src/modules/school-license/service/media-school-license-fetch.service.ts
new file mode 100644
index 0000000000..a1ccdc47e7
--- /dev/null
+++ b/apps/server/src/modules/school-license/service/media-school-license-fetch.service.ts
@@ -0,0 +1,48 @@
+import { AxiosErrorLoggable } from '@core/error/loggable';
+import { DefaultEncryptionService, EncryptionService } from '@infra/encryption';
+import { Configuration, IDMBetreiberApiFactory, OfferDTO, PageOfferDTO } from '@infra/vidis-client';
+import { MediaSource, MediaSourceDataFormat } from '@modules/media-source';
+import { MediaSourceVidisConfigNotFoundLoggableException } from '@modules/media-source/loggable';
+import { Inject } from '@nestjs/common';
+import { AxiosResponse, isAxiosError } from 'axios';
+
+export class MediaSchoolLicenseFetchService {
+ constructor(@Inject(DefaultEncryptionService) private readonly encryptionService: EncryptionService) {}
+
+ public async fetchOffersForSchoolFromVidis(mediaSource: MediaSource, schoolName: string): Promise {
+ if (!mediaSource.vidisConfig) {
+ throw new MediaSourceVidisConfigNotFoundLoggableException(mediaSource.id, MediaSourceDataFormat.VIDIS);
+ }
+
+ const { vidisConfig } = mediaSource;
+ const api = IDMBetreiberApiFactory(
+ new Configuration({
+ basePath: vidisConfig.baseUrl,
+ })
+ );
+
+ const decryptedUsername = this.encryptionService.decrypt(vidisConfig.username);
+ const decryptedPassword = this.encryptionService.decrypt(vidisConfig.password);
+ const basicAuthEncoded = btoa(`${decryptedUsername}:${decryptedPassword}`);
+
+ try {
+ const axiosResponse: AxiosResponse = await api.getActivatedOffersBySchool(
+ schoolName,
+ undefined,
+ undefined,
+ {
+ headers: { Authorization: `Basic ${basicAuthEncoded}` },
+ }
+ );
+ const offerItems: OfferDTO[] = axiosResponse.data.items ?? [];
+
+ return offerItems;
+ } catch (error: unknown) {
+ if (isAxiosError(error)) {
+ throw new AxiosErrorLoggable(error, 'VIDIS_GET_OFFER_ITEMS_FOR_SCHOOL_FAILED');
+ } else {
+ throw error;
+ }
+ }
+ }
+}
diff --git a/apps/server/src/modules/school-license/service/media-school-license.service.spec.ts b/apps/server/src/modules/school-license/service/media-school-license.service.spec.ts
index 8d3670120c..c5adf5990c 100644
--- a/apps/server/src/modules/school-license/service/media-school-license.service.spec.ts
+++ b/apps/server/src/modules/school-license/service/media-school-license.service.spec.ts
@@ -1,17 +1,34 @@
+import { Logger } from '@core/logger';
import { createMock, DeepMocked } from '@golevelup/ts-jest';
import { ObjectId } from '@mikro-orm/mongodb';
+import { MediaSourceDataFormat, MediaSourceService } from '@modules/media-source';
import { mediaSourceFactory } from '@modules/media-source/testing';
+import { SchoolService } from '@modules/school';
+import { FederalStateEntityMapper } from '@modules/school/repo/mikro-orm/mapper';
+import { schoolFactory } from '@modules/school/testing';
import { ExternalToolMedium } from '@modules/tool/external-tool/domain';
import { Test, TestingModule } from '@nestjs/testing';
+import { federalStateFactory } from '@testing/factory/federal-state.factory';
import { MediaSchoolLicense } from '../domain';
+import { SchoolLicenseType } from '../enum';
+import {
+ BuildMediaSchoolLicenseFailedLoggable,
+ FederalStateAbbreviationOfSchoolNotFoundLoggableException,
+ SchoolNumberNotFoundLoggableException,
+} from '../loggable';
import { MEDIA_SCHOOL_LICENSE_REPO, MediaSchoolLicenseRepo } from '../repo';
-import { mediaSchoolLicenseFactory } from '../testing';
+import { mediaSchoolLicenseFactory, vidisOfferFactory } from '../testing';
+import { MediaSchoolLicenseFetchService } from './media-school-license-fetch.service';
import { MediaSchoolLicenseService } from './media-school-license.service';
describe(MediaSchoolLicenseService.name, () => {
let module: TestingModule;
let mediaSchoolLicenseService: MediaSchoolLicenseService;
let mediaSchoolLicenseRepo: DeepMocked;
+ let schoolService: DeepMocked;
+ let logger: DeepMocked;
+ let mediaSourceService: DeepMocked;
+ let mediaSchoolLicenseFetchService: DeepMocked;
beforeAll(async () => {
module = await Test.createTestingModule({
@@ -21,11 +38,31 @@ describe(MediaSchoolLicenseService.name, () => {
provide: MEDIA_SCHOOL_LICENSE_REPO,
useValue: createMock(),
},
+ {
+ provide: SchoolService,
+ useValue: createMock(),
+ },
+ {
+ provide: Logger,
+ useValue: createMock(),
+ },
+ {
+ provide: MediaSourceService,
+ useValue: createMock(),
+ },
+ {
+ provide: MediaSchoolLicenseFetchService,
+ useValue: createMock(),
+ },
],
}).compile();
mediaSchoolLicenseService = module.get(MediaSchoolLicenseService);
mediaSchoolLicenseRepo = module.get(MEDIA_SCHOOL_LICENSE_REPO);
+ schoolService = module.get(SchoolService);
+ logger = module.get(Logger);
+ mediaSourceService = module.get(MediaSourceService);
+ mediaSchoolLicenseFetchService = module.get(MediaSchoolLicenseFetchService);
});
afterAll(async () => {
@@ -238,4 +275,279 @@ describe(MediaSchoolLicenseService.name, () => {
});
});
});
+
+ describe('deleteAllBySchoolAndMediaSource', () => {
+ describe('when school id and media source id is given', () => {
+ const setup = () => {
+ const mediaSource = mediaSourceFactory.build();
+ const school = schoolFactory.build();
+
+ return {
+ mediaSource,
+ school,
+ };
+ };
+
+ it('should delete the media school license by media source', async () => {
+ const { mediaSource, school } = setup();
+
+ await mediaSchoolLicenseService.deleteAllBySchoolAndMediaSource(school.id, mediaSource.id);
+
+ expect(mediaSchoolLicenseRepo.deleteAllBySchoolAndMediaSource).toBeCalledWith(school.id, mediaSource.id);
+ });
+ });
+ });
+
+ describe('updateMediaSchoolLicenses', () => {
+ describe('when school id is given', () => {
+ const setup = () => {
+ const federalStateEntity = federalStateFactory.build();
+ const federalState = FederalStateEntityMapper.mapToDo(federalStateEntity);
+ const schoolId = new ObjectId().toHexString();
+ const school = schoolFactory.build({ id: schoolId, federalState, officialSchoolNumber: '00100' });
+ const mediaSource = mediaSourceFactory.build();
+ const offersFromMediaSource = vidisOfferFactory.buildList(3);
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+ mediaSourceService.findByFormat.mockResolvedValue(mediaSource);
+ mediaSchoolLicenseFetchService.fetchOffersForSchoolFromVidis.mockResolvedValue(offersFromMediaSource);
+ mediaSchoolLicenseRepo.deleteAllBySchoolAndMediaSource.mockImplementation();
+ mediaSchoolLicenseRepo.saveAll.mockImplementation();
+
+ return {
+ school,
+ mediaSource,
+ offersFromMediaSource,
+ };
+ };
+
+ it('should call school service', async () => {
+ const { school } = setup();
+
+ await mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id);
+
+ expect(schoolService.getSchoolById).toBeCalledWith(school.id);
+ });
+ });
+
+ describe('when school without federal state was found', () => {
+ const setup = () => {
+ const schoolId = new ObjectId().toHexString();
+ const school = schoolFactory.build({ id: schoolId, federalState: undefined, officialSchoolNumber: '00100' });
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+
+ return {
+ school,
+ };
+ };
+
+ it('should throw FederalStateAbbreviationOfSchoolNotFoundLoggableException', async () => {
+ const { school } = setup();
+
+ await expect(mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id)).rejects.toThrow(
+ new FederalStateAbbreviationOfSchoolNotFoundLoggableException(school.id)
+ );
+ });
+ });
+
+ describe('when school with federal state abbreviation and official school number was found ', () => {
+ const setup = () => {
+ const federalStateEntity = federalStateFactory.build();
+ const federalState = FederalStateEntityMapper.mapToDo(federalStateEntity);
+ const schoolId = new ObjectId().toHexString();
+ const school = schoolFactory.build({ id: schoolId, federalState, officialSchoolNumber: '00100' });
+ const mediaSource = mediaSourceFactory.build();
+ const offersFromMediaSource = vidisOfferFactory.buildList(3);
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+ mediaSourceService.findByFormat.mockResolvedValue(mediaSource);
+ mediaSchoolLicenseFetchService.fetchOffersForSchoolFromVidis.mockResolvedValue(offersFromMediaSource);
+
+ return {
+ school,
+ mediaSource,
+ offersFromMediaSource,
+ };
+ };
+
+ it('should call mediaSourceService', async () => {
+ const { school } = setup();
+
+ await mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id);
+
+ expect(mediaSourceService.findByFormat).toBeCalledWith(MediaSourceDataFormat.VIDIS);
+ });
+ });
+
+ describe('when school with federal state abbreviation and without official school number was found ', () => {
+ const setup = () => {
+ const federalStateEntity = federalStateFactory.build();
+ const federalState = FederalStateEntityMapper.mapToDo(federalStateEntity);
+ const school = schoolFactory.build({ officialSchoolNumber: undefined, federalState });
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+
+ return {
+ school,
+ };
+ };
+
+ it('should throw SchoolNumberNotFoundLoggableException', async () => {
+ const { school } = setup();
+
+ await expect(mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id)).rejects.toThrow(
+ new SchoolNumberNotFoundLoggableException(school.id)
+ );
+ });
+ });
+
+ describe('when media source was found ', () => {
+ const setup = () => {
+ const federalStateEntity = federalStateFactory.build();
+ const federalState = FederalStateEntityMapper.mapToDo(federalStateEntity);
+ const school = schoolFactory.build({ officialSchoolNumber: '00100', federalState });
+ const mediaSource = mediaSourceFactory.build({ format: MediaSourceDataFormat.VIDIS });
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+ mediaSourceService.findByFormat.mockResolvedValue(mediaSource);
+
+ const schoolName = `${federalState.abbreviation}_${school.officialSchoolNumber ?? ''}`;
+
+ return {
+ school,
+ mediaSource,
+ schoolName,
+ };
+ };
+
+ it('should call mediaSchoolLicenseFetchService', async () => {
+ const { school, mediaSource, schoolName } = setup();
+
+ await mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id);
+
+ expect(mediaSchoolLicenseFetchService.fetchOffersForSchoolFromVidis).toHaveBeenCalledWith(
+ mediaSource,
+ schoolName
+ );
+ });
+ });
+
+ describe('when fetching offers from media source was successful', () => {
+ const setup = () => {
+ const school = schoolFactory.build({ officialSchoolNumber: '00100' });
+ const mediaSource = mediaSourceFactory.build({ format: MediaSourceDataFormat.VIDIS });
+ const offersFromMediaSource = vidisOfferFactory.buildList(3);
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+ mediaSourceService.findByFormat.mockResolvedValue(mediaSource);
+ mediaSchoolLicenseFetchService.fetchOffersForSchoolFromVidis.mockResolvedValue(offersFromMediaSource);
+ mediaSchoolLicenseRepo.deleteAllBySchoolAndMediaSource.mockImplementation();
+ mediaSchoolLicenseRepo.saveAll.mockImplementation();
+
+ return {
+ school,
+ mediaSource,
+ offersFromMediaSource,
+ };
+ };
+
+ it('should delete all media school licences by school and media source', async () => {
+ const { school, mediaSource } = setup();
+
+ await mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id);
+
+ expect(mediaSchoolLicenseRepo.deleteAllBySchoolAndMediaSource).toHaveBeenCalledWith(school.id, mediaSource.id);
+ });
+ });
+
+ describe('when fetching offers from media source was successful and offers have an offerId', () => {
+ const setup = () => {
+ const school = schoolFactory.build({ officialSchoolNumber: '00100' });
+ const mediaSource = mediaSourceFactory.withVidis().build({ format: MediaSourceDataFormat.VIDIS });
+ const offersFromMediaSource = vidisOfferFactory.buildList(5, { offerId: 12345 });
+ const mediaSchoolLicenses = mediaSchoolLicenseFactory.buildList(5, {
+ type: SchoolLicenseType.MEDIA_LICENSE,
+ mediaSource,
+ schoolId: school.id,
+ mediumId: '12345',
+ });
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+ mediaSourceService.findByFormat.mockResolvedValue(mediaSource);
+ mediaSchoolLicenseFetchService.fetchOffersForSchoolFromVidis.mockResolvedValue(offersFromMediaSource);
+ mediaSchoolLicenseRepo.deleteAllBySchoolAndMediaSource.mockImplementation();
+ mediaSchoolLicenseRepo.saveAll.mockImplementation();
+
+ return {
+ school,
+ mediaSource,
+ offersFromMediaSource,
+ mediaSchoolLicenses,
+ };
+ };
+
+ it('should save all media school licences', async () => {
+ const { school, mediaSchoolLicenses, mediaSource } = setup();
+
+ await mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id);
+
+ expect(mediaSchoolLicenseRepo.saveAll).toHaveBeenCalledWith(
+ expect.arrayContaining(
+ mediaSchoolLicenses.map((license) =>
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
+ expect.objectContaining({
+ ...license,
+ id: expect.any(String),
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
+ props: expect.objectContaining({
+ id: expect.any(String),
+ mediaSource,
+ mediumId: mediaSchoolLicenses[0].mediumId,
+ schoolId: school.id,
+ type: SchoolLicenseType.MEDIA_LICENSE,
+ }),
+ })
+ )
+ )
+ );
+ });
+ });
+
+ describe('when fetching offers from media source was successful and offers have no offerId ', () => {
+ const setup = () => {
+ const school = schoolFactory.build({ officialSchoolNumber: '00100' });
+ const mediaSource = mediaSourceFactory.build();
+ const offersFromMediaSource = vidisOfferFactory.buildList(3, { offerId: undefined });
+
+ schoolService.getSchoolById.mockResolvedValue(school);
+ mediaSourceService.findByFormat.mockResolvedValue(mediaSource);
+ mediaSchoolLicenseFetchService.fetchOffersForSchoolFromVidis.mockResolvedValue(offersFromMediaSource);
+ mediaSchoolLicenseRepo.deleteAllBySchoolAndMediaSource.mockImplementation();
+ mediaSchoolLicenseRepo.saveAll.mockImplementation();
+
+ return {
+ school,
+ mediaSource,
+ offersFromMediaSource,
+ };
+ };
+
+ it('should not save media school licenses', async () => {
+ const { school } = setup();
+
+ await mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id);
+
+ expect(mediaSchoolLicenseRepo.saveAll).not.toHaveBeenCalled();
+ });
+
+ it('should log info that medium id is missing', async () => {
+ const { school } = setup();
+
+ await mediaSchoolLicenseService.updateMediaSchoolLicenses(school.id);
+
+ expect(logger.info).toHaveBeenCalledWith(new BuildMediaSchoolLicenseFailedLoggable());
+ });
+ });
+ });
});
diff --git a/apps/server/src/modules/school-license/service/media-school-license.service.ts b/apps/server/src/modules/school-license/service/media-school-license.service.ts
index 395aebe360..5708886855 100644
--- a/apps/server/src/modules/school-license/service/media-school-license.service.ts
+++ b/apps/server/src/modules/school-license/service/media-school-license.service.ts
@@ -1,11 +1,30 @@
+import { Logger } from '@core/logger';
+import { OfferDTO } from '@infra/vidis-client';
+import { ObjectId } from '@mikro-orm/mongodb';
+import { MediaSource, MediaSourceDataFormat, MediaSourceService } from '@modules/media-source';
+import { School, SchoolService } from '@modules/school';
import { ExternalToolMedium } from '@modules/tool/external-tool/domain/';
import { Inject } from '@nestjs/common';
import { EntityId } from '@shared/domain/types';
import { MediaSchoolLicense } from '../domain';
+import { SchoolLicenseType } from '../enum';
+import {
+ BuildMediaSchoolLicenseFailedLoggable,
+ FederalStateAbbreviationOfSchoolNotFoundLoggableException,
+ MediaSourceNotFoundLoggableException,
+ SchoolNumberNotFoundLoggableException,
+} from '../loggable';
import { MEDIA_SCHOOL_LICENSE_REPO, MediaSchoolLicenseRepo } from '../repo';
+import { MediaSchoolLicenseFetchService } from './media-school-license-fetch.service';
export class MediaSchoolLicenseService {
- constructor(@Inject(MEDIA_SCHOOL_LICENSE_REPO) private readonly mediaSchoolLicenseRepo: MediaSchoolLicenseRepo) {}
+ constructor(
+ @Inject(MEDIA_SCHOOL_LICENSE_REPO) private readonly mediaSchoolLicenseRepo: MediaSchoolLicenseRepo,
+ private readonly schoolService: SchoolService,
+ private readonly logger: Logger,
+ private readonly mediaSourceService: MediaSourceService,
+ private readonly mediaSchoolLicenseFetchService: MediaSchoolLicenseFetchService
+ ) {}
public async deleteAllByMediaSource(mediaSourceId: EntityId): Promise {
const deleteCount: number = await this.mediaSchoolLicenseRepo.deleteAllByMediaSource(mediaSourceId);
@@ -36,4 +55,82 @@ export class MediaSchoolLicenseService {
license.mediaSource?.sourceId === externalToolMedium.mediaSourceId
);
}
+
+ public async deleteAllBySchoolAndMediaSource(schoolId: EntityId, mediaSourceId: EntityId): Promise {
+ const deleteCount: number = await this.mediaSchoolLicenseRepo.deleteAllBySchoolAndMediaSource(
+ schoolId,
+ mediaSourceId
+ );
+
+ return deleteCount;
+ }
+
+ public async updateMediaSchoolLicenses(schoolId: EntityId): Promise {
+ const school: School = await this.schoolService.getSchoolById(schoolId);
+
+ const abbreviation: string | undefined = school.federalState?.abbreviation;
+ const { officialSchoolNumber } = school;
+
+ if (!abbreviation) {
+ throw new FederalStateAbbreviationOfSchoolNotFoundLoggableException(schoolId);
+ }
+
+ if (!officialSchoolNumber) {
+ throw new SchoolNumberNotFoundLoggableException(schoolId);
+ }
+
+ const schoolName = `${abbreviation}_${officialSchoolNumber}`;
+
+ const mediaSource: MediaSource | null = await this.mediaSourceService.findByFormat(MediaSourceDataFormat.VIDIS);
+
+ if (!mediaSource) {
+ throw new MediaSourceNotFoundLoggableException(MediaSourceDataFormat.VIDIS);
+ }
+
+ const offersFromMediaSource: OfferDTO[] = await this.mediaSchoolLicenseFetchService.fetchOffersForSchoolFromVidis(
+ mediaSource,
+ schoolName
+ );
+
+ await this.deleteAllBySchoolAndMediaSource(schoolId, mediaSource.id);
+
+ await this.createLicenses(offersFromMediaSource, mediaSource, school);
+ }
+
+ private buildMediaSchoolLicense(
+ school: School,
+ mediaSource: MediaSource,
+ mediumId: number | undefined
+ ): MediaSchoolLicense | null {
+ if (!mediumId) {
+ this.logger.info(new BuildMediaSchoolLicenseFailedLoggable());
+
+ return null;
+ }
+
+ const license: MediaSchoolLicense = new MediaSchoolLicense({
+ id: new ObjectId().toHexString(),
+ type: SchoolLicenseType.MEDIA_LICENSE,
+ schoolId: school.id,
+ mediaSource,
+ mediumId: mediumId.toString(),
+ });
+
+ return license;
+ }
+
+ private async createLicenses(offers: OfferDTO[], mediaSource: MediaSource, school: School): Promise {
+ const newLicensesPromises: (MediaSchoolLicense | null)[] = offers.map((offer): MediaSchoolLicense | null => {
+ const newLicense: MediaSchoolLicense | null = this.buildMediaSchoolLicense(school, mediaSource, offer.offerId);
+
+ return newLicense;
+ });
+
+ const newLicenses = await Promise.all(newLicensesPromises);
+ const filteredLicenses = newLicenses.filter((license): license is MediaSchoolLicense => license !== null);
+
+ if (filteredLicenses.length) {
+ await this.saveAllMediaSchoolLicenses(filteredLicenses);
+ }
+ }
}
diff --git a/apps/server/src/modules/school-license/testing/index.ts b/apps/server/src/modules/school-license/testing/index.ts
index a6cdca5358..69d22d095a 100644
--- a/apps/server/src/modules/school-license/testing/index.ts
+++ b/apps/server/src/modules/school-license/testing/index.ts
@@ -1,2 +1,3 @@
export { mediaSchoolLicenseFactory } from './media-school-license.factory';
export { mediaSchoolLicenseEntityFactory } from './media-school-license-entity.factory';
+export { vidisOfferFactory } from './vidis-offer.factory';
diff --git a/apps/server/src/modules/school-license/testing/vidis-offer.factory.ts b/apps/server/src/modules/school-license/testing/vidis-offer.factory.ts
new file mode 100644
index 0000000000..686d4aac2e
--- /dev/null
+++ b/apps/server/src/modules/school-license/testing/vidis-offer.factory.ts
@@ -0,0 +1,12 @@
+import { OfferDTO } from '@infra/vidis-client';
+import { Factory } from 'fishery';
+
+export const vidisOfferFactory = Factory.define(({ sequence }) => {
+ return {
+ offerId: sequence,
+ schoolActivations: ['00100', '00200', '00300'],
+ offerDescription: 'Test Description',
+ offerTitle: 'VIDIS Test',
+ offerVersion: 1,
+ };
+});
diff --git a/apps/server/src/modules/school-license/uc/index.ts b/apps/server/src/modules/school-license/uc/index.ts
new file mode 100644
index 0000000000..834a3217a4
--- /dev/null
+++ b/apps/server/src/modules/school-license/uc/index.ts
@@ -0,0 +1 @@
+export { MediaSchoolLicenseUc } from './media-school-license.uc';
diff --git a/apps/server/src/modules/school-license/uc/media-school-license.uc.spec.ts b/apps/server/src/modules/school-license/uc/media-school-license.uc.spec.ts
new file mode 100644
index 0000000000..a90308d1c5
--- /dev/null
+++ b/apps/server/src/modules/school-license/uc/media-school-license.uc.spec.ts
@@ -0,0 +1,98 @@
+import { createMock, DeepMocked } from '@golevelup/ts-jest';
+import { UnauthorizedException } from '@nestjs/common';
+import { Test, TestingModule } from '@nestjs/testing';
+import { Permission } from '@shared/domain/interface';
+import { AuthorizationService } from '@modules/authorization';
+import { schoolEntityFactory } from '@testing/factory/school-entity.factory';
+import { userFactory } from '@testing/factory/user.factory';
+import { setupEntities } from '@testing/setup-entities';
+import { MediaSchoolLicenseService } from '../service';
+import { MediaSchoolLicenseUc } from './media-school-license.uc';
+
+describe(MediaSchoolLicenseUc.name, () => {
+ let module: TestingModule;
+ let uc: MediaSchoolLicenseUc;
+ let mediaSchoolLicenseService: DeepMocked;
+ let authorizationService: DeepMocked;
+
+ beforeAll(async () => {
+ await setupEntities();
+
+ module = await Test.createTestingModule({
+ providers: [
+ MediaSchoolLicenseUc,
+ {
+ provide: MediaSchoolLicenseService,
+ useValue: createMock(),
+ },
+ {
+ provide: AuthorizationService,
+ useValue: createMock(),
+ },
+ ],
+ }).compile();
+
+ uc = module.get(MediaSchoolLicenseUc);
+ mediaSchoolLicenseService = module.get(MediaSchoolLicenseService);
+ authorizationService = module.get(AuthorizationService);
+ });
+
+ afterAll(async () => {
+ await module.close();
+ });
+
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ describe('updateMediaSchoolLicenses', () => {
+ describe('when current user and schoolId is given', () => {
+ describe('when current user has permission', () => {
+ const setup = () => {
+ const school = schoolEntityFactory.build();
+ const user = userFactory.asAdmin([Permission.MEDIA_SCHOOL_LICENSE_ADMIN]).buildWithId({ school });
+
+ authorizationService.getUserWithPermissions.mockResolvedValue(user);
+ authorizationService.checkAllPermissions.mockImplementation(() => {
+ void Promise.resolve();
+ });
+
+ return {
+ user,
+ };
+ };
+
+ it('should call mediaSchoolService', async () => {
+ const { user } = setup();
+
+ await uc.updateMediaSchoolLicenses(user.id, user.school.id);
+
+ expect(mediaSchoolLicenseService.updateMediaSchoolLicenses).toHaveBeenCalledWith(user.school.id);
+ });
+ });
+
+ describe('when current user has no permission', () => {
+ const setup = () => {
+ const school = schoolEntityFactory.build();
+ const user = userFactory.buildWithId({ school });
+
+ authorizationService.getUserWithPermissions.mockResolvedValue(user);
+ authorizationService.checkAllPermissions.mockImplementation(() => {
+ throw new UnauthorizedException();
+ });
+
+ return {
+ user,
+ };
+ };
+
+ it('should throw error', async () => {
+ const { user } = setup();
+
+ await expect(uc.updateMediaSchoolLicenses(user.id, user.school.id)).rejects.toThrow(UnauthorizedException);
+ expect(mediaSchoolLicenseService.updateMediaSchoolLicenses).not.toHaveBeenCalled();
+ });
+ });
+ });
+ });
+});
diff --git a/apps/server/src/modules/school-license/uc/media-school-license.uc.ts b/apps/server/src/modules/school-license/uc/media-school-license.uc.ts
new file mode 100644
index 0000000000..7d6d551ad6
--- /dev/null
+++ b/apps/server/src/modules/school-license/uc/media-school-license.uc.ts
@@ -0,0 +1,22 @@
+import { Injectable } from '@nestjs/common';
+import { User } from '@shared/domain/entity';
+import { Permission } from '@shared/domain/interface';
+import { EntityId } from '@shared/domain/types';
+import { AuthorizationService } from '@modules/authorization';
+import { MediaSchoolLicenseService } from '../service';
+
+@Injectable()
+export class MediaSchoolLicenseUc {
+ constructor(
+ private readonly mediaSchoolLicenseService: MediaSchoolLicenseService,
+ private readonly authorizationService: AuthorizationService
+ ) {}
+
+ public async updateMediaSchoolLicenses(currentUserId: string, schoolId: EntityId): Promise {
+ const user: User = await this.authorizationService.getUserWithPermissions(currentUserId);
+
+ this.authorizationService.checkAllPermissions(user, [Permission.MEDIA_SCHOOL_LICENSE_ADMIN]);
+
+ await this.mediaSchoolLicenseService.updateMediaSchoolLicenses(schoolId);
+ }
+}
diff --git a/apps/server/src/modules/school/domain/do/federal-state.ts b/apps/server/src/modules/school/domain/do/federal-state.ts
index eedc226356..7f7cbdeb1c 100644
--- a/apps/server/src/modules/school/domain/do/federal-state.ts
+++ b/apps/server/src/modules/school/domain/do/federal-state.ts
@@ -1,7 +1,11 @@
import { AuthorizableObject, DomainObject } from '@shared/domain/domain-object';
import { County } from './county';
-export class FederalState extends DomainObject {}
+export class FederalState extends DomainObject {
+ get abbreviation(): string {
+ return this.props.abbreviation;
+ }
+}
export interface FederalStateProps extends AuthorizableObject {
name: string;
diff --git a/apps/server/src/modules/school/domain/do/school.ts b/apps/server/src/modules/school/domain/do/school.ts
index a335dbe996..c3d446c57b 100644
--- a/apps/server/src/modules/school/domain/do/school.ts
+++ b/apps/server/src/modules/school/domain/do/school.ts
@@ -40,6 +40,10 @@ export class School extends DomainObject {
return this.props.officialSchoolNumber;
}
+ get federalState(): FederalState | undefined {
+ return this.props.federalState;
+ }
+
set ldapLastSync(ldapLastSync: string | undefined) {
this.props.ldapLastSync = ldapLastSync;
}
diff --git a/apps/server/src/modules/server/server.app.module.ts b/apps/server/src/modules/server/server.app.module.ts
index d41b5eeae7..7a2cd29acc 100644
--- a/apps/server/src/modules/server/server.app.module.ts
+++ b/apps/server/src/modules/server/server.app.module.ts
@@ -31,7 +31,6 @@ import { PseudonymApiModule } from '@modules/pseudonym/pseudonym-api.module';
import { RocketChatModule } from '@modules/rocketchat';
import { RoomApiModule } from '@modules/room/room-api.module';
import { RosterModule } from '@modules/roster/roster.module';
-import { SchoolLicenseModule } from '@modules/school-license/school-license.module';
import { SchoolApiModule } from '@modules/school/school-api.module';
import { SharingApiModule } from '@modules/sharing/sharing-api.module';
import { ShdApiModule } from '@modules/shd/shd.api.module';
@@ -50,6 +49,7 @@ import { ConfigModule } from '@nestjs/config';
import { createConfigModuleOptions } from '@shared/common/config-module-options';
import { defaultMikroOrmOptions } from '@shared/common/defaultMikroOrmOptions';
import { ALL_ENTITIES } from '@shared/domain/entity';
+import { SchoolLicenseApiModule } from '../school-license/school-license-api.module';
import { ServerConfigController, ServerController, ServerUc } from './api';
import { SERVER_CONFIG_TOKEN, serverConfig } from './server.config';
@@ -103,7 +103,7 @@ const serverModules = [
CollaborativeTextEditorApiModule,
AlertModule,
UserLicenseModule,
- SchoolLicenseModule,
+ SchoolLicenseApiModule,
RoomApiModule,
RosterModule,
ShdApiModule,
diff --git a/apps/server/src/shared/domain/interface/permission.enum.ts b/apps/server/src/shared/domain/interface/permission.enum.ts
index f677991d4a..2530c58733 100644
--- a/apps/server/src/shared/domain/interface/permission.enum.ts
+++ b/apps/server/src/shared/domain/interface/permission.enum.ts
@@ -78,6 +78,7 @@ export enum Permission {
LESSONS_CREATE = 'LESSONS_CREATE',
LESSONS_VIEW = 'LESSONS_VIEW',
LINK_CREATE = 'LINK_CREATE',
+ MEDIA_SCHOOL_LICENSE_ADMIN = 'MEDIA_SCHOOL_LICENSE_ADMIN',
NEWS_CREATE = 'NEWS_CREATE',
NEWS_EDIT = 'NEWS_EDIT',
NEWS_VIEW = 'NEWS_VIEW',
diff --git a/backup/setup/migrations.json b/backup/setup/migrations.json
index f7a693c2cc..8e6685c071 100644
--- a/backup/setup/migrations.json
+++ b/backup/setup/migrations.json
@@ -349,5 +349,14 @@
"created_at": {
"$date": "2025-01-20T13:24:10.786Z"
}
+ },
+ {
+ "_id": {
+ "$oid": "679008937c51ba759ad4617a"
+ },
+ "name": "Migration20250121203707",
+ "created_at": {
+ "$date": "2025-01-21T20:50:27.535Z"
+ }
}
]
diff --git a/backup/setup/roles.json b/backup/setup/roles.json
index 8e23aeb9e5..a94befa049 100644
--- a/backup/setup/roles.json
+++ b/backup/setup/roles.json
@@ -139,7 +139,8 @@
"GROUP_FULL_ADMIN",
"SCHOOL_SYSTEM_EDIT",
"SCHOOL_SYSTEM_VIEW",
- "USER_CHANGE_OWN_NAME"
+ "USER_CHANGE_OWN_NAME",
+ "MEDIA_SCHOOL_LICENSE_ADMIN"
],
"__v": 2
},
diff --git a/openapitools.json b/openapitools.json
index d55223b9aa..37c4a83372 100644
--- a/openapitools.json
+++ b/openapitools.json
@@ -139,7 +139,7 @@
"skipValidateSpec": true,
"enablePostProcessFile": true,
"openapiNormalizer": {
- "FILTER": "operationId:getActivatedOffersByRegion"
+ "FILTER": "operationId:getActivatedOffersByRegion|operationId:getActivatedOffersBySchool"
},
"additionalProperties": {
"apiPackage": "api",